diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/01-feature_request.yaml similarity index 98% rename from .github/ISSUE_TEMPLATE/feature_request.yaml rename to .github/ISSUE_TEMPLATE/01-feature_request.yaml index b2f8a863b3c..82ba01c77eb 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/01-feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v4.1.0 + placeholder: v4.1.1 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/02-bug_report.yaml similarity index 99% rename from .github/ISSUE_TEMPLATE/bug_report.yaml rename to .github/ISSUE_TEMPLATE/02-bug_report.yaml index b17716562e0..2476bbcfca9 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/02-bug_report.yaml @@ -26,7 +26,7 @@ body: attributes: label: NetBox Version description: What version of NetBox are you currently running? - placeholder: v4.1.0 + placeholder: v4.1.1 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/documentation_change.yaml b/.github/ISSUE_TEMPLATE/03-documentation_change.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/documentation_change.yaml rename to .github/ISSUE_TEMPLATE/03-documentation_change.yaml diff --git a/.github/ISSUE_TEMPLATE/translation.yaml b/.github/ISSUE_TEMPLATE/04-translation.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/translation.yaml rename to .github/ISSUE_TEMPLATE/04-translation.yaml diff --git a/.github/ISSUE_TEMPLATE/housekeeping.yaml b/.github/ISSUE_TEMPLATE/05-housekeeping.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/housekeeping.yaml rename to .github/ISSUE_TEMPLATE/05-housekeeping.yaml diff --git a/.github/ISSUE_TEMPLATE/deprecation.yaml b/.github/ISSUE_TEMPLATE/06-deprecation.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/deprecation.yaml rename to .github/ISSUE_TEMPLATE/06-deprecation.yaml diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index b02ffdacd4d..29f28fddf06 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -45,6 +45,7 @@ jobs: This PR has been automatically closed due to lack of activity. days-before-pr-stale: 15 days-before-pr-close: 15 + exempt-pr-labels: 'status: blocked' stale-pr-label: 'pending closure' stale-pr-message: > This PR has been automatically marked as stale because it has not had diff --git a/base_requirements.txt b/base_requirements.txt index c89a1ebee1d..76955a6e1dc 100644 --- a/base_requirements.txt +++ b/base_requirements.txt @@ -84,10 +84,6 @@ Jinja2 # https://python-markdown.github.io/changelog/ Markdown -# File inclusion plugin for Python-Markdown -# https://github.com/cmacmackin/markdown-include -markdown-include - # MkDocs Material theme (for documentation build) # https://squidfunk.github.io/mkdocs-material/changelog/ mkdocs-material diff --git a/contrib/apache.conf b/contrib/apache.conf index 73fd45c26b8..fdd0543f7d3 100644 --- a/contrib/apache.conf +++ b/contrib/apache.conf @@ -20,7 +20,7 @@ Alias /static /opt/netbox/netbox/static - Options Indexes FollowSymLinks MultiViews + Options FollowSymLinks MultiViews AllowOverride None Require all granted diff --git a/contrib/generated_schema.json b/contrib/generated_schema.json index fc4ae806433..835a6d8291e 100644 --- a/contrib/generated_schema.json +++ b/contrib/generated_schema.json @@ -149,6 +149,7 @@ "nema-l15-60p", "nema-l21-20p", "nema-l21-30p", + "nema-l22-20p", "nema-l22-30p", "cs6361c", "cs6365c", @@ -262,6 +263,7 @@ "nema-l15-60r", "nema-l21-20r", "nema-l21-30r", + "nema-l22-20r", "nema-l22-30r", "CS6360C", "CS6364C", @@ -518,6 +520,14 @@ "urm-p4", "urm-p8", "splice", + "usb-a", + "usb-b", + "usb-c", + "usb-mini-a", + "usb-mini-b", + "usb-micro-a", + "usb-micro-b", + "usb-micro-ab", "other" ] } @@ -575,6 +585,14 @@ "urm-p4", "urm-p8", "splice", + "usb-a", + "usb-b", + "usb-c", + "usb-mini-a", + "usb-mini-b", + "usb-micro-a", + "usb-micro-b", + "usb-micro-ab", "other" ] } diff --git a/docs/customization/custom-scripts.md b/docs/customization/custom-scripts.md index e6f6bb85f04..3fa6491d231 100644 --- a/docs/customization/custom-scripts.md +++ b/docs/customization/custom-scripts.md @@ -17,6 +17,9 @@ They can also be used as a mechanism for validating the integrity of data within Custom scripts are Python code which exists outside the NetBox code base, so they can be updated and changed without interfering with the core NetBox installation. And because they're completely custom, there is no inherent limitation on what a script can accomplish. +!!! danger "Only install trusted scripts" + Custom scripts have unrestricted access to change anything in the databse and are inherently unsafe and should only be installed and run from trusted sources. You should also review and set permissions for who can run scripts if the script can modify any data. + ## Writing Custom Scripts All custom scripts must inherit from the `extras.scripts.Script` base class. This class provides the functionality necessary to generate forms and log activity. diff --git a/docs/development/release-checklist.md b/docs/development/release-checklist.md index 6f11cc37b30..7c8c96f3926 100644 --- a/docs/development/release-checklist.md +++ b/docs/development/release-checklist.md @@ -39,6 +39,10 @@ mkdocs serve Follow these instructions to perform a new installation of NetBox in a temporary environment. This process must not be automated: The goal of this step is to catch any errors or omissions in the documentation, and ensure that it is kept up-to-date for each release. Make any necessary changes to the documentation before proceeding with the release. +### Test Upgrade Paths + +Upgrading from a previous version typically involves database migrations, which must work without errors. Supported upgrade paths include from one minor version to another within the same major version (i.e. 4.0 to 4.1), as well as from the latest patch version of the previous minor version (i.e. 3.7 to 4.0 or to 4.1). Prior to release, test all these supported paths by loading demo data from the source version and performing a `./manage.py migrate`. + ### Merge the Release Branch Submit a pull request to merge the `feature` branch into the `develop` branch in preparation for its release. Once it has been merged, continue with the section for patch releases below. diff --git a/docs/release-notes/version-4.1.md b/docs/release-notes/version-4.1.md index 0c1bf9dc0ee..5eccef5885a 100644 --- a/docs/release-notes/version-4.1.md +++ b/docs/release-notes/version-4.1.md @@ -1,5 +1,31 @@ # NetBox v4.1 +## v4.1.1 (2024-09-12) + +### Enhancements + +* [#16926](https://github.com/netbox-community/netbox/issues/16926) - Add USB front & rear port types +* [#17347](https://github.com/netbox-community/netbox/issues/17347) - Add NEMA L22-20 power port & outlet types + +### Bug Fixes + +* [#17066](https://github.com/netbox-community/netbox/issues/17066) - Fix OpenAPI schema definition for custom scripts REST API endpoint +* [#17332](https://github.com/netbox-community/netbox/issues/17332) - Restore pagination for object list dashboard widgets +* [#17333](https://github.com/netbox-community/netbox/issues/17333) - Avoid prefetching all jobs when retrieving custom scripts via the REST API +* [#17353](https://github.com/netbox-community/netbox/issues/17353) - Fix styling of map buttons under site and device views +* [#17354](https://github.com/netbox-community/netbox/issues/17354) - Prevent object & multi-object custom fields from breaking bulk import forms +* [#17362](https://github.com/netbox-community/netbox/issues/17362) - Remove duplicate prefixes & IP addresses returned by the `present_in_vrf` query filter +* [#17364](https://github.com/netbox-community/netbox/issues/17364) - Fix rendering of Markdown tables inside object list dashboard widgets +* [#17387](https://github.com/netbox-community/netbox/issues/17387) - Fix display of the changelog tab for users with sufficient permission +* [#17410](https://github.com/netbox-community/netbox/issues/17410) - Enable debug toolbar middleware for `strawberry-django` only when `DEBUG` is true +* [#17414](https://github.com/netbox-community/netbox/issues/17414) - Fix support for declaring individual VLAN IDs within a VLAN group +* [#17431](https://github.com/netbox-community/netbox/issues/17431) - Fix database migration error when upgrading to v4.1 from v3.7 or earlier +* [#17437](https://github.com/netbox-community/netbox/issues/17437) - Fix exception when specifying a bridge relationship on an interface template +* [#17444](https://github.com/netbox-community/netbox/issues/17444) - Custom script fails to execute when triggered by an event rule +* [#17457](https://github.com/netbox-community/netbox/issues/17457) - GraphQL `service_list` filter should not require a port number + +--- + ## v4.1.0 (2024-09-03) ### Breaking Changes diff --git a/netbox/dcim/api/serializers_/nested.py b/netbox/dcim/api/serializers_/nested.py index bcf74319f94..ea346cc63fa 100644 --- a/netbox/dcim/api/serializers_/nested.py +++ b/netbox/dcim/api/serializers_/nested.py @@ -72,7 +72,7 @@ class NestedInterfaceTemplateSerializer(WritableNestedSerializer): class Meta: model = models.InterfaceTemplate - fields = ['id', 'url', 'display_url', 'display', 'name'] + fields = ['id', 'url', 'display', 'name'] class NestedDeviceBaySerializer(WritableNestedSerializer): diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index d75b2f48966..127655ba7cd 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -396,6 +396,7 @@ class PowerPortTypeChoices(ChoiceSet): TYPE_NEMA_L1560P = 'nema-l15-60p' TYPE_NEMA_L2120P = 'nema-l21-20p' TYPE_NEMA_L2130P = 'nema-l21-30p' + TYPE_NEMA_L2220P = 'nema-l22-20p' TYPE_NEMA_L2230P = 'nema-l22-30p' # California style TYPE_CS6361C = 'cs6361c' @@ -517,6 +518,7 @@ class PowerPortTypeChoices(ChoiceSet): (TYPE_NEMA_L1560P, 'NEMA L15-60P'), (TYPE_NEMA_L2120P, 'NEMA L21-20P'), (TYPE_NEMA_L2130P, 'NEMA L21-30P'), + (TYPE_NEMA_L2220P, 'NEMA L22-20P'), (TYPE_NEMA_L2230P, 'NEMA L22-30P'), )), (_('California Style'), ( @@ -649,6 +651,7 @@ class PowerOutletTypeChoices(ChoiceSet): TYPE_NEMA_L1560R = 'nema-l15-60r' TYPE_NEMA_L2120R = 'nema-l21-20r' TYPE_NEMA_L2130R = 'nema-l21-30r' + TYPE_NEMA_L2220R = 'nema-l22-20r' TYPE_NEMA_L2230R = 'nema-l22-30r' # California style TYPE_CS6360C = 'CS6360C' @@ -763,6 +766,7 @@ class PowerOutletTypeChoices(ChoiceSet): (TYPE_NEMA_L1560R, 'NEMA L15-60R'), (TYPE_NEMA_L2120R, 'NEMA L21-20R'), (TYPE_NEMA_L2130R, 'NEMA L21-30R'), + (TYPE_NEMA_L2220R, 'NEMA L22-20R'), (TYPE_NEMA_L2230R, 'NEMA L22-30R'), )), (_('California Style'), ( @@ -1347,6 +1351,14 @@ class PortTypeChoices(ChoiceSet): TYPE_URM_P2 = 'urm-p2' TYPE_URM_P4 = 'urm-p4' TYPE_URM_P8 = 'urm-p8' + TYPE_USB_A = 'usb-a' + TYPE_USB_B = 'usb-b' + TYPE_USB_C = 'usb-c' + TYPE_USB_MINI_A = 'usb-mini-a' + TYPE_USB_MINI_B = 'usb-mini-b' + TYPE_USB_MICRO_A = 'usb-micro-a' + TYPE_USB_MICRO_B = 'usb-micro-b' + TYPE_USB_MICRO_AB = 'usb-micro-ab' TYPE_OTHER = 'other' CHOICES = ( @@ -1406,6 +1418,19 @@ class PortTypeChoices(ChoiceSet): (TYPE_SPLICE, 'Splice'), ), ), + ( + _('USB'), + ( + (TYPE_USB_A, 'USB Type A'), + (TYPE_USB_B, 'USB Type B'), + (TYPE_USB_C, 'USB Type C'), + (TYPE_USB_MINI_A, 'USB Mini A'), + (TYPE_USB_MINI_B, 'USB Mini B'), + (TYPE_USB_MICRO_A, 'USB Micro A'), + (TYPE_USB_MICRO_B, 'USB Micro B'), + (TYPE_USB_MICRO_AB, 'USB Micro AB'), + ), + ), ( _('Other'), ( @@ -1444,6 +1469,7 @@ class CableTypeChoices(ChoiceSet): TYPE_SMF_OS2 = 'smf-os2' TYPE_AOC = 'aoc' TYPE_POWER = 'power' + TYPE_USB = 'usb' CHOICES = ( ( @@ -1476,6 +1502,7 @@ class CableTypeChoices(ChoiceSet): (TYPE_AOC, 'Active Optical Cabling (AOC)'), ), ), + (TYPE_USB, _('USB')), (TYPE_POWER, _('Power')), ) diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index 7dc6d52397e..6e0a47979c7 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -975,8 +975,8 @@ class InterfaceTemplateForm(ModularComponentTemplateForm): queryset=InterfaceTemplate.objects.all(), required=False, query_params={ - 'devicetype_id': '$device_type', - 'moduletype_id': '$module_type', + 'device_type_id': '$device_type', + 'module_type_id': '$module_type', } ) diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 142be1b8ab3..cf2cab31673 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -2,6 +2,7 @@ from django.shortcuts import get_object_or_404 from django.utils.module_loading import import_string from django_rq.queues import get_connection +from drf_spectacular.utils import extend_schema, extend_schema_view from rest_framework import status from rest_framework.decorators import action from rest_framework.exceptions import PermissionDenied @@ -229,9 +230,13 @@ def render(self, request, pk): # Scripts # +@extend_schema_view( + update=extend_schema(request=serializers.ScriptInputSerializer), + partial_update=extend_schema(request=serializers.ScriptInputSerializer), +) class ScriptViewSet(ModelViewSet): permission_classes = [IsAuthenticatedOrLoginNotRequired] - queryset = Script.objects.prefetch_related('jobs') + queryset = Script.objects.all() serializer_class = serializers.ScriptSerializer filterset_class = filtersets.ScriptFilterSet diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index 839a6ace91c..7a0a0861497 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -525,23 +525,29 @@ def to_form_field(self, set_initial=True, enforce_required=True, enforce_visibil elif self.type == CustomFieldTypeChoices.TYPE_OBJECT: model = self.related_object_type.model_class() field_class = CSVModelChoiceField if for_csv_import else DynamicModelChoiceField - field = field_class( - queryset=model.objects.all(), - required=required, - initial=initial, - query_params=self.related_object_filter - ) + kwargs = { + 'queryset': model.objects.all(), + 'required': required, + 'initial': initial, + } + if not for_csv_import: + kwargs['query_params'] = self.related_object_filter + + field = field_class(**kwargs) # Multiple objects elif self.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT: model = self.related_object_type.model_class() field_class = CSVModelMultipleChoiceField if for_csv_import else DynamicModelMultipleChoiceField - field = field_class( - queryset=model.objects.all(), - required=required, - initial=initial, - query_params=self.related_object_filter - ) + kwargs = { + 'queryset': model.objects.all(), + 'required': required, + 'initial': initial, + } + if not for_csv_import: + kwargs['query_params'] = self.related_object_filter + + field = field_class(**kwargs) # Text else: diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 30634850a21..f98f510e570 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -458,7 +458,7 @@ def filter_present_in_vrf(self, queryset, name, vrf): return queryset.filter( Q(vrf=vrf) | Q(vrf__export_targets__in=vrf.import_targets.all()) - ) + ).distinct() class IPRangeFilterSet(TenancyFilterSet, NetBoxModelFilterSet): @@ -738,7 +738,7 @@ def filter_present_in_vrf(self, queryset, name, vrf): return queryset.filter( Q(vrf=vrf) | Q(vrf__export_targets__in=vrf.import_targets.all()) - ) + ).distinct() def filter_device(self, queryset, name, value): devices = Device.objects.filter(**{'{}__in'.format(name): value}) diff --git a/netbox/ipam/models/vlans.py b/netbox/ipam/models/vlans.py index ca6b27d0790..998bc9e2c1e 100644 --- a/netbox/ipam/models/vlans.py +++ b/netbox/ipam/models/vlans.py @@ -100,7 +100,7 @@ def clean(self): if self.vid_ranges and check_ranges_overlap(self.vid_ranges): raise ValidationError({'vid_ranges': _("Ranges cannot overlap.")}) for vid_range in self.vid_ranges: - if vid_range.lower >= vid_range.upper: + if vid_range.lower > vid_range.upper: raise ValidationError({ 'vid_ranges': _( "Maximum child VID must be greater than or equal to minimum child VID ({value})" diff --git a/netbox/ipam/tests/test_models.py b/netbox/ipam/tests/test_models.py index 39eb33a4fcb..8a5d918a9f2 100644 --- a/netbox/ipam/tests/test_models.py +++ b/netbox/ipam/tests/test_models.py @@ -543,3 +543,17 @@ def test_vid_validation(self): vlan = VLAN(vid=109, name='VLAN 109', group=vlangroup) vlan.full_clean() + + def test_overlapping_vlan(self): + vlangroup = VLANGroup( + name='VLAN Group 1', + slug='vlan-group-1', + vid_ranges=string_to_ranges('2-4,3-5'), + ) + with self.assertRaises(ValidationError): + vlangroup.full_clean() + + # make sure single vlan range works + vlangroup.vid_ranges = string_to_ranges('2-2') + vlangroup.full_clean() + vlangroup.save() diff --git a/netbox/netbox/graphql/filter_mixins.py b/netbox/netbox/graphql/filter_mixins.py index 76cfd891551..65c7ffcef5a 100644 --- a/netbox/netbox/graphql/filter_mixins.py +++ b/netbox/netbox/graphql/filter_mixins.py @@ -47,7 +47,7 @@ def map_strawberry_type(field): pass elif isinstance(field, NumericArrayFilter): should_create_function = True - attr_type = int + attr_type = int | None elif isinstance(field, TreeNodeMultipleChoiceFilter): should_create_function = True attr_type = List[str] | None diff --git a/netbox/netbox/jobs.py b/netbox/netbox/jobs.py index b0fcc3e9944..087c2489687 100644 --- a/netbox/netbox/jobs.py +++ b/netbox/netbox/jobs.py @@ -100,7 +100,8 @@ def enqueue(cls, *args, **kwargs): This method is a wrapper of `Job.enqueue()` using `handle()` as function callback. See its documentation for parameters. """ - return Job.enqueue(cls.handle, name=cls.name, *args, **kwargs) + name = kwargs.pop('name', None) or cls.name + return Job.enqueue(cls.handle, name=name, *args, **kwargs) @classmethod @advisory_lock(ADVISORY_LOCK_KEYS['job-schedules']) diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 3601fde9ff3..358f41ff883 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -416,7 +416,6 @@ def _setting(name, default=None): # Middleware MIDDLEWARE = [ - "strawberry_django.middlewares.debug_toolbar.DebugToolbarMiddleware", 'corsheaders.middleware.CorsMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', @@ -431,6 +430,13 @@ def _setting(name, default=None): 'netbox.middleware.CoreMiddleware', 'netbox.middleware.MaintenanceModeMiddleware', ] + +if DEBUG: + MIDDLEWARE = [ + "strawberry_django.middlewares.debug_toolbar.DebugToolbarMiddleware", + *MIDDLEWARE, + ] + if METRICS_ENABLED: # If metrics are enabled, add the before & after Prometheus middleware MIDDLEWARE = [ diff --git a/netbox/netbox/views/generic/feature_views.py b/netbox/netbox/views/generic/feature_views.py index 0c463e084fb..451c9c01d2a 100644 --- a/netbox/netbox/views/generic/feature_views.py +++ b/netbox/netbox/views/generic/feature_views.py @@ -38,7 +38,7 @@ class ObjectChangeLogView(ConditionalLoginRequiredMixin, View): base_template = None tab = ViewTab( label=_('Changelog'), - permission='extras.view_objectchange', + permission='core.view_objectchange', weight=10000 ) diff --git a/netbox/project-static/dist/Inter-Black-7VL4YR6G.woff b/netbox/project-static/dist/Inter-Black-7VL4YR6G.woff deleted file mode 100644 index 2f5cb41bea1..00000000000 Binary files a/netbox/project-static/dist/Inter-Black-7VL4YR6G.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Black-NU3KAVPI.woff2 b/netbox/project-static/dist/Inter-Black-NU3KAVPI.woff2 deleted file mode 100644 index 53c0aa239d2..00000000000 Binary files a/netbox/project-static/dist/Inter-Black-NU3KAVPI.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-BlackItalic-4BVAVUVI.woff2 b/netbox/project-static/dist/Inter-BlackItalic-4BVAVUVI.woff2 deleted file mode 100644 index 63ec8868636..00000000000 Binary files a/netbox/project-static/dist/Inter-BlackItalic-4BVAVUVI.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-BlackItalic-HJLUEYVW.woff b/netbox/project-static/dist/Inter-BlackItalic-HJLUEYVW.woff deleted file mode 100644 index a168e58200e..00000000000 Binary files a/netbox/project-static/dist/Inter-BlackItalic-HJLUEYVW.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Bold-6AVOS7AV.woff2 b/netbox/project-static/dist/Inter-Bold-6AVOS7AV.woff2 deleted file mode 100644 index 6989c99229e..00000000000 Binary files a/netbox/project-static/dist/Inter-Bold-6AVOS7AV.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Bold-RTIBL5DO.woff b/netbox/project-static/dist/Inter-Bold-RTIBL5DO.woff deleted file mode 100644 index 2ec7ac3d213..00000000000 Binary files a/netbox/project-static/dist/Inter-Bold-RTIBL5DO.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-BoldItalic-AID2XGS3.woff2 b/netbox/project-static/dist/Inter-BoldItalic-AID2XGS3.woff2 deleted file mode 100644 index 18b4c1ce5ec..00000000000 Binary files a/netbox/project-static/dist/Inter-BoldItalic-AID2XGS3.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-BoldItalic-UU7SOVRI.woff b/netbox/project-static/dist/Inter-BoldItalic-UU7SOVRI.woff deleted file mode 100644 index aa35b797455..00000000000 Binary files a/netbox/project-static/dist/Inter-BoldItalic-UU7SOVRI.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ExtraBold-B5RSZK6R.woff b/netbox/project-static/dist/Inter-ExtraBold-B5RSZK6R.woff deleted file mode 100644 index d79d3d242ac..00000000000 Binary files a/netbox/project-static/dist/Inter-ExtraBold-B5RSZK6R.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ExtraBold-VAPCTO5F.woff2 b/netbox/project-static/dist/Inter-ExtraBold-VAPCTO5F.woff2 deleted file mode 100644 index 3e74973f27e..00000000000 Binary files a/netbox/project-static/dist/Inter-ExtraBold-VAPCTO5F.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ExtraBoldItalic-R7DLWYIK.woff b/netbox/project-static/dist/Inter-ExtraBoldItalic-R7DLWYIK.woff deleted file mode 100644 index 06aad19b0e1..00000000000 Binary files a/netbox/project-static/dist/Inter-ExtraBoldItalic-R7DLWYIK.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ExtraBoldItalic-W26CJYY7.woff2 b/netbox/project-static/dist/Inter-ExtraBoldItalic-W26CJYY7.woff2 deleted file mode 100644 index 77391ea7f2c..00000000000 Binary files a/netbox/project-static/dist/Inter-ExtraBoldItalic-W26CJYY7.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ExtraLight-A7NHN7KT.woff b/netbox/project-static/dist/Inter-ExtraLight-A7NHN7KT.woff deleted file mode 100644 index fee5fca026e..00000000000 Binary files a/netbox/project-static/dist/Inter-ExtraLight-A7NHN7KT.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ExtraLight-DVW3SATI.woff2 b/netbox/project-static/dist/Inter-ExtraLight-DVW3SATI.woff2 deleted file mode 100644 index 607250b9ac6..00000000000 Binary files a/netbox/project-static/dist/Inter-ExtraLight-DVW3SATI.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ExtraLightItalic-KXZYPKOE.woff2 b/netbox/project-static/dist/Inter-ExtraLightItalic-KXZYPKOE.woff2 deleted file mode 100644 index 858d38a50f9..00000000000 Binary files a/netbox/project-static/dist/Inter-ExtraLightItalic-KXZYPKOE.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ExtraLightItalic-SKGXKLLA.woff b/netbox/project-static/dist/Inter-ExtraLightItalic-SKGXKLLA.woff deleted file mode 100644 index 94e6582b5a1..00000000000 Binary files a/netbox/project-static/dist/Inter-ExtraLightItalic-SKGXKLLA.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Italic-GHDVOOKA.woff b/netbox/project-static/dist/Inter-Italic-GHDVOOKA.woff deleted file mode 100644 index 4b765bd5929..00000000000 Binary files a/netbox/project-static/dist/Inter-Italic-GHDVOOKA.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Italic-RW2ZALTO.woff2 b/netbox/project-static/dist/Inter-Italic-RW2ZALTO.woff2 deleted file mode 100644 index bd5f255a989..00000000000 Binary files a/netbox/project-static/dist/Inter-Italic-RW2ZALTO.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Light-ARG5Y6MT.woff b/netbox/project-static/dist/Inter-Light-ARG5Y6MT.woff deleted file mode 100644 index 7590ff89093..00000000000 Binary files a/netbox/project-static/dist/Inter-Light-ARG5Y6MT.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Light-XBRUIIRZ.woff2 b/netbox/project-static/dist/Inter-Light-XBRUIIRZ.woff2 deleted file mode 100644 index 551410ac3ef..00000000000 Binary files a/netbox/project-static/dist/Inter-Light-XBRUIIRZ.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-LightItalic-4OWY6V5R.woff2 b/netbox/project-static/dist/Inter-LightItalic-4OWY6V5R.woff2 deleted file mode 100644 index 976d52564f2..00000000000 Binary files a/netbox/project-static/dist/Inter-LightItalic-4OWY6V5R.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-LightItalic-WFS25IQZ.woff b/netbox/project-static/dist/Inter-LightItalic-WFS25IQZ.woff deleted file mode 100644 index 8f2a4ca464d..00000000000 Binary files a/netbox/project-static/dist/Inter-LightItalic-WFS25IQZ.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Medium-JV63DMR7.woff2 b/netbox/project-static/dist/Inter-Medium-JV63DMR7.woff2 deleted file mode 100644 index a916b47fc84..00000000000 Binary files a/netbox/project-static/dist/Inter-Medium-JV63DMR7.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Medium-KH2CGZVE.woff b/netbox/project-static/dist/Inter-Medium-KH2CGZVE.woff deleted file mode 100644 index 7d55f34ccab..00000000000 Binary files a/netbox/project-static/dist/Inter-Medium-KH2CGZVE.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-MediumItalic-P7H6BBYU.woff2 b/netbox/project-static/dist/Inter-MediumItalic-P7H6BBYU.woff2 deleted file mode 100644 index f623924aeab..00000000000 Binary files a/netbox/project-static/dist/Inter-MediumItalic-P7H6BBYU.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-MediumItalic-PO2E4FIG.woff b/netbox/project-static/dist/Inter-MediumItalic-PO2E4FIG.woff deleted file mode 100644 index 422ab0576ad..00000000000 Binary files a/netbox/project-static/dist/Inter-MediumItalic-PO2E4FIG.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Regular-373XMOLM.woff2 b/netbox/project-static/dist/Inter-Regular-373XMOLM.woff2 deleted file mode 100644 index 554aed66127..00000000000 Binary files a/netbox/project-static/dist/Inter-Regular-373XMOLM.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Regular-DR3VC6YG.woff b/netbox/project-static/dist/Inter-Regular-DR3VC6YG.woff deleted file mode 100644 index 7ff51b7d8fb..00000000000 Binary files a/netbox/project-static/dist/Inter-Regular-DR3VC6YG.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-SemiBold-TJ6HPMMH.woff b/netbox/project-static/dist/Inter-SemiBold-TJ6HPMMH.woff deleted file mode 100644 index 76e507a515b..00000000000 Binary files a/netbox/project-static/dist/Inter-SemiBold-TJ6HPMMH.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-SemiBold-UMRILHOG.woff2 b/netbox/project-static/dist/Inter-SemiBold-UMRILHOG.woff2 deleted file mode 100644 index 9307998993f..00000000000 Binary files a/netbox/project-static/dist/Inter-SemiBold-UMRILHOG.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-SemiBoldItalic-ABO2DCC7.woff2 b/netbox/project-static/dist/Inter-SemiBoldItalic-ABO2DCC7.woff2 deleted file mode 100644 index f19f5505ec1..00000000000 Binary files a/netbox/project-static/dist/Inter-SemiBoldItalic-ABO2DCC7.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-SemiBoldItalic-DM4JJSFU.woff b/netbox/project-static/dist/Inter-SemiBoldItalic-DM4JJSFU.woff deleted file mode 100644 index 382181212d4..00000000000 Binary files a/netbox/project-static/dist/Inter-SemiBoldItalic-DM4JJSFU.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Thin-MEKOZMGA.woff b/netbox/project-static/dist/Inter-Thin-MEKOZMGA.woff deleted file mode 100644 index 6074d22b98b..00000000000 Binary files a/netbox/project-static/dist/Inter-Thin-MEKOZMGA.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-Thin-TCINWRKS.woff2 b/netbox/project-static/dist/Inter-Thin-TCINWRKS.woff2 deleted file mode 100644 index 07d4fd6f2a6..00000000000 Binary files a/netbox/project-static/dist/Inter-Thin-TCINWRKS.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ThinItalic-WRULPH3M.woff2 b/netbox/project-static/dist/Inter-ThinItalic-WRULPH3M.woff2 deleted file mode 100644 index a824b2c9871..00000000000 Binary files a/netbox/project-static/dist/Inter-ThinItalic-WRULPH3M.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-ThinItalic-ZFOL6JFL.woff b/netbox/project-static/dist/Inter-ThinItalic-ZFOL6JFL.woff deleted file mode 100644 index e612ae45ec2..00000000000 Binary files a/netbox/project-static/dist/Inter-ThinItalic-ZFOL6JFL.woff and /dev/null differ diff --git a/netbox/project-static/dist/Inter-italic.var-7LS4VCXC.woff2 b/netbox/project-static/dist/Inter-italic.var-7LS4VCXC.woff2 deleted file mode 100644 index 03875311af6..00000000000 Binary files a/netbox/project-static/dist/Inter-italic.var-7LS4VCXC.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter-roman.var-EDENVCUS.woff2 b/netbox/project-static/dist/Inter-roman.var-EDENVCUS.woff2 deleted file mode 100644 index a6efdc48675..00000000000 Binary files a/netbox/project-static/dist/Inter-roman.var-EDENVCUS.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/Inter.var-FTIQFLGO.woff2 b/netbox/project-static/dist/Inter.var-FTIQFLGO.woff2 deleted file mode 100644 index b40083cbbe3..00000000000 Binary files a/netbox/project-static/dist/Inter.var-FTIQFLGO.woff2 and /dev/null differ diff --git a/netbox/project-static/dist/graphiql.css b/netbox/project-static/dist/graphiql.css deleted file mode 100644 index 3db5b848aa0..00000000000 --- a/netbox/project-static/dist/graphiql.css +++ /dev/null @@ -1,13 +0,0 @@ -@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAAMwAA4AAAAABZgAAALdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI4ghsLEAABNgIkAxwEIAWDCgcgG3YEyI7DdHsjE9IUV+CFDh74vPL9/MmgO0un0soqjWt7En2kQoCMtXsRxyxkMqP9iO6NfSiUaLJuoRIKnhI0+ImbcWOB5XOAFVmCgxZQQmuBJRhZtsUCXm/492Dyuk2YZJdkdApZeOzyEQgKOwDgRjASBEEBVmAlgACtOHEhpjLyyrACMAB0vaLa6cAw5bc5bvhA2uwO7zXAyKPmkYNnAJgBxLEMDxFLqVBPI6EQ/daTr/QOAgfCngRoZc4UZiL623qCkf/oHVsfRCOuAIbJyF4ajQQKQLmQhNBAA4aygH9b19Xw4iAC8DkKM6WrYw/ABMAOWEAamA7sgBWACgAUSlc3SCmlc95o45idYD92Qt/+5gF19v3FALtB9+7dq/h6/Ljyu/zzYfnngwdlHxO+k39nOcO/e7nPf2vCoo3HVlmNTdnWwW3JZffuVU6cQX14kb3qUGOOJ+mjP9iMeb1Nivq5gXpJUWm+cmVK56e6PjI2uce23hHlG48vyDvym5/5q+wbkjq90rN+z53D6zXqmVUPVshZoVtrZgc4vleS1NNrni6VR8I/vTrpzpPwu1+1Pel4xBIzK16W3KcLNnVGl2RGZHbPXBAvhw4M02Ci/t0BBfw/p79XS9V7CKAMF0++DK9rtI/7MXvGATjz0TEA4K4oef476t9dS555BAoLBYCA6ei/FSzVgvg/cIR45gpTaLWeLiB+oa4xJuTks7r7/xwCmCzlpoJKALCDQmkyEsCsN0mELUADghGsGgAF6c9IXkabDYyqg6WMkZd9z7BT5gaphhhqnOH66aOvkTQhggQLpsk0xBB9DNSLJttgPQTQJBtoIE0JEY2wb+1lhF6GG62XngKUGKLFECMNkW2kZgP10+M31GZUwfojwkU0uAcQkISKFNtqGMlau3vIjjRUjMANjYkDNKeouYh7CRBmuD4CHQgHG6GXET8oT7ZU6QqUStddiABBJPSv6P315AAA) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAC6UAA4AAAAAVOgAAC47AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoFOG5JCHDYGYACCWBEMCoGAEOheC4NaAAE2AiQDhzAEIAWDMgcgG2NGs6Ks7ponijIxGo+oHN0g+C8TOLkK6xAJI1V1fGp1NOoKtBcNQ+jK0/er5q85h4SzDEe8WLZfkSCOKOEITU4Rnwd6/3g7TyHQ0ahSi1ij2km3cPl5j2i//ezdvQweIILwKJNIxSZSouqRPuABEiJISCk2KYoooFKC/ZUwC/MrBigqYIMNz/939Pm7u86tem1ZIQhQMCsagWEmDYB/wBl/nXv9mXnbGcl/vRQgh+vj1yfc3Xsjzc9+r81LDpG/Dlu7aO44XHSHWLKkMYSgi4w036noBt5siPv/4ttPlSYdky5YSNTTjNX9XX/aofghnitDBSjj/2ya7Y53NtFmjxRiBbFofF2Imi5Fs/tHHu/saAUr3T2BQTK8M11Ox3pySFbgALAMVUCV5ZAOAeoAlemSorqmTdvlHOKi7UKQu3lApxxKe2sPD5glEhX1Wqo4k044REC6Hp9eYy39Z057lYxgww1R3lPsIWJzuLs4REiDPBFxfKciGLYzdk/6O6hkCTOIDQeII0eIK3eIJy84fwGQMOGQSJEQiThIshSITDpknWxInjxIgWJIuQpIlSrINtsgu+yCVKuF1KuH7LEH0uwgpE07pNMw5JVXkFFvIGM+QBAMKAVUgUE8+QAREAElaFiI6PN+yBhaH3urltD6en7uYlq/GmuW0YIWf161DBfCJgSIgBiI8WWDsDjTyQME0C6z4pPLw05/Sd2ws88bKytSlWk5PDBBmTZYN0qHIz7JTyHX37xFzmVhjGbRrNLkx30Twb6A67BsPwIUiYt2I4/vjJASwuuO4AEKuZpbdZRKxD9k9R3qUN+D8BKMlKy0t/vt4LjZkkoA7qb8Hu2VDuczdfMZesyFT876DROd0XtDyNa7n/NuvrPcffgyasLXYQqQKrBpeEjwErXxUVKPHwGJTcFzfe3RWJWk/R1XYTlW+H2RKEPoYEforOi1pD5tx8UF4WivNZdgZotEb8UP+GXe0jI29OyOJOh1mkFzHPXzeEbhWhqvU4AV7iszFu62l/bud2h3rxmll4VW9j09wq+Q3JeVEwue/Y9miqphgxuKggLVkm4th2AwU80Zetd2FmluxzKQujRc7ekuLM67R/QstYIdB8HhqjJClJj+blIpChQqVhaW/ggedFiHTl26HdWj1zHHndPnksuuu+mW2+646577nnhu2IhRb1GY9THXPhVbFZmdsLWfbO8XdfWCZHcCWUZHZHZUVkdU9bVtfaW2I+hiu0FGI2W2UFajZPeZ4n5R1S7belVtW9X1MjKzfubar2L72dZ+tb1f1fUzmtg+lNl7svpAdi8o7ltVWLZhqusD9f0Cqe0LJGb9xLWfxfaDrf2uruMwsR0nZKJx7E3BfSY6xJLogmb2new+Udn/7O6wWjyIYz/jM+v6HIri6lOjaENljtgejaPGymxZrXnHosUr7huVjbO1W23vEbubpRZHXaswAmxoEiVnuymjb2V1WFXv2JZVv9xGfkeowJPvW3QYySE2kiA7xBRWyvez0CffkT4KRnREQnqTHkJn1m6Ovcu1l8ViBtWxkSC6zq4DuoY+mkvMqPfsa36gHtkR7eb0+pxy2n/OmpX5qq7EGFpKGgIrYOzg7PE5oAlGEYYlHEcEuih0MeikWFJwFEPK8JRjqcBxAN9BNIexHcHVjqEDTReWbhw9ML3IjsEcR3YKyemkyjupY2QsfTguQS7DXYe7ieIWkdto7hC5i+YekftonmB6Ts4wnlcII4RGyXmb9CXbB2H+OpkzRmCjwEiFus/sT7JVAmOgFaukCoigi2Flca+zVQqL6YJ2WCkZNoJaN7SpIPkp4CfIKXUxDQVlJEO+dOY8Sp0Iu4XsDAwBXeeq46FcOqUYNoFk8iSRlKQlqohiUczFmVTMLsxMPkl3Pn1DAtmRMQRR3W5Z8o2oicdQF2kF0P/D8P5QOmMEG/4BzDs1z6AKnQSkPaaz2VXhZiwbr4QVunYi6sMa+H68CFg6K0nJTFE2Z09a05FTuZmHeZnvg7JyI+gM6YyEJznrUpKtaUxbunM6t/IorzI1WFa+M+Q9Anl3AXmXQV4fyBsBeS9BXgUQEQONgE7MgUnALGAfcAC4AnRnZsR+zWyDCQkXHbdq4csvju74tUBBgmPbSIjQUDOpNodEiBQl2ltj4WXKTzzVrsMrWbK98PKwZDlyrZdng3wFNvrfM4WKFPvPmdDTcb8BJTalbR96pDR0vfs771V67IMGewwkiQoLQVln8l++5Ohn4EdQ5jyo+Rukm0D83tGA3YMuKEnETKySUHc4Rdr8WbUUNF2GcEgpKY2oa1JRQ2gpjRnOKGUKCQ6EnDqcApAKRAcpMb2kacV9d8NZnXhjIUQsgRVEJNeGodi+QwZaXvo8hu86hsMNxZEPBiUiU0kT0jIsVbQxz3U5Wk2YftM1DfI5mqH3Mc+GbKiBHKiFfEXd/O2Y4AOepjlu6AXOF+INaaCesiyIF2qakUvq/PqwzchNojC0bcvKksNeuOOkkdfxkmXxevpzVhQmUgz2vi3D0Nd11+TZoZjF5kONqtaN5Hmu9SflxmnRK+fTVC+SgVphRvKuKAq4hkkPzj+1MUYbJ5MnJowMkDJ4IvIhmEdZoL2Epl2JeOZryGIAMJLE05SAntMFXqOdzZUUcIqfl6Xpz3DFcEjeSYSvdlFvenBEnSqgq4lnXVd/ralhVf2u69+urgpkrs83u72NkeUJGv58+3h0QQtiQqCUrr20sRnkANu+Jx9aQZi9j2nNtePuSAHeP8WGNZm0DkwNC5iyxN7YbXBYnLW88Sg5lY6IineotgSfx7Sx5fPtnbsnRyqQY6mhqwDkrKkBPxSsTQ2DBJ6sU5lZ3830uATWVr2KravL2z8tv0aZJUcMQuE9f7Af35cGdh8hvocrcoLpTImaZLiMzjp7jh5bZYi2W4OcS5lhwGy9p2vBmX36/kbmR3Pzsooqx8zJ4VeBU3wvZGq7LeyQyYufMh4HsvseegOjjhlMv8ejWICSuzbIGYp/Sil4HJMqru0MwUCsdbG0DnJ04b+wwvQLFkGJN4ZmiV8bpwtTr7ta9QnX7bOdGZGvw4p+0g4CEkaFdb3CxED9eAEGwmIE2gvgqtOHdDA+ZjMNGcW+btlhAa7CHYqJqaDhkIDfEGGuXZkPtQl9+x/7B0xbeSoYxuENj5x+Z8BrQREYaUOe7lqZ4eI667EYLwwA9Fp/ePU/t4a8MAlAwOFN9UWt6CjY9Lik4D3x5v55OnYDJYpay6aX8s0IfHMEXkDOi9FYAWlOTsIaSMPklvdnZRcsrSJXYaj0an0Jrh4q1I4WxUpawINs1ifbDLqwhv2Uo7DxuEnVmmujMTsVmpDVWR+iu7oJFgPDoNzAJ9vUkdLXxlW8p42vYdB74VAFAqSkKXBKRiFYC3iC1J4/lmHN5EWYCbZIDSjcHIYsphDj76hdnFyapW7b307jGyEm67ZBqnDOBPVmAbvQnwMdfqBZ6uo+06id6tPX9+IV7Lcpo/FZMfev0RZJEq2dq0AihXaCT1p7q7MXV9Qxi/Biqe2uIOCb25vv9Tmf9/U+VFA3U+enn+sBUi/tuVZ5quaUxutWADFKByJJq8CWuoDRDDT55m/Zw05mkHcoEDxE2aBlx1xog009drVNUMBiENsdAXJesywU4qY8fw1WTFOW36dw5vPdEq8G4ZOfFN4LgY9qTWzMOzpd9/p0xrQl8YLhrog5RPv6VDBjk2tlExwcozt7ygo+RZa3VTrByYsWGwojE2j41EW7bs8P00IwtfRJJu6uatron9KDVbxbJj29IQ/Ay6gXCGq8YipggFDG5AmTyawYKLgA7QvWPp+yxzKC/1Ef9P8pb7Q7RMwXNTmc/e23HWzIL7jauiWdDmbCxEUrHzG31kia/aqz3RIPr/ANyO7i2VpQRc4lUqV32ZLoIyXnwKPHJLYTITsxJVZ+MOPQKt/wb6uHnOetIG3ggiGbQrNsLkMZt2VvTlVPuo/yyMxutVvEfukfEvFARHJGMpRbufW81GMGoWAFInWk8zAE06JPgs0DI63mPkshgC33W+7KN+nkphTcbc5QOhsa1Lw61+SG29Iy9asb67ZV27fIJ3p7T9CiUxFGrmIkXZPtVgCNwSPyZMh6WHEXb6p52LK7pdu5ZvUzPb/qenmrXzR3L6VTNijMxKKuKOhJHtHwKbFksiQMdmtKTtGhVT5A1sqMNNTXXl1TgyVgcHBA5cW+PH9J2etIRLGaowwqTgb/Xcc0D/RT795ZkiUqVgzVedeekCqf3lPggrW4YtaZ8OyKfH5pqDXa7NmDSkuYJy8O1tDnNYMj+4ytVzdytExD4vqypL/5FrV1PvW+3ad07UicjWg+K0RC+BCdLpk8tlXV/9j3eVMZ1zA5pZlzUAmwMMBnHHBCEJpcMe3Sa9vi4QxFn2GdBe8GJ710o32qySr7e7UaOwbGF6nPTYpU6cXHY76/xtB75hCJxgJRvusKG7Sa/MwOsWsHBDDCYit7KMimKD+OC3gqeXfmyKzQST5NJuPZKyGolq7ABja2dNMgIFkwm0vhpgRk5sIuPBqn4WMCiLKM3hjhgP6OChdvbtr9hUUuUXtDoKrUe9dF05KprmGdjo3awku1picsCubMAGvYrEMyq7CpKnoKTcqnbXuTP9h0/d/XwiSTpjwMH9pNZcTeuDCRfON2rjQwX3gyN/8RBU1uTI/GhqVrAYYgPfdM4fohVek21nmbG8LlVKPXpPxVjBTEHYM0xwDuVUU/2g23POPRbRxBG/Pp1q3UpIo4FTGdeKQnJQnB73YHW6ZAEn7c3H2v6NNzcPPbjOdCXMXCj0K//D4IPxWKiXEGDHlcZ0OUAqD6mVmQLdaUHQmw2KAP9gnvPKWkqoylP95SOm0MxAf+PcQZPCBQ8CtvOtiIDy1pWb4h2m8+8v6kMOhtoptfs09aUwqJryku13H9LXZA8a4ztLbGMep9xjQAznIJXswSVBhzETIf6bhTKJvMFECHFMWm35YPNBCy32N9rj6FFRufhu6YWIOooWabJ3M0Gs49D6TO83hkAJAovHwr2UdG+uu9OAosQYE4UGxyndPqZ8k0bgwpNmpPgekdd7UjbnR9zc7nvObOH59Vdof5gv3epxqvndmf8FLsdk7aJ/Iu0lqLkj5ThfpD2CP8D5Uy9p2ozSiVYfuIp181xwQbqZGUqIU9a4O8MRHdaSEsNyi1dDx3QHylnnOhc5f6tT1WVVZQOpVUJEsqmuYMdU7HBspiAqdhwRRnqHMKNEc7WR5+mql+ln2iUx7jeUGaG9d0s74l+FW73L33v3bwElRgDzakT1HqyNlmjjv5MV6HK17hD3FQY0yRshavKmVG+XbVspoUqLGkeP0TshA/LAcf2JGhT3tDO1ZwpwA/TLxgib+B88jICdb2kSnW/pFe9WthMN+wKZM5X+P/5Xf5T4UFwgV6YyYXuSCdOX1TZa56sx/9R7CGIKWMBNuOzy7MrsHL0YlOUjGlTX5wvBqx7LxcBXHrMAckdWFajCNy+Pqd99zTUCd+4Tp3n9sviu98efT8iD1ab3tF43oyFO2JoHtTzO3XwNtrHig/iuc2DHTJxo5boclYKRos851i7xJz67b/+7BpM96B33nR8zzQL80TL8X3fCU9IzPBQllwoIx2Iz8H248HyKIXTHKPwf2ySTklrfhO1DNC/m+R35gNOcuvyheV4OElLrd1sovwYrx5Gn4KyrGbxWEfGFvm8vbXkd8Vl2BX8auaCh9Y0a3UvMx6CdpN5G1Kz7EIeSZBX/edJgVy+sAowZ9u7esKiimDRRWH8Gq0fYh/JuX4RNopew1mZj5WgKILqCnkCe4BmGSrym3YjX+sqMJL0ZXNAT9ZuzmHaiifyrfim9DlysAfzB0fUoiYiFxfLBPb3y88SArNi6wKwXfh3ruNAlgZFHf49/BfqFz9nE+KP3Ym05KFbbpjtB9wPND9KXmu8HvhzJPY1ZInON3kiSVZa9ovTmJ4aE+B8MINEytzfUMry9WLLSxCLGzSM4ytzdUkrjf0+9bcHJaMMusV6+sgLhmiF7gPT7jPNY/svCY+LzXZJSc+z1x6ZaP9hugoj0ywbhSknHYzcjjU9AevRkfbKVtpjUTXm7OIaeepz02VYV5I5s60HeeTQ9ftfuK2Dj0gfNfXFJ/A+0kXWYpDwvJ6VrGsToo80E4jO60lB1ctvrvcqPGEdFOk9p0WkGBbAhlOlY42i+++DcaqihYVHXOJX8IqB84E47zZBGh4ON3AX82XG40R7qz+/To/HztPusRQvC9XuYWRH9sYg+0kaoNW7TFffm01pDQdJEXRW5i2PhRzDycwufCWtvFkdRFegBp253UAUZZh4eB4BnS+z/x6fdFdz0VfGYsugOjbyLNvNP5L2s1zNAJsN46UucN8cS505oMRf2XhrLbzCtUeU9Oef+f9WDH/u8hGNoV/Xz9VebJq9lu3T1Pun3MWEKFhRT7ytNcJ3+By75jf/8RCFcczE27PGPjfcdCZSzs26tbnFI9siGrmkRt4F/Gka8sYmEfYOPmgQmeaBT+jk3QbVA4fhcQCD6pdbpSjP+aLKjxYdpNUyYba/51z0AD+oRWWjJjRDYuq1M4es2Ax2qg54vRnaH4aLVfl9OSLlgaGgteNCa87L9QeWcyZch2bcP1AXa2LSaIqgpTo6gXgZJ7alJAylZBSfzHFXLNAsKhOaSy4PjZ4Kja49FjwEo1ukz/qoJ1il9uYzohlBGYnxaMotDeJG/INqLKKk9MxZWiYmH7IOsG9iaWHLfI/RI5jnNJ6P8JYdQfBmyJnvwAeviEjEuXgfXmshFnnbysY9ID4EtgMdc74t04Z6v/03f/963PM4Audm3qKtX2kPZmuXGVh9JszgHzkrvByyI335n2U27BpJ+w83jCtvMDokHtNf34u0l1FFl0yeZFoHmeRxd8uwsCrmdfKlSyvXnAYH0Ufvyg8dbg85XCFsz54A4l0Y17WQVAKL/gLr/yZ5A5ybi3++019HDt1wbTnBA/loSOb2TJWTFKGBAfzx+SanOIsbBtxY2jJh1+gfm2SEo415Pfm4Jvwjmrxtm+gPWoveI9XYPdyMj5Rd5HSrcvP6AjqDmDPcIygjIBJuOwSrUlmuIm9sPLz0QKH7gmcLWV5t/6lFe9/CZpaUu1aJtLOHr24Re8wZ3qeAiwNn0XYBaZFGtioWmbjTkRM1s4HLtlYB3pyBt/5DlmGerp4Z3jQbYRF+4njoNJeCx4oypZqkehkbWmPpGvYq8aBse1Hz3EkRR12/iVgbGn2zW3Ks/pZ/T0dwcOrufaHnGmj2HcExXeYvOAZaquD5XYzRo/ZJK1JphU2aDR67XoDuMldNvCjSHeqtLNdg29A+0Kleywd9uTMk9tO7mt+vP4xWLwmlE069OzEbHK600w6DexyHJiEFeGZHrSjmRO0pkxXtb5tEDFhJfGTC+1HN5/yTxs5TBqvCbZiZFSR3LC1ohDmBFS+HIIO/GY/tZHegt++NizspBAwa1nAQ/BHWYFMN/qaNT72OIgHy91RdgzH5TlQ4/I7boSshWL8TJnXNHvHfF7DDjRRXoG34beGSd3PgfDzSnPBL5L857mC8kELSk7AVpCOdtK/4bNvcadu4HFoj5eGQ0XLY/wUfvOncJA+QkzTv5Hs5hM29l7mWDheki9IX7DfdAJr7Mn2zi6WWBCWlytcB8sdQkfMpEeUBj+/PIb7oQo7tdUbtpzEW/CuUX6vtH1ibQdubWHqInUjUqT8JGnHZKrfWA6Zr3ZsdMKi0ziSNt+gY2SmaGxyEU7A/c8YLcxexuN+/CXjvFmrcluLscEEXjOzKvab5zxCwSgrie5Jc7CKdCJAycK5GZz1A+x+Eg/xXyT6h+3FzGwn7txc+uIlqA0M0cKZrdn9uXg5099B67Ur6yNegt3OSX9HqsJdWK49kFzmz3aBaZAmV1qOK30bINrxW8Oo51mwT4onfpvkqZYBym2S1avpcXa6Nlu8UV4M32UY6HHFHXdDk7Dz+Asu72IjOF5Y9gQwetmWY9f6P95YsfdbabrGnR85Vp1TTdG29t+gQRSuKzqrJ3LbIfqtudHsJdvI7NWawU/GfMJ9UTw0RPkoqdt9eixuZWuOXeszqB1zv5X+rE3Ovm27kzBb3dbW4TtIglZgGsRjb41FgfqwwRpR+8SYMNzWqWnAh6zNNo1H+L1J0e3FwVOLQzgZntlZRDR2Ns55KsY/Dm2EBqlc4ZLIqcXBc17PegUIvhf3PU1ZcGAARIrts6+9eXCL1fn4YdxwE6fhleA/hZZJxVZ3Jqm8mqnvvaZh3LHZRVogFeYo9f4v6Z+jCjZmQaIGT4kPJolE/ZSkjcp/Nw6MlyHJvCQkPpC3qYsUhR2Oc01nJKCCWTKLnIubzW8ZBAWlFsX6NeGrMbuDTpnF9dHOE48eSoYbOXteCs7ehIkbRiiRt1RT1eIXSCEvTbBRdTaN6SwLx5wmKSuW7hkRJiHUQHxxGorgzuTYFkoK9wUtPnJBdBs5iX15/uQTtKqM4MZwoouW+21PmbfxBCmZKLiws01P2pLHjmNJ0jPWE7tBfFHRorF19y2cayDYNibkDuJQkPCaJNrCS+0ni1VPTMINY4fJ5bS62/6HrPBqop7Z/kBzK8GN5YTkrvapjF60oROPJ3LPVu79FFPuzLQSFI6S9yq3CL8KwFuAIb+FgDfw1XYWVGJD+ZnTlDqy1NTcsij4lMHlMzHqHxnUzNxNPH62/PNBSCKwAwUnhZZG1cT9J8snD0Kw4cHCXrCaw6uvIb5UbsVL8YsVfr85O+QEDbXoS1kVfol4oUB7rH0g8A45RP0zUPIjdow8vU4On/MJKNnRu2DeejxMP81r3L7r6LY0xFV4AP7L89RG4ifZaZ3/oCUBBasHn+2Xqd1anK7Vl8lzMElUcOffpKeavQFoYijl9oHS+k71S8r4S3DgJawZ4GgqrO0DhZR29YsqxChKV9phqLDEk+a+l/hYu1IY2g9y4fuNuhzZZuaMV7uW3cgWyvZavk2+F9Q9rBUSjwL9f79Zq1lDeFNOaZikcUlJPu4oyCfs19onFl4NET/+x2NZJCYuzP5A6saPJywVhhwFubB43Yw35E5yb9wKUcxRAM/CrjPUi4Tougdf+SkXLidRaJ/bXNuqfbdIWag7w/UxO9+Dr/KM+/M+LroWgtaXCTd4COxYyM02yAKPJEoKBetW5H5cUeDkQLH1cLHGArGsTXLFnsIAHbx5E61zlFqssjdZK1knXt3UcDqPnw9ylLgNyXHok6+oxzZUgZ/WmJDKC9wPzEhuYr0fWPfYJpPqE20HmVmqE7PvfhjvInxQub3YYv22DvwgfuST4D91TPVhWaIssB0TDrSQtUbU/+A2uI1JkKszkSjjxqlcfDP7orEmttrSudEaC83kpmoyViBLM48d2DtqsVpVvEa6vkRsajCdxy8Y1WyeXeMj5KTbe0xyA5uBGcFJ3OMP0qHw/4XwflzHY9BeL03HytZH+FnSlV+C/uSR2Nl7XCsAy88RZtW7WO+tXOZyYaazKLcL560GF134Mtx7en7ViQeN8Y8+GkyaxJek9O7U+i/+yK1T468zF+V2yeVCZsp3y+hsxcMtdohfNY+xUCXA/TPxGp+iMka/A2/ONLkSu/pyzqWFKrrYlpSWWPwAgLpswjKuRqt2jtw1+mzS7vrdtUPEIfzmK1LXSniS9JS54snEvn65fbRYcpbnVm+8DoHu8V+H3FP/tI6tOqm581ebe+rfNrr0T5un7E/buPUxmF8/0zYh5UcLaEaqyuUcgfkTPH7cYdB6CmxrQTiSxuFR2htAQArwxKvcOMzQVYQ50Ivsvfi314SIQNnzrVzGSeUmzThnM5CPlHd0dForKjmpUAlaRl8p3omRfuAdH+MlASLSxQPNiqyTo3gtO/QBSSTyjisr3GaH834EchK8EAuKl+R4kXJkIZXikxzphUrkars1258UwZQ7qkBpVLGhYl+Gs8fs8GQBgtal3omRvoAkp8RlA6Uld9uco7KD6ZZ7b7e6TDIHtUxWL17P8V1pYcNd1qaD67vCYtnLdjW7XSscdf9b0pQiTl+zlU76Z+NfQ5DbKrMdugsEsyDI1XzZNl3QiyQp+qB//tNZ30nvfE7XhEqXopIguazOmh04e3r3r7/JhyT/Gn9gW15QebJv1I4NxodmmS+woJvzEpI3xeOG4P1b0Ro5iryL1/qA8ap8l/XJPo7pYcaRaD8KlYagSa7Vk0fAS8oqOoTX4p1PSYNz4i3Ek335SOKf44E24qG5Hq8WpRegpbZqLvlSH4to0xBeMs12D7RabPfubsEnKiUYt2UWoW/4m8Q7NUmyFs1Zz0xmJhRmyPCe+PR3pFVi/FV2UXvkUyX2KCNmiFnM3vcFP6q7uvu9i/I9VkbqllTcH5wiiFnsBR/jzuku4d/5vfGrYNG7PXPHPOPiP3ossCTSY+HfRoOZDrnRsOa+2Q72yHzVwkMv1Lt3z+lytz80/pYT7Lh9h5v6xd1zL4vlusAsLLkjLmmKtX/8mniwLzY8hx6+IuZ84XsF0OcdzrU7NEFrkpWqDaY7dATHd5i85BtqiUFJ4CaLCXRWG/Bh9Ux8cGkA4mS7HAdWiwfdNvCFDj274ttXAK7hqxJVES6NT9vDmPHviyvXF1aGbQ+BiYiJ8++xm7/OdLdd3ZUxr2AXI4ydnrs1Fy8H5ysTtG2yXbQmmahfLSng0Sh/h9y0qs12L74ZjeVufsfZQfVieCq2LZpv6jpMyN9LRNU3VqRT0/0ZFbsP5GL68vs/asjNuS3fVEW5kJ2GbcF7bvN7TGB1vNpjPc0n/U6sGDTTFPtaVj86XL5gpv5LmpvBzVxyG8V4ifpkOVjeFnbjRYYlS/JQBbpVHUzh7pIoPv1CP0OSu7KTr/mXle5IJEZt9MPkXYNa5C7wK3iZ8YPV/r7YOryqj1QvcOLmqN6v31EagnZWcA8EJUkiRE3sPJJXtT2WSJr9HeYYjXuJB5twkhdjoziBtf3NNG3GQ9L5r5cHcUFokT6pNtApHrif3rOLdjRjgtaUsTkee2S6SgRqmp32V2MdGeUtXLP5e0w1AulJ8usOmsgmXOYil8tY9KFR581Dxt3vopv2lyFz0jI2lT+7tFGlvE5U84TXZOwwbuq4EpP4qBnRG414KYJg5gTI8ylZsWtB+/th3DeFxw6Xps9ETm5gfj5Wjp2vP64HwCRP1AHUphRV5XamTb5S3l3q/g5AFqmB2hpHT6vSdzfgt/AxOeIduNJd5EqMQtBxthvNjpVaU7weq8MGbGZfSnFT/RrpR4TQV2OriaS0vGisiBi8YHIT4gWl2K3ikHFBScyc6FPkbU1gigWtXmh7V3Gsm7hCXNZSfseObiW7LMyLXmOLqon1JenZ5iEvJfB1XyBWnm20uQ9ZJTjQrL1dYftaqnTt18F9wj+C5b/MNvOSyiVD+VezqIuNf+P8gWS8tsQGmDJmfEHGWvwPgmP+lfN2jLLq2Ps+T3UtWt2VqlG4hRHKil9blEDqBctaSbb5HaYgJnUmZEsSs6e5mu/kjw9dbkamjnzxxcB5eaqDiVskkhgdjwelHjOngV046wTTKFP+6PULTUtteMp9t9TNhf2uY7bT6IPO98EziH1kWfWKPQpXOAmzL1yxmNd+CO/GP7eG6yqel6s0+4TYfjQ3XlHrzlKsCbttq3z5R998uJBuwR5fNb99OpTlSDPnxG2RgbHRiJv6tfTZR061HVTomGS10wt3XP4l2Ypfwt9+oJz6hofHZ/iiRPxwLieRm5dSmofvhDnHQG+bzF48KFVqPtW7X6HnPbuDvnHHpWlJFXYBf/OecvID4OGSnCC0Fu/M5yRx89M2bcCrYU4vmFnUBggVvXLIUIrfkUZdoxfQy3bf/yet7rjjS+Kh9ehwJVvGTUwsi8GBQnt6SuTVlV499Gdt9SIIEE6xtr/Zm4uqR4cDhd6jwPMh+XHmqUb8nHvFlyRA2ehIOTednZQA09g5kYUdm4RXC/OwWtxHFm8xwbzfvUhHK+lVBbV9PpmJwnnhz4EVjoeRn5QG0s+0YLIGXyWfwuNn8d14113y8fm3E0zCZHgWqrsp7FR3o6BIX6krysEjUkmWEL6OGuGxzot4gdSvV8KOpnRWisLZUWoYqF/XgUnfhtjnKIlb2nYvD1ULaqLmkK2sFtr0b6BW65IBhXPD3wJzBL9f/y/x/3fmANqJ6jsoNXBkTE0cZkusjVt2n8jAnQSOz4DrSHXkVSfNG9mzHXZiW7KIFKoDPTmf/BGpnNkPNzJBibCgjcYApYHvcIa41kypJJzCUiU6TopW6SRXqPJXG+iBygMZLCkrPiFZgmuCysA0jPj8jH2O+4yUaq3snk5xN4iQky24iSvu0Z66WJvvEl60IHE7OOLWC2gOvGxWfMD6QBzKalS678BQJtpMM3d3dkeaoNzHhDPE/Q7aZsI5Yl2UXoIhc52xt8t/oNCo+elSY76LZId28m5YSHJkr6c6rnF0wMBq++uqzfvNF/xgniOCRFfEKYyaobljgrWlzWmM/TYLddSd75ZQWzUIxizhsRP/84oAypkD+GG8/SbvCBjiqf9C+0ze3bi+B3cUXjb3o0irVTpYjsE3rmfco7gsjbiTgBeOMZ8qQSAv8DmwAolA2kCG3XjvbuwQ6r7Gawfvwk5Gqt3CRcY6fSWUNjWCJVIYnhT5VAt2ALXfYHVq/YuVxOxFg4nZsbgjePN435qTO0uv4xlhts5MZNzT0bUyW/VJRirno8kgbuCz5176X7rjxPHvmxbUeYXRBa7CffjnpmQluea5JKXus8pqNYfgWlLp7dybaVmD9qJ3E8r/af+hWVHtmBnlWxOxrejILXjJm+n1HphHaEOlXNYOINp9UGgM2kEkDFPiSfVxA9cicrBy/GpF0DfWNjve7t1/PpdtgYMo3mLVqYBlGzJaz4rq6EFB1Oi4TNDweN2rfj24TKKHFp5FV3e+W0Q6wKX/e330VsBu96gkiHKuDTvYKMGsr+nL1Aak4gFbb66OrnUHyPDiD7QOwl5g9z/MPcqSKVyn/upHLajrGqsdBnY1nspiy5hhNbIibAM6m8ON+Ab0jY399MgarBb9TJCdomVyf+lGOS/QM1/uQYqkFDec44Q3Y/cJygu85yvgAYWJCagc68tgR7Ei8iUFcAbUL4H+q+Iy5dYyWJ7UHpcUImtNxYbn0MJXRMch3wp7IicDZ03CiuvzGPJHb13ciyzQZ7XzlVq5c9rnM2CB0Oax2uA3yY+SMWJzWrn1tOrZabWzT5Yu/jj53LPGFTV8TGmYwvoBc/ZmSVS++rUy65qP4HkbXG5PgN6gTrve8WyvePDSgl8IFmqsvDnviyTc/PWijPMrL7mjF8UXp/D83IL5lqfPBqoEOtVrHvslvwJ/9kjq+miCpXH65SP6clbNODzuLCyT7igVb/9VFPy0PcMwO6ncZO4QM5M5/16yFAyqHu68++D3RTDqQT7mWhEbz5/4URb6L1TO+cRGAC3QBgBtUEb2aAVQgCDcZy6qWO982DLzVcHDBE1NdOwj5wNgHYW0DO9VCC7WV3BfTFWIWGyk4HESSzyG5RRsAM9XiGXYRMGXormQLbq6DFIFD8dUhQjCRgoegukKqR4bKkSPpeoy7Y3t885oQgtti9w61obGmU1h3WAxNvMP/QOb8APDNmHdCK9sItYAwAMhsBQjg1oHaag30b5iDuGN2GITcLgUH5h5RRQ6REQaAGb4SVHsopZjH0qbaTR1U/ucmdMS2X5iZr/ERWYRMrAxcHEH0eiy3kQZc0HLsXbKqHDmKyUmnYf0kAnm9AslNA+UR3Pt8pAXIYNizmfRmxRm/kMY4gtkY+2GWcxqn0YcPpuJz6YrlpcinA+Ux2zt8iiHKuNKeXgdOWhh2RtEbYcCUkOruR7FGQpR004g7gyL9RTYjhl+tFIqlzA1cqZoK9qZttR2R2SG7YysYS6ksKuhNXhxTphrHi4FhrFIViGkeYhF03Pk18A5KihAE8+DWgBzPrNoh01aJHwF2wJGW22gETsoz51GK8AyhduzlAgtLl1mkWcy3Y4vJWJjBT3C8xXsFDZRUFGcxKqKGWmROGpmsdsvtVXK7vhhDz+TCVTan7qz96r2tl3HqOEtvGxIrD9ehSfcbZN9NCnyLJHNkzbfzovp7JF0jS2NGR3vZMk2YjkbkDYqRopCrNxBwUbuSUEguyBIZMlVS7K0V89oPnYOeDoM3qbJOFXeNwWxPJcdhrdf/lTTCt+tp5lkLagBuorK0DlWVxxpIPtp/lfeBlOaZVpANm3/kQ7SPnPbktv3URw3cXw+XzLmMpXbIy1zgej2XGfiIvKuGFb2kcXJtyb9bG9uMXQ6l/EGRy9mjEHcbDrbDIq+Pxo9AoqsmifDU9oP0htHmbhj69u8Jefg1wiefdHiaxTdMJ0407mT40YbpE+OhqV9Hyz7lS3Ejen+nwmUram4dFvNTbESffH7qHQiLUeBqO/Wk7lBG2Rb9geKIB0we7Mmh67FMsf17agd3JKORTuxMKiYNZeZ8LJoxS1tciiaL9G57zJ9FKnH5DWKat/LfX9o7yX8ac+aHrp0Q1y2YBtnxgcgW3TokkFab/rogCLPD4NYZ/+DvrRkSckGOHYb8XRy5wMK1WwEVbCTc1hQkNemmQ+7FtM/l/vtWqcg7lggydkAzb5xu0hHQkDc8PWNZ4otpifL/ium+ADAuz95bwA/PLn9+Wv1/0MvGY8UGBoMIAJFl1wmQPGuLvmGjQforrMb/bV2irCAUQ6IXnbTGHX/KIlMAu2poP28lPEekhYsSlz61OVrB3PB3iwnziyLE2dpjGgj5IuVrrVkfe7Jdae9K9WddekJFR3b4r0LJ65EHE0mK84/nOcwyD+XQDqzSdr6KT225s5BK8/aNuc0lSmmPSW9mgm1E+NC3lMffc7LnsJ26pEgoqynGC/ibOi5GSZOLsX1knucJMfF2Z1H/SgJ2fNYxpna/m3BPKOYj22PbeuO0IrNpbcHCGeQ6PGd8blIHHq4sv5v7/gJSxKT/NWSqsko6qmLj7ywrcJBxHT/5RVDVnltMch/AwrYAIULUGGZnLs6OWmTaOcfxRxfpqQDN6GX8oBO6HhnrM27tUemlU6eEw+beqqo7Xj7p0D8xmnnE8XTQHs24T14dPZVvE0SmdccRqmD0e3JQ6gfF17zwIX0Sx4PJ+OvcKLIz4xZaem3IQoKaYzw8OnAzLmpoJMkvM2hnb8UjxPt7UI8MWxTTjfl/ZTDDFc9Wjaggwnoybynty+y2t1s9kJtQxeacFujrfxU9PlO7fNzlfZOw0h/tSYiy2eTLQOwekx4bfVeHdWeWwdsGzqdp852P9NDUQlQoGpPelhb8mIqzgL+HTxBDwxhD0TBBizgCoTBk3apCYI0qMLbQBFWyk5FgB1Y0S7YgzU1BZqDIniBJ7jX2QVZMEzaN+hsW+JOoB/wpDTgD850aaAhMIdV9dj6J6HXRoVpdDJ0B21BJ5OAgL9sJuKFRORismpYN+TDlIqJgkNpcWAaIF2JzBJ0JYYp40rcXBtzE1eSaDmMyNLdBWXz8AMsJEmWSSpWtBipVBnQo08cqmwkqbo9XuS17SQKp8NWKyje48bMU4gskldGkpJ1FhFgbm9hYRSlRlQ5Dn5yY6VJYCdVqHixwqm7V625l4hQiljgiXiRTjtDppai794UtJcWiYZ0rVQmM6NLxHSm4zojWeitI+lIIhXtZIxESpSSpUCmNexYsOLEnfFFiD4mPTgI30CQiHAGAAA=) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAB0wAA4AAAAAN9AAABzZAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmobmnocNgZgAIIEEQwKw1i2CQuCEAABNgIkA4QcBCAFgzIHIBv6LhXc9d0OQlLmtmQkQtg4gChsLYqSwfiU/X+9wI0hUv/ESljasdKOLTGMi44Ndgq6GqWg9LAyZSaQ1p2jO4gS3GO52RdM1zk/kVej1lvvb916njBD4+ETR2hyip0e/N39agQ2E4uSVEGghOwN6WYXpPWQqgRRjyha0wCtB/EaOgzLb9Pfu/Z2gDPJbgFAHz8PpANbQIyq/SvsAQrZCnUkaTL5UDx0hBQuWtrOtqcReJzBYjAGoQxOv0HSnf+5Fg+TUohWeR0q3kQ9Xiap+ObpzxX5eZrb+/dvcVuzkW1i0QoGPSIFiZZMqRKkVCpMjGZmYBZmYCEg1jDBJrQZ7OWgjSirppuMh67lD7df+KNVl3LJKjTepvzfWpntSoeoAgjCbWLjo3T1r05N/66uAe7XIZoFwNkwKiChowYCfEDgLutynkDoGHfenroNPE9TZ/PasmSEjKyMd5djvg7F/LDlMaaaXgSHm8Ya4L+51R3vQjmWFlJe/PwkCLK2ZIrao1UIT8JdOgs824sX1UVVRHw3Xqt23FhdSz4iQYIXwkPStQfxtJicUREbHtUNErA+XstdorxXhhhYQOwU4mZQLz8NoimLpbwszcvTK/f00Rv9MAVWD5hHoyHg/hM1M9mJs0WgvXv1d53w1MtvE76H5udu0FuuqwYoqA48EAPIkMRoo5z23dR7BEQaIAEAVZTcQn6kRdCesSro1vQjrGf0cVbFR8pNZlYwpjHK3tsuxjHGKNOAac5cyeYw1zNllJg1TkmoWGotdWCWP0W9omQsyZkZz0Hy2iDHMg8yr2S1szaynrEG2UqsHxJkyzkrwXcDIFjt7g8ZEAZmHbOmP2gzIzaOXD+slZWIT+mkOqGroajYAWm/ra+8xcyPglVJPHNXew50oO5nsx6bFd1Xn1ybYF0feLpL2M+nnkqOI256UcjrotQawk89RYYtoDPxnjgioWbbyctYjKeoqus0jPMfLCe7mjK6GPfaEguW1wYE0h7Qbq/1DexBJhQjoq4WpHG9Lg76FngorPD9NMndQbWkG59P0aJ3oPoW/emn6fuKrU5LX8A1xfdc12PaN2Daeic32Tp53hfEBkd25/b3slLKr9Cs2aqBqhosGijCdXnIbTxH821ua0erQbGbl06BWv7/hiiUipqGlo6egZGJmYWNnYOTi5uHl49fQFBIWBwGR6AxOLyMgqIz567duvPgkaCk4sWrNx9EVTV1TS0dPX0DYwg0iCaIIY8lnT2aJ0QkE9Yzrm9COjFINU8nQTfTIME02CG0cap8msYZspjzWVLY43m6FgoSCxIPkgySCpIOgvWOAAoajoxF6xdSiI2rZmlAi75/MDmatlr0YIKGdww5LGmyr26E+pRuzI0bSVKkC9YDAimg4chQ7BfSiE2o5mhEW2Sd9t0/YdI3bck2tAsaa3t6FooWI06SFOmCBRAiBTQcGYqKPRtii2mHHTrhYDHJuhAWBAwkBAYz/2EYhmE+wTAMwzB/Fn7BMP9hGK5/a9tW+ijKJCoIDY3eOvMq2C42YWsSktIUIEq+Vf00Rd5PAxah2YbAXvDC5YkKjpitlIq1ZaMStsFqD/TWysvgZfCuRQuFwDs+D1uVoIAlIpNw3i5QECwqrarrOk7l4QK0SRpbswXC9M5wJ1xonZ0sxTrpkVs+A7HcechSxdN40ccwLM3WtiRLpCgooJhZPR1N4zJg4GCg4YacYVILdUGFSYIsVBpDfD7NtSGUWX1oiGSJLeNCkhRpsbOEQEkDR4aiDWjZ7dHnj4myxpGH23bDN7BcojIurIu5cSFJinTB0hFAQklTmL5wmIEiDVr0+WMyPgvPkqdemj1qYw/Gz5eFe5IIL3CVsLCmNSJXMMmbjkU9BoynswKz2cRKkgZ3lLVpvPmyHYCPWLjc5A3TEc58tHC2LraxB2PlxXoAmXkmnUKdKTlYtT19MCecCf8okavYgh918qA6QHkiVS1tyG5GwLpRqVICNE6SCoR7fH0sm6dvg8eq4BbU27poGDYgW/V0vzqPIbN+eLrv8FJ/gSkucoHOe1X6yn+NTx9WYIvCuXz8YraAHLvTopyXSkJvA5ONt+3AlpvdVZxwGZxsooCrplZqYYAdetlhgE709NZDpK42lEtTHNhaPZTgUQiGdGKInZxNdZCsmJAniuVL/xHv4lqGI11JSAR+XBM9deUC929Y1sDT2/6fb9hW1X3DocK5fkpFsHH3A2qZ9TsItY/6IRthOn9VIHQddHGHEN5mAyiQQ3Lq4FLAulOKCBDtOvlRARAACPCAA1ygAQMAMNBBiAl8YOSbXjLphIFsXVhbFCYQECUAPVMREXYpmADBkjObjYEHmAIgJVgRIEBAonQafVPWJUI0cIqYFDGBDXROQhYhYAAnCLAkbGAAFA1QV139DHQNXUfXOVcHqKQw0VZMlo6tsDnQOmsOQJqzW8V3RE8AIP6TL/M9O3xlCIBI0H6nwzhA9OmcoAWtAwCkZUn/qBasCAhSLB9mlIRRKQfqyyBI/cyIXdwTmobs/VhPTAASSIPMjH08sjrSZugfZfkQwN9Lf/3LFCBs8wMAlN2pVCBtQXQEG9w8I0SxH/OqAq0SndVRr+b5YcmzB2bjq/c3z8Jqf3GO+MbqIqJiGuISklKa0lsGYoq44lgxp03zvnz78but5TvxZ2Lg1ONGHTfMiaxEqiggnlb9CEYfvBugRJBPux9NErA6DMgUC+F8jXRo+8/ovis1ZsGEVYfsNKnpcG4JjInf2oImukkG3hA5lR8mTwN8MaP0XJSCjW66AZlb18JeVmpEPvD+tscCG3PkbP2Xee8h1lYOBSluu0ocK8FDDtm9vN2Y72q2SJe7bivwfL4PXuBgwhQh/j9lNpchGJubnL707o1fp98RIwhiCy+ZkUPeK1Kd3MfQnwylwQY2w3rG3rsd/TD8Y9aoUPiufU7DihXZsOibVZ/0uAixK2Kx8+wb0SgBMcWKM2fqGh0PRsxhNWkf7IZK3tzHTshyS3DLSYM4AEJd7zM1Rz5oQ9/6udmdzSpyF87GmLCZ5V9WnukFDqUnAvqHe+/LCQMKKeWMLKdEnhTNtCQEXDxtJabVw3fU9lmDtK85hKC9V4l6fqVq2Ifb1mRIkR+ab7GNU6G3NadUxKih1UTbnAzVotmsxScIO+H+B39qgO68ZbdJZN4bu4upZc9TL8MD+GBCzDI2+sYV6Jy0OzxnT9hQumEV0wu0CqpQv1AS3tjJpNpK+PaIrYBonpXLUBOd6EuYiBTvvYE0zPTIRx+EUfHux/uMNDHsGxx2bCPTSXInDG3892+2OXkBV3Aa1unZgpiGVheZV7yBw7ZSCrCsRsfKhiCP7LVqOq53R5QYgmZG4ED/Pj8gciKpbFaB3JrG1exAceodolPsYsVEmkGY/hGrkteC680JxFcNIxctBiie7RSMgLjRFRvSF7UFsQigOhR6BooNbcEJqKyDBAoPwWm5R8WEXiHpKx08IEqDmhbf4W9WK5ElmJs769CAG7aHXSfK2BumZn0tQ991pkTauqMt1ccOiI+Y4bwNhe+6XdDI63ZCTwub+A8Fw2y0GYipqISboN2Z7EFAVTixA25TvgaQ2HYXDmfcqthuYF1/FZsB98gghDlwzcFdvnImQnDToJUWsH/7HqSYdXyb/GW2gHe2UeL2lHFKv8qxiod4c4CmAg5tbr8I6Z7ldudzykvuZ2sLKfy2NljsiY77yaD5wOZOM3+rdgSlxq/7C5DqTnTQXmmG73k627EPRnpi9T+HCKBDIwMCWQeACBfx7pYeIwLv8tEnSHREjGzD3mPRihpLVIKyfQJ07CBdddMElCETWZsCNyNm6yYje1ZcftBJyL1AuZIovkzKiBcumSouOeyw3ese9F7veVMd9/ImgfgRMk34ZWtG+afXQgubvTtpF9Plvt7rN/d1Dzjp3GDRCkQJPAEff7T8/JCxrzYGmvAkTpYzmn4zfUQB3eWrgIsCo+9UFSozAe7SM2jlxDM4fX/tqDzG8/a5z+fNxYz1Im6zI5x7lo0kzz1Bo4hwdf5eImBj32Fq9Vlaa5uNQFDQyTMFsBX3FzYA2Dj88grrOS7ebdJwJ7KkOsVZk7+WmZERoZbZNf7Ki3y8DwwswY6ioGx1sI0gi0TsSJSHokjiOtRxRQbhuuqB9bD7qgRbh02kyKawhIOBE8Z0zDRMmoZOot9RY6fxa+fUVOStpGDXK5qRht8wN6411LC30jfdpPNAk57HUUFAYwjL7LK/sJe93YBR8AoUjMHsjrf2bi/WLH3pC+Fm6a+vh+0R/mDIvy89BZ9h6Cp3v7B/NN5fM3w7PYt7Se/D6K7VbhcJyOrJ5yVwo/0zYjDj2BvI68jgRigdu08HAPSGp3pv3XmjuIa4XZg1Sm+jpdmsOGOmtGYn8Qj/YzI+/iS7cmqyiY3k0+/6H0UVzChG9LQDaSF+hALLbRpYza6xdT29RefKGv4FaZvutXV2DXZQI0upzE6pHOPfl47FBWfHBo/BVNngC5OB6UGpjPX2v0a/2thtfA0/+ERd/AncgdM4Eq9cLs6F2emXDrkcR/o8M7vb1/78H65ardykKQb9d1KuT4B+ZoAt/4JU5jNUEqJf4bKP+yMpoMPjLt2eBb6ieuJB6TIZo5teYOnaKhfru6v+DX6IQZsto+WbL6jhRPvv7eL2KDHjaImzjmSHBRCF+GxLzizqPXWo/E453kW+4ur8gHy1YDXm/y9hAP8SXBf2m/z6i1xTQZU7qgS53OTkyhRyDkBmYOAIt3lAxt00cFD3WgRMmdOTy5mi98zqrtxTcbl46syPphcFoL/0zsEHRuPQdFhteUEnrkNHpLQqxg7Fc0MdiOvk6ylKyCOcUboHx2YI0SOLW/u9s5AUX7gu2Oj1h+E/RRG92C1BxY5X9K6nQuW6pSw/xiKJC/yOryNuVkV8Zq+eJNzUTf9UtYK4iq/qK33mxmxnluSuiUftZEn1skKbsOfx6PvG47Rg/hkwTgpk2ft7AmeYfd5y+KrYzMG1r8FFYmohcWoodXUENWNLTmaH/Nbj+1rRV3uB6PQTg2LlZk5zi5rY0kGy97vBjua91XlO9uCoJVjbjr/UN+AadGVV0G9uO39nJ2O0rhFXo8srg39xWj5nkLFLi/yJXGJTn3grLbwkqiEMt2G/duMgbg7DGxZ4KYs2VDCuVxYR23BYRhgxIrB78giEKfmVO3A0tEV7nCOWcb5ak45ESUB9AFqOw4u830zLqcZZxPqT0DpVEKHjYn/Dj76fbBg/tRftRI9Ooo5BQJLFPhLknuq6khugam+jfsGXfoSMLmi/45FFSNHHK2jNACDfSH9fWJLpCOP4eLj8Gs1R5V+tqVSqeMeMj9QvOBzs/ZQ+Sfxz+USe8LQVio73LCZS7PUl5ilsH0MZiC/cMLVbNGuOne1CcxubMBuHZTkm9ou0L3LmY95Fi0DVF9TnGt0EvpXfH5he+EBVHO2oxOVobXtJL5C1OTbOrifAsWKgNngq8i9Iy6BSdlaJ15+tP7j+GHjhUldnkIxeoJ/fkCvCR2aj/yG5UzV44wpeLicprSQHJxENmll1Y/D5c3WvuYGk4anWGw/+lxReIHuE3kFLzdhnrrpmG/EQ/2WwBqvnfE1eTRbRQvbfnTf4HXSvfGCG03oKj+TjGtrBVt1G8MIbBFCN+7OirrFKBXctyR/a3OaBPaks9YZFM/8I+shA+Sszi5gbXkySySVXtzYUPQ5gC1ER6m0SFvCSUqtiMah62yUkxMvCpv+F1/Dfgs/yb1j8/4Em5SYk5Wq1W/Z8zOdD8zmXoN21vHRuTGp+PAY38cAru6hS1eXoEx78ofhAcmnM+XJxirj+JC2S2KNasN8s2RN0ry0EOX3pGHfT+0QA0bl5q3XM2OZ1ngCHewM188L+wxv4ZwjO8W+Z//+hMmjRzDe/Fg8zWngVL5sbm5LzLbi/jv5sFbXeOmokYMZSIt1rzWxTbpVPIbf5/YEF68kQzM5U6Ux6J1joYwNuizJ7kjJkzX3XXMxYpF8umt6t+jF0TVyorHr2aw6FWujtM/2nC4YZTkXrl7Hj2MEFKYkoGm1IEYT9AGZ2/dGx2Fr0khx7yD0iuEksi5geuJOewD5mMDjAXnAHwXv6qW+AI0tzolAhPlPCTVI5f1tp9gHQuQQO96UTuac6W3d8lvf4+HnmBLkg9cs6Y0Eb47/8s2jJisJC+vr+yV/kS/+VoPXw2jH1qcY7vTv7yorQjAV0hUumr5IXJdjkyzUrELDggt76wYa5pfNrBdv5PXt4NW7dSw4Qqw1PDRue3j7Uls7lrxFsP6Jk2LUDpJMvvjfCeqJtNVcaGGeoOUKFrejts1XPKZFQWHmzIRQLq3jJtUVJeAxhmGdnxpS380L44LtZ1M8i3qpj6i78Dn35pvTU+bLM+Qq/OLSURrsxOX8raP+Ucpvf7waATHZACbcihxflX5C+ycc9MLI5TfPxvODQBe9fLKyD0qzQaf/gFYyrvAv82+b/ZSj3wHCJyHjxsBBK9qzmZXOiE/MSMaiJyn0DDHrC8rFJ9MehH6jTV438tqfBosf0zsKqfKKJvHHf4vMf0L02wogk1pYdLMTVuLdDp+kHGL6TiAZxPdFfmDPKbKMts687YSTq3kI8xwTJGIBFo+I3JJ5L0Y/EBvH9aU5bucvg9Yj3bpvkqfnE79ZLw8sQTSpFU16aHL3A7zyVzaprvf4/fu1H4N+X6ka+5qXGV6bjUVgywahyVw1Mfjt+FN8UCR/Iy4xmvcQ1+GJ9wC9+ixhTkpnuOvXvZwULG9XEUX2MSM/iDq9J5qd6FrSuaSs+54YKXFxqWQF0Jwt6ZHi6H5FJrOsVrxNzaqLXgQ77vOUaaMLhU3ocmdupdbc8vJXCctFisunj5mvEtetGnO8QRiQ7MRe02y/yJL7uOQj35EurXawjiasA3sjsS1RPdtF8tQdh5qm4sJIRje2uJU+pnpwGfzxktnDd5lV+DSBiiGactYVhwrJmw/yv+8ud9w1X98uw2jfrkvXgH1HPtkynbcPVsx5jvm3mLv7YZCWYG6lCOgVnRc120LItwG5kbH7rA48Cohc9OYFbPyHb8MUefjk+LAdx5SbyMGjs6QIfFO3ItEl2s7eVoHQX3oIhYDf9OnAYpaNep8AVYGJr+aOw78jv4/Ydq8DDnUWSneX+e5H0hiT2mr4SzjHUBdtmS/YByxGqJ9sg4pzxu2vX14KX/OXZAYz0Vo09PM/QG7Bnmmo/1wince7RpqMbNz8ufkyhvD7UjjgfaN3gyFXjEbezba5nR6COCLYBePI8Z4B1ZK4PtT93mOrJ9dQ+0wTaFR42yFbN7+aw/107LQfUhtaOwm2+n43CxvIvx9NSCTdw0PTcMey55ZF94/pHxGG2b4Dy/hJ8qvCIFTOAST5aRddml12ON3j/157pO4PaX0VPjSm/Zqn9AFtGA9fHcoTan9NO9eQcPq/VicRjswUKsHTYLj5APrwP3Xwqd9zYecTEJdSOndNA8yLSFMI4w/8qDEi0BziMhQ41qOYu9oCdC6oH3vAnvDYuZCjDgUTisfkCz9vAnr/QwOP1fejFN/uY61nb8O1rL6me7Bna59SCVOYFPYRAlB/M8WK5OC9xxrASCuzZyaKKyxIJ7ld30J6A/PGAzrk6b1QQy/d4AcyEst4bYWlQhU/U+o7xWqYI17ag4bp6vAPfeknb9wLIAN8sD3yRFjjZE9S32jAKgxqhpPK4/ROt0dO4Bp+rDfrHb5OX371fUGcdOS2XKCTOF0Q8YJReBbdzAr0LFyPfqURseLE/kU1uP6O0kx5WEbYyFOcQW65Se2DhUssv/puHbOv69etI16Pu01xayABqPaPvwmBsr6urDfoGJmZXIRAVhcC087uJ2Z8q63fgdtR6V+50rkzxwOXzmxehhXyNM+5TizX78kckxpzcMqICRZUzM+jDnB+7O9R3dKhtHVHfSsLArsWoLFrk9QJY8eV77kWmErX4VPViGb9NpIZmmDyn9eIbr9D+5+GBaV44hmisndbhB+pbnTjFIY1gQ1ouyLkPe8mbh5jtrE0T76532DfNl/iYTrk8uplcKr68KJCR3KLeLVwaeiPP0tT6ISxBBYEcN2HVRgry1rbZd44sRK7P7IGLN156PWvd8DRwtSzNvv48glBeCMt5nZOLBwlG4oNq079W1u/EHaj5vtyJjMPDWcckenxlo8tRzJ255MEq9e1VqutHNNYr2xFMDGwVF1pFjVhH2c0c4DgwzGA2c5sHzi5arpkX+h7MbLKfbmw9/pmp+RBk3On2VGn2UJ0uWHv3Yiuux5vOsjroTvyt/eeb8Srcc45q3YkYobax9siFiEvkRVA+jBCbeAfkjmJTucGaZNhEqVvMXioe4d+Xjot8FNmZikNglbInIeX0qFcTF1lIRVrHnF8+qATGfUXyq/bZeai/djv5kLmSkd9+4ndUHVFF9KemXMYlP4Gell6YQWSi9WncMFHRSUeJyoDnwWesViqv/tCfyFa0Ej5m5d8mK2TAyK9eXoKWofVx8GGXDyqLFnq9BFZ8Re+t8FSiBp2r9Zfx2nQE3c3jn6tX4V5859WBF8EBWYtxDV73nfaczgGLRvKWP/7lj8+rby8UlBO0673HezW0dYkCeAH3HdcNO6y7rL59I9XfMBT1N/bv+EF5w2Yg0nUDDABggKpRZBUm0Sy1cXTTgYJkUkdvbwZr0SEgajbx2jxMA9OXxpCnQIrmpTkRg+6pBPzgwIQrLQ8POnwEyEnEkvOH7nZRQBEVKfsQbTqo/qw0l9zVXERJYm91fRXSv+SbXqCsbNsJlUZ/fOPqwqHrqQFlKTp1y5vufenFp/+qPfG/XwDAEJDHDguMALnrWDEBxKSSzj7gaYcFeEJMeEkZAVr+KwzvtGOq66S8QHkfvd40mNxjQE5wjnWhOka1Cirgh9FvYhVVE1os7brM2a8cSW8Y1VJxaZd0i6YT6ls0B3gF5TNYz+Jhbg+GID0pA9KxnrDojzGMVz/ewXBpuH/tIhfLPppZIkxqmHYDc17cXt+p9ad1Ph5mSFG0R3RG89d1sTn3c4yH28nS+sYRrQ8ahh0rx4orSofSBt8+AgBC9+1R/P4N5c/7Y+UHAADOv4qtAAD3h9frT+L/PpXzZCCAAgIAABAAI/FyACizZNCNuATQfv2lqlarpV4D+g1oxr0pXxiWqqgk+YPrGc65TOIPkyMM9/39ZSZaQgEY5ozufO9zs8bVWNGJsbmTBprjX3OSxSKx/Rg2qK2vfXTd6YMr053Z4PIU01kJxslgRrWKUT3RUJZiHo9+efwYbWPrq5p+PtOtN11x0no+x2lUFcNa0S8Z1rXN+dZ9+hXrwkkw9Vw0tX6q3jcYZZBuzeJ+DMzO05Ymik2y6SwJpTzp5dut14NAIcWU40snpX1ZL+mkiHIry3rNu6SsciQ+2E3qjqa8+8jlD/ftWEEPe5A+3R1EL0v6IP64UnHu3trn+2gdUwFezSvnWkV4ftMtFhihBL1bc5QeToGUx7UR0CTQA4U7VYVb1SMHVA7URqAX2Hk5gdxTYY7bGBAH3VAHqA2gh/qAbkiLEr78N3bBhvWbDwQAVVZR4IsWSNhbMSXmEDZkQjQMiKTW2BAwF4GKkLkEcCBnLoZJKgqSc2lgYBeh97PLv6qwov9Sr1iQXr4XT541HXO+uIGOiUSC4om+Ky9M+SSwYmIj74F8hmwEWHZmbl1bsVTCfBMfjTS9Y1yElVMtHyh1H7yHQxUI+x+/yVNebCwm8lMisZa5+IQE7+9jOiRLOZBrjFRVkO3WO2hNRlc9rFxmJap7Msle2acybJCNRUnB8AqPtIj4neykQB5QlZI+AAA=) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAANUAA4AAAAABbwAAAMBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI0ghgLEAABNgIkAxwEIAWDMgcgG5sECK4GbGM62A+KOMNGmZWUwcdhKI9l4Sh/WwYP/3af9w0W4ERa2bOg405uoSptTooGKkF8HniO5b+Iojvye4dReBbNtVHwcLQTG2gBzQfYOqjJ/XYU/jItwgxa4I3czM4Fj9LAAnlHz+dzgSO71Jqn2QML8H66dROj0qAFLYnRhtm0b89/erW/v8l/LA6we9gCizDBtQzSf4EtkcwDT6RtmgYEQXnDKGQslZyX/CkQSFgBAE4ERggEAgmwACwQgADMsONAJKVkFWEBgAJgwMz1NlLWec3G+jtZu+rXO1i7rx/sZi0AEwB5WVY28FUE1CORQAjvtSPftAwCQQjGAbTUfm4qwrvbNmDEf5pjR4JoxElAiYiMWjQyIAEy4EBGAA4UNKCgIMC7a5Cej2sCAA+SMEEyYA2AMQBWgCmQAObACrAAQAUAJCSDMEDmo7CztfXoRGu7SUeVdbvosOq6N6PHnZ2yf9l3eXPj/q2qXdkjBL+qrix1cYsqzItOvXfRPaMXkUvPeFWoxr7tZB8gfxIhMauBapmSUhO8d3O8wUt0MoI7UAxLzt0/zhCwJnVHrsPYXenm8suPeLYORWqn/3wwK6Qp+frDiYGvxHSXFzoXfpihfmlODl9oFbOqKa8nXbZgd6axNivh4JS8xEZKChij/nuDBPx/MrxQA/WBACCtK44947xa66g/k0YcALjxaesDuBuQP/7x/3bTwmQACVMkAAQYd/7HYBqK1H97hriqWIzlN7cD8Qu1mY6Ql7eR9v8qAcCY/apKqAgArEBCCmOEAExoJiOUENTgBAI3NSBhwSjIbLboV0Blo3PIiN06hxVFfmrr0WtMvzYtWg3SBPDjz58mVY8eLTrpNOm6NfKhidepk6ZAbgbym+oG6PoN0zXxUaBHgx6Demiy6Zq0GdIl3aB6ndo04r7WvSV0/Qa0Nd2+yKcNFCrSvh/6dNKO3xV33aBeEXxNZKTyQUaverfOR49+LZno1XUboBt4oSzpEiXLUSjZDgF8+JHBMIY0KQAA) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAACJEAA4AAAAARTQAACHrAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAbjgwcgTAGYACDFBEMCuQQ1CoLg3oAATYCJAOHcAQgBYMyByAbYTpFB2LYOAAQ8m8bRbBxQATaNIqSwUgH/5cJ3BwwO1YiloiAQlXt2uraW609q+MVEUfLxD9oI//kf3GY/Ix2rMRHhFjiGgI7QmOf5MJ/tbf9mQ6zKUo02CQc2SgUhdXrBMKCTQrFD/pt35/n5/bnvrdIWNFhgFQqkSNqgKAgSGUpUooIRmMmYGM2oWIw/UpY3xFEa1WRNZVVK+/RATsCUm+ZHZFQQPIdu7dICskhTKdF7AoTVu0FXk/4jzYzb5dIAyG2l/oA9bnj9ktvzjPZMS3y2P+wtYvmjoNFcwBUkTQyhGBwXull9AEGgM//XG/2ZaAnUwTHIFTrKmVyMy//vcCHoRMofKTML2GmyA5dT22FAWbJilDx7iq1Rq9RqywfDyikXftae7PZ7TcBntDWqmS2MjXCRaOkSUWo2Ag5H3BCQJ7wSF1OASpD9irSHAknzjh3Nk3N4axFgWKM8u/wnW/aJ+06HIwImitSkxkhPKf310yladsxhdi+kH6/EjQYMQDAOQyRKTOIBRuIHWdIpE5Itz8gCAaYA+YQoAGm1C1HOPZ4dwFonp+XngiaF6dHJYDmFeGZyaAJXX5hejKwIGJ4AGgAAxgObTCIJm4LEAB9NTaS3w9sxQAC8DfSCi83P4CKnTSl6cxI6nM+aq8ePc/3UdNAdzVX81Kft/VVtYrX51jUM8vgf3hee98kCc1mor52Ar1f/T2oS86+dvF+zMJmzs1WT58ULd9rIqF3bVu1nmqtC5oiWRz8meJ1SV+0FTZOXdFko/jGrgDt1DTneuGD1Wq1DgCsseqoRp/afFXad//W3KhrqffZ2CzM+i7CgbtMeZJ6yTdMBusi3cXFn/qOC1SlGRlWxFKDTBP7NKtHesM3LflHGhJnseIlSiZE9GRKfOLOf84PZ/7/4hGHEoKEsBEpWqw48RIkSpIsRao06TJkypINk5ObX1BYVFxSWlZe0djU3Nq+obO7d3P/wOD2HTt37d6zd9/+AweHDx05duIyQIQJZVxIWV6UVd2007Id5/283//f9x9z84UGsXEcAk+2dexDQ6K24tidRYBEPg0ZcTonJnCmN23Zg1AECK4D6/qpPW/MxNnxGYonhhmF3SGijlQ1jiGJUTaDfPIorBWXnjzsyNwWgxoBJ+vPSE3a6HZSOAzhGF69xIBHA+1PELtZTXfEozC4yVyNoqMjIUePicwAujCAwS4T2BVXR3ihTJjB6HVbsBP366ed4a7M5nTbAGVmZ3t5WLSRYEyQhzXT1YFEgKAB0Y+L48FgJBH85Be/+QOCOeschDA2MBgOjfeymIMI8uE0BG07Lvb3RW/SatL5AE40m7pND2d4OQMKUNmCBP+Al9nTQBl6AkAcnMOUKcP3Be66h0OdEKL0+bhng4gU4ogdGqEVemEabuET6yImiqMkWqI9BmI4vjURJtdMW9C2oXiEYtWJH4q/lJWVh0p7SntLh0qnS+eGuSIRaNCm4IRmaIdBmIV7CCIsYu1abY2DbX6b9JAUD1csPfFdca7NYGlH61OlsydQlwGKBRStKEBhCs3uSF2sQ3WwttXG+gOgVv//fgsnD4wRX4sTw9sr4OPp3u1jd7etG+jcQYDbJxeuEXwOA3n45Mxa5XxMiPombbZFv60GbDNoiCWrof3tbW2liy4ZNeaKq6LFiBXnjbcmTDrvgstGLCKAYCiwEhEHwABA+xvgACYPgM2jBRg9A+JBMDxo/2aaLAqbD2NqnoUMegodn/hb+hj5fsxaphNXx0llYYQKBZxi/kpAS1LA53dZ4XvliAjkIccTWucnFeWrwq107oPTt+6NGLjIoZeZDk0PNTVc+zY0j3mwwKKAh3xh/jPtxNEGwBod9ibyMbarx92mmshENYyAqqu+diDPL3RGnu8WCzws2ynOFLkGROrgMZyWXG2dksfHdg6P7Q44zHhmbsd8Es4NzQccRB7LppjzJ9g80nme63wweKhsTwkp1xC2a6xV92PJ1c79nrm97j3Bmeo8hNPBSTmIQtrFu0lKVjIRTylzz3IoOGWt0n3BSOZkiD2Ee0Va5JFJmEpfuiyz0h1AGWUdtinaJpSOaX+j6dU9TSy5yX4m4pTntRJiey+e1bLmMv+iR/Z4Ke92ybClZKF3HXsG2PYScTBL9Qxd3ufNDcRJY2GNnfYdcy5Y25L28MIUQYWbCALjdrDYy1DlYS9n5YqhGDgEbDBrCCrQutjteT9LRNry6yHtAQfYS4u7sJtFWYZbRo3XBg+lwkcn7g0KYccU0ZVTh2rWXYJuV4vVtRQQiVEUdgviLd2CbuoGQ65KS0xAslhfG1UFxrNRVcVbUY8oEJDqJjKtPKoe/ejESK0koArfWsNSg2W4Mmxv4sQxuolIo9ao7qDsKspvuef/sIU3zTO/5pwZo3/X+Ex2wLGA286niRQytzHrEa0TED6mFzjkBJJ+fqNBg5Rw17AvKAmwKuDPRZ7MYzyR1nl23T14qa2muu3cNiVzX7mmRrbTcRxJEsnbh62CC2RE8aQCMl6uxaVQJu8fLwXIzeP5l3oTM6IlLxtF0/N+lrN2LpBYS/JzGmwH2E3cSd56y1Xv2c//eGkcIGS/IXDyN1syhuBwXT8H3hV7kdcx+Jjf8tPFw0MaOfAPgiJHkmV09b05o5ibletOZ/++WGi2iz9OQT2/ol53N9vpANoYumK5Os8vpopT54ABo8O4Wl8EocBUfuXU/NfPzWlm+frpmc/SHelYsA03JgDam4CEJJldGX4TGYslJaKjjaJaMgp5YRYiACA2LTghRpLMHIRBlIS0KyUglT+a4hacIm3hN7PY5So35EAoVxEBWMTt6zdFn59vG8oW8wd6JD/FpsOlRDvfrq0da+sQHDPKWhaZRfISOYeADZja/HfRJpooCmMncJDdip0sci/1vERKkcFQRZrANoYGi7qPgjl9ptKZ4jK5gY5Tsj5GzCG7KLIv/6CJmoSFh9n2qPQpw00MoQPQfjFNG3vmuLVc0JroyLRkoNAQ5SHF0OcPKSN7a5TfaqEjK2u6RJQIC+9bq6MrfvSfZaoX4b3y7M2XldEVjqtzDEWfv/89htd21Wf23LgDy4Yo8wXImPj2d1/X/8X3Pj5t/9PCBTd6XZ/HuftkiLJVEV2hJ+nHMvLZO2ZomXZBOYwSJJphPOxcZTFaPnkcvOKEjpEoe1osrPAr8oovW69SkVqs4uzUBc09HdRO19NTH9ODoYlFU0y5nUU0+Ent24lIOZ+AoHnZlyBs8MUiVsBnNAeCF3RMxODxWu9tpjKpWogic0/PA78tBYKMqx2rZLHfP4bxpt4T08WAwqX6z7o2WTlZdywsgYQxNFvw5qA6WICf6xp2M6SShjHg4HmxbNDonJa4AcCcconEXUUiUhNZkwye4iDkstfT6hSm1c599zU18qeqGw6cluLK7DHiuXhix8wjoiuFUjXhUCy+9VxOx5SGOE5mXY1RFd1iudfsdcuPfhYOKxOL62TqM+swMCYV0U2+jiTr/kucTgxJRn+qF3vYS14L2Z5lCVOSs0hayd79WCbg7w4+rLDsfqFskbWjiHar8o9loTRD2WIHl5UI3AVW+vj5Ns0OvUeXLkSg5TPg/uFm6PYf0FztUSAOj+JRa4FIZpc7Zn+l50wN4CikFoXgYHrPT2W/L01fY/g1e/vwz/8Uu9YHAX/ghfqUl9g3vB67W5T1jbSJmGZfe9FUevNe7Cn+l0KemSf05tZnY9sIL35ozHArKVHk6OVH00IDMUma53LQEh8broPjpKNZKyUv0DwVrt0ysd97GRuapkfKtsEVwm/1lzKbSKmU1s7BKhysDeodPC7sUL2+uX1/m9Ru9ju2OYIVJ84sPnbRIZX3WSN/2Bxc4ZxXjFr8EdQCL4pLv1N6SDmrMoaUs3z6k8fx5/jCD/EXQpCASdJuwvOfWp8ka1EA8XDzeC06gKcGG8urq1yQgvqFlOrs+34WxR8NL8aFZMeGLMKyBTV/AUyOHTeBNvW/4gP5xbv4TfzxR+qVeWBOX8Aj8OYqXh4YpF897n7GwAll9nVtmf/fqqZVpkOJBzbXy9Wu5/59gaDxbpgpCNbIDHYQHxteEHwpDdWodD/MnEsK7va+725yqPsqn8mlC7j2ZO1hlKJHSi1AALcJe1yWs0DuIxVaeHRyYgP2NU3iT3BQoS8QC8xs6hnRQYd6mYPSlDhiov7J7LBgrAi/vDFXn/qeerziXgW+j/CWqToHG/Ukw/U8/DfnBsz+mWLdoDVuv73R4nGQGGn/HyEq21ctliGWmpSbgpMBjC4VS7QcdvRWmPA894TSTC7oOvsrqhGrwR6kplzDS+eBlJZelIFloq1pzDBu8TkXvuy0z7GXtE5qftPx3xGdqBlmsgruEioXgFxQV1WKctDWOPCanj7J3DC9wByaPqZ2cz34zg/T/MZVZvjcT/gz/K+INq5B87u9QPO7w67P6s3Hq/Ej3dIttIyH4HYoXtrB6Y/q9uEvJIG6XKW6kKQx/BUn2Mpl2t6BdNGZpxW11bYH036uU+dmNBDB/PoXtesKigfNHhrdVrsJCnvhx/kClfMFoBF579hj3X/QcUK+qrAHb0Qnh4k15D1SI1+6EdM1wIebkI+5oXRvhv0XRIoo6Xzgl4WG8bFbrG2+v8lBS6XQ6/18VOJyXf1WKlT3R9ICyXZ8d/iwT4DKo9m+b4AWX3nwTngqVo9GGoIWxDapsvo2/Ptc14IfxO+9Pfo6JDjLH6/H+38QX5EYYK/A3dFAHS8vwobwtdkxy4Ss4/BQPKWodjfeiY5Ok87pBM84kwqC24JQLR5R631Xt7Aar8G3L8IvbiN2u2b9Z3qrNnuoj/Sxpha7gd/QkP7MjNlNKc3bHI+6CKV1OUX2Ya/i0Y9tZ4gh4hfBKGkNzSnIBxwVOAO1xDv1VegQHlysnvwE6EbyCg+0fz8kpqGbEdY+Rc2h5V14Br6jWq6Q5VaYuwXfhI5PUM4v+27tK4vi1hQIsGpCZJnglWF2JZ6DDV6Q3gcyGSPVTXvxbrThEedsxonZrNN8dUZeOVaBYiooGaRZ1g4QAmOWPmoxe4Nn6uxxqc2db2LOd20r83ABeSMLRma3xM4zhzvRf04s7oXnmiUyGxgbNsrzLJz5h9rcXcxUdmDl6gTnx6uyLQLM7nOWWhHr6x/otuLNuGUCAoYNjxy/5iC7wZKXXlV3Co9C1UFSrht3X8I34113OWcyz85mnXczEs+swNpxwZBGwV1h1hm+TXLPrRKtzqV0sGfpRy1ANtNSqrh+4zF8E9Z2n3M283SanQvvjJFdilWjqGpKBr57uFyUWVu68K9NbXg9ut6y9hezS3xvD/lbYzteh641h/xkbPycQYiNLA7C8rChS7ydxPDSqLYwfBMe2GW0lplL9gMd+7XPVvTiayrLpo1/vN6CVH5yeyumsgU6l7HWq7o7jQeSjhDa/p0/hPaip+dQ9ydAfH8BH3mlejQzg+Wc7BXGAkgnCdGFXfe8s7BhNHMdbZ4GFBARFACrM11A1dhWh3RK8cjpqBBtLtHGFdOYET/nynMrQPlDjJrIuP1KR/bpkGBffH75STwW1UdYHKbnZp6ZzTpvpEotSCf0EcMqKBW0g3wMXsNKto/2jFBhyGIkdCpkapRkZPFW+5X/qyNwIsTvBUmbN18l6puPA5t7ZtAfS3HS4Jul0AVaC2B6SVPlkr/CnpobuOqIqfwQ8MbGTRzt9A0dHWzN7O3D7J1zco2d7FQsXW/uD0I7OzB/x9gss7kP5AJAwVL3NoziS1+tFIihxEPZO4iosZYoHtTgw8haXgsJqRCzzO/NrJ+2XdTwTdXRdJNNEqqjDMvrlfyymGhBHgTwevF8l6zOo3Dpa8JBNIF5cugXi4yun0Pn8JL1Kc1HRn6Y5jJLWLtde66ZyvVsUcEEXF+tB6usPUoJ2wkTIu0fmQ13xAmORCfNB0sn1qGDhElJtV+sXHDays0442vktnfwL96Njhwgt1O3Eg69P48Yrv76rMxsLABl+zFcvnBI4fldz33z0WNCUElPzUn8EvEKU+YRr3Ezsya7Lx0JUKeRq6b5Thuz+9ZGW0+m10Vp3dsF8VhrCN2z2cPZ7P6HdVhbtU71ce9Ec2Yj2CuJZYXc9/Do7XuNh6BQ1bCWHmi7l1JBuixD9uVu6UE/6juQPwpWjOzogba7WWXkK8sT3haIWXVE+9pGQGep1zfxcrpcS2hRWy6255zCAbofeB29tpspuPZQPKW4Zhe+HjpjBWN4jhY5kDvQSL1dVogN4iFZBt/nFXb/kGmalW7as/JInC8tLqjED9XikXXed3ULavAsbMsp8J87UCg/UEA3YmynfME4yVy5gdzlaFEHZS9HC9a+odnKp7JB/O/ACzf2ZvD3ftEe7i/8gy6tB01+Sjsoy4G8X+JXR7keoVMQsVz1el5KWaWGbE+lZlrbIsirlXQZyvVuMiqZEKbVN+jK9dbpFj+dhcCqYZbEjNSxxzeHkKUbV3UsZEmZykiMXKUSPVNpg80Xyh1VxF9XiiArsJTcVHXgNL4V2/hOYiTrjdTRO2PbkA3Yc1RHm7XKFE9n3XeXJjXUE8rxyDjKAxUhfdQCFBkb+iWHn13fjYbDJZedOHPJO2a92GrGUA+4cO/jhE8yD/QJfvQgiWaLb0gsmOrLrt7dWY8NYnddFK5V+Smdw2gHs62kR8RiFG7dsF+yv+9xK/bsht3dM+FMD6qdeEJrNizlVo9Q7W9x9l8dG0B26D+lc0n6ufK7qBkPBuSPbKVH8g49ubob2URLLDmdoDUkO0rzGQFnbjP2oDR/gbyVVLTSq4udELCn9hWejUYD7bx8xCJLOJXHlHyYTrxoQiShymr9NvXMwKF8cXtpShz1aPmdKnwvYZqtOtdCjiUmGp3JDluNDZEmRFr/wVuJ3d9H/FbfgcLRARdr92ht2QKm2wCzJX1XkqaYM+aEnMgu6mLGhi8JD4hvjKSmP6ZjseuLV+N52M5LUrtI4Vjh+g3heB62/bL0XrI3+GkMa72Oo2XX8nr3AefRw4lb9IQ1Kh+c2F/xDdiLougpVuvm36kuc3MhORxofY8BvA1i+wd3DdGphvqveeNKyOyXVJBF2EwM/U1Rsd6H4bOGnQ8KoxYMo1ypozdHB60dWYoXvZaWKF9iqCeDusBzHJ9cKvEultfZ/WeqvBwbJV6lyzyUaG6ll8dtjcU6Cb2hNv121jdtIWNwJzGatovhsppsJ/AE8zkh+ySW2bOv+yKOlrNrQV0jZlfXXZxlyG2f4bFGcDAZ+0CtPNVdjVegLV2lB4HQkGvv5nEWWBr+Zk5OSbirg4m5k324D98BxLf7BlcWh/jmZQqCKgpDArMy4v0C9W2XGbg4hwSLLzNwdQE1TFjuT/J3Sd96hd7isFSAAmMTkR92mJwFVhs/0rNLG0Klx+OtDC56YrKRG8jUtLLOdejbxtXcUm9MLgp050W/z+vc99f5QdcZA/acR1y0m2tYuAM/NsqFHxES5riSr6Di6+1+95taFagOvWe2TYfS6nrjcRarII0ugW3FCvsVqI5gAvMmfJe2cC97U3NXh4E2d0ewO5KeSBlMF1KOpMcpXY2xyBJaZCWBnv5DpURuaXDoTkzt+l+1aw4QoaY4vGknyLT2snO7pFs6OP1SY7y5K8Qj+I2n5GNCoIzuxoNQUSUzlt1vItOix8rVgdUPxu7L9d+T7cx685/9+mTWiy3MbFxnt96Ce/P/JHz0ya98XiVCdeN+ut/7O4W2nW0ryjkekz8ftss6QkRH9anojW9izRnWOT7PFfKHltsYtY9UXFlCaw+EyM6Jjw2nQwF2fk3MTjw5F3RIszqkU25lfmXoOma7V3UNbS2nqZ/cA7DKYemtkqo/rVVlcv1brQYuyfW/feI8R3POuez8nen8Vr7/AjYwINdfSqn6Rqq6V1z1Uu9qkvFAv+JAbLmhPdiQPdC2s2Nwh0tW0idsT1iA4QbzQULnTd6IwSqhka0bj5pTTvBB1MHszfaHlcmzKH40u5Zjhq4izZHM48LUIdkR2sNxHM7Lh8gvUo4oHZHv34d4bieQfP9hXcofOPqxQb3go3z/MMqdOocp9I+DdzkqPu4+UmvAddMjf5jEZ7JgKdYxMgk0WZQNYO/w65GsPx58F7yONZns/LLnDjdKXpzTvEaqaQbdjNzHQd7HHjI3XCLIwuqbveCQLiK7yd4f5avvP4gyUDkvPGDaX/3uVIBEkST3LGPjRT3342qtYiZIsugTSdb/Tdai/YRXJMXPZHcwHIzt0zr9i3WGksxMkD8wqzxOjiWUuh/31crtFOZtWgxzDNJ4Oat6w1B6WdAz7UNL787C8/em2u8XtN5fVbtxhRN/VfXG1YKrC/AeFlnX2U/NF+eNgBNvjhlLoqqD1axiZlJ6ZTxuBBAlUU46ne51XaJ4FZ+VReCeCUZRPL/XMldvvNpAKMGbTtIaLLnHiV6jUWIe6bpdfbT4lVeOyN934PkLfAkyXQng2pXvGVrJyxHzHWX4q42C/mRNg8LuBtCU3DgH4he3Q/c7r6R4D/fwGAePhJiuyPAwJ8zbRr3Tz1BPUTMC5AJ0SgO8CyWyJPJus7IVH4NjasMJhd3Hk/Kudre8peGVx6WHd/4k8Pe/huVHr07r46fT58B0uHpBYfd56WahXPMkWE5xrlMqOAuUDs6469wy1Lq8khZ2Utm6G5Bocm+52BmgpSN7p2XkuOzQeaAhPFfcarmh+5BmN3o233Ak1tjmVoDx8eG8M/zoX9l4NNZsyQVW7B7AWQ7y9YaN67zvDvw2i7DjgpxGfUh0I/t8/MUocZ3guPRNOdb4ldMLrgVeMvX5aVyp/kbJwXPzG0zzvKiBe/9bAq2cW8j3Kta9ZjVcwd5l7S/2gcPR7KAz8O8CaAIHAMiwhOANgJkgiPWoEsmT3DK8FH3QSD34jSy2SaDnS3gK+EgPmYTJh1oAEIU++oncmPxVFfJcYC5OwhUFDtzQIyQIYxn+AZVfdkX04lxXozSJq6AXWUNKASKMcIHw15JXUXwZ2eaDomtJ5B74iRh7/DSQbqgXORlxmgdU0l3hXq4r31JXh/9I6cpK1vlohccvBOmG7iOB4WkloPJ2GNrwr1EjIpARFIM27oI41aSV2QdfFAK68BSVxUpmPm2i36T0RAVhq/REevpf8UWHwjrgi6LrV6h27vF+a4uUVpGG34HSI278wokoGM0SQGVctRG9J0Z/tEcm7UR+aes1mCIs1i2vSM0nXK5BbFxffLlVx3RCtGlUWGgsfeNh9QARqHa971XZQvtf5RZr1w+Fm+/Hp8Ea12+Ky5LmcggAgrBoXbrCyPY7hmnX0C//vHO9GPTcpv8P9phesLsqn5Z7BmPDmWmhKsy6VzSXerkFTql+7IK2ru+oDAvNpc80CuNpTuV5zpC2+5rlGmOUliyHPmDPxcXXOpfdnqRBtAIjTtvVIqmwWLm0yzDf6j5TD57QEvdYyyvmOstGtjRZYRVhZRAlcGngETDGGde7lfvtcBZBQnj6GqbOso3O8zykMA7l+UjL3HOZBJTYMtSHP5V7FES8dPeekXEP0WwZ7kGy1CUu2OViCoOVajVOkc6VrRWlK3y10g6F9VZXnFYCGuUWnbFKufkLddrVrfK5znXvJ2vYBfxT2JGx3xIga8RcOUrJZDkM69+qdNmmXSobCWHo+m1E128kb0XMG/GqWTN02VDNlb0VTuOutWqIpMWR186TRl7rAkF4Rwo8LcfLdiMvE/j2IawwlpMsKtAon/4yrKRPN0cyQcJV0ineOcBR2H0mPF41u6CQUVBJKUrZdnjpVVxlukcklXrYackarovGFJ/9S1KjgUGiI5Tzrh7/M636OOblcA0B8fE8RLVmwmAUyqXPjulSKvFAyVNTYYfP5QdR8ovJJLsxq4/+owPgXi4ciJYX5AS8H/OtE0ELxJfTjmV9yEcD2/EXxufqT4ERDxRMdfaBKbIJ2K2QSERIwBdTcrrX4nJG2A0EMijID2y5NpkQ1z+a5rXY2Gt7UXnvXIkJ/J9RKGPgJ08DPGBFFKLL3uMz1TY/5M4220z14/sg31ZzBZp2Dld2+RiV+JSxP/i5U5Fxfeh9fVBanAJnOI4j9adpif97tKv5htbikGmx42UvKwj8AXAG/MVpQgn4YbOta4njIwPUtsIxqTZf5CHjhvYBYM38wHpa3zNNYrEriWuRHBuQuTj+O3yDlnynMiQT+L8dh4Sdqoxp5jUTWnkANZsKwQ9tcqaxeyxFPuzow2mCBfyeAfVGCE+FvlFfu58uaFl+1yCCOuXFmVwX+foYeFQOmHb0WwOJi7WYV3tbjPDR7t10/avx+itFwHIfAaSEvvXfVM1hlvH8diBtqeli03SxFoFMp2pZs35tVFhT73PFXIZfM6Gf82g2pkMHmk2F8IfQxiZjXRuvaXx8p1MEJ8Do4GkqB+TfHcGAZKdhkDpWjsE5PC56B8QP06Q+AP5Lh11Qqt23ORG0vB0/DqKoBhjdMu2I10xPHQgkaiC7ZqmllROG+W/5sMniAEJ4MsfrMU3q0yF+Lf/kVDHo7/go9kt6Ew1VYhyYiOqS6i+7d15cBiI5TBjJbmEXPmNWyaFl5TmvueURLkOVI0A8OVaSJbANrq7SWtbEaZ/uF5/ACD4QwHba3Oey6SF1qz8oMhsAwOvPbF0AeAvfn38fdXw0yd3IgKHCANDA6IqFATA5IBSp9ZsAel4ywOCdIh1H+wfIfWso5USlPK2etBCP40hfCdlEq1ky7kHwLvSJde54hEg2VkRL6JPe+Z6i3i/qSxlrxmsn+piBfrzeeX3lWb0b2e2pdllmPYFlN6ITSa3FHoTZiKAUf8UgSGFL+xk3sfoazJ7FvI12FXSQb/30eATj5205q3t1zP/TB890b3U1ENbmWqOJHoz8qyYjSYxNxHuKpf0ey2ym23hUewmV7k6lOVPKdGo9BbuRQDFjebbR4mecNb2KSVbIH5PH+E25xAkaTFb3A8O3BBNP8M+ICMN2+m2OtctHvV6x7WsRJQSO78BwCEdxvbcWhivmaLZsYw2tgYP8iMTKe+y6Istei5WrajpD6r3fph9f6o7v0NF2BgmJ4HNalKjnWNYv6mv9NekL2jdbBM/Q2tki+FmUCCw9XTwjyraS4Tn8mS1GHOAdIlHSeHg8jGpaNRtRlC1PNjYw7giUooO2Ij7wGhGC39G8iWib2SuzCSBaiIEvYYrIIR6+jBgiMlFKVZ+sRHPd6CBPSttlmoXIVUQa8ZsrhPgjqugBxFXtBcTWNwcQWUQXpFqoua8lWoneQ5+oMVA1/vn4dTXXPWpEr/JBIMBAC0kBiOLOYAkMdiCSfLixaDjUqQA8AakHIiu0B4YhtwdOW+WwhB5EmvYJpPD9hmIEfmL/zykhb39xYsTKpMyAHn3WRZmzFMlvlSiqT1fJIuhyW0dIzPEt1jNEHiUroqTLHnlkosJXivVcyHSVecx+vHGyJHGVKVyiOBHqBZWf9YAl7Axx0JPrFXTrDJmyrH5BU9PF01katXszpbKwggVzuG6oTapwO4ouWeliQAvdKMmr5BnYnjtX9hx58hO6TkUfSA8ONAcUT6QEAAAA) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:italic;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAALsAA4AAAAABWAAAAKbAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXsLEAABNgIkAxwEIAWCdAcgG0AEAB6HcYyyEjO2Dy0eKLv4XvfsrGs+wIhEBOHOERRRTI2158fc/aln0WYmSJq8uTRSIgUyIVMqpfa/7uYHCqzWDuHREj0f5UuuL+ZAokTaYgiIs5sF5aUutjO7QhBlgMaYvCAIIqqoCggoq0+HjRlX70MGclDLyR3Z8fb0q/ectzCv30obmLesvO5hBhRhcp7kToaLpaRXpL0htKmb5C3rIgzUIwA1fnqrhHSbqXhA3v+sK1wRtcWuhdyg9E5tGXERkaAhroCGeNqCnJxAm6m1Sb58SICvFhXFWnVAAWQoYRjYADJUQQqIYm0uSZKkfpYv1sv21dm9b7kWbV6i3BQ2Z/sOf/hl+ezXH88LRz75pnLuq4/MO/Zx+eyHc3x9VDn3yfx9n1ILyusq3ps75y90fVZ657PJ2iXgF+odHbvzv7Lrm+uTsPR0WJqYcelN7180rHDDnbeWbrx0QHht49uXjCzffOsd5RsvGvHe4yF5o+Ej97/ZMP62+Z+3Wz/08CtZ/FezhpdvG/nb6PMhC9vNvHFx3Du9X47etewROuONg4L0v2eI+L9X7dt0evq+gNihfvWttiuWK4f8VmxWBM/+WK8b8F6Y9evfLf57r9SjuA2URBAobPm/Smni3y3+n1TqgQEACsl5awAI/5AetjNp65A+/38vDAUXaayPL4CMKHYkEFC0DlfIlbAMegyqlmGU2eSTO58TTHX2xLyWvlczc/wY7eDo5WxlYenKyMvNg9Go5MAatqis2Jty2oytLaPupFxOlsgFObsjM05dBxMHVwcMbeFma4xFh8jZxUr2e62Th09I7Bd96I2RI3gzYzqKcsHjqZzGjsamlojTwdmCy9bKFNm7IBcudRU5BU09BQ5eTm5coMaMAw==) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAAMAAA4AAAAABWwAAAKuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXkLEAABNgIkAxwEIAWDAAcgG0oEAB6D426JQgSiDJGrY+EepR5ejwf4/fWd+/C1EBKYZDS7sRFxHTf9uCJn/m9Of4qsOwRQBbqEex0QSbKziM9Pj42dA85/tYTLU84Cj+f+PIAlq3AtV5GCrQWUqr11TNFedSEUjKs7rSju46fX7RWCSHFAeYQcQRBEKIqiAgIKlGZBdO5a3w4akEBWj6orkgSzThrq5iF0WjfiKGe7e/0dAHkwOR8nW+GblHR72hyEGmzEl02NcDPu9oBKt35NVVBcoyEuIJNhau72SE3EHkhapkdqCiZGhBhliQWUJVETSCQCNfr8o/boWoBjI3miLHqQC4ojH22AaUBxFAUpIBJlJeIVGIvLFI6PlFi4hGYVs0brZ4ZZlT0rbz1SLT+50xlW3X269vh2x+CpO/n7bw02ebvIys0wMkpteMHUIq4PGfxCRBdKjxXGaDRIc42rK+a/qgeebsfBvjGMiQ14cnJjW8fSe6fHlr2NIrgbeH2jS+k9X+md9WJP/5IvZ8LRg1cQ3gz+dJMePnr2/6ZSiy3c9rHc87Zj4tqOx0WLe1U0VR2OOEt9kq4gV/r/NBEyVbPvpL70poCoTunu3LVVZ4nW3xWV8gAKP5VqBMD10Pruq+7/52x5c4B8EQjkzs5oyJ/1JzxT0mgEACA3XjUZACFDut7UuAEqPZepikCuTcprJBVAcSJREzIBeaYSC4kSGAs2BJU5IFLcQjt+sxNAqr55kwOx947iBrvVCRYwpBuDQusVLFWyFCmCVcEwCg8JVsPPK1GwEjxesNZJv6dyHtID6dYP8UnUCvPAemHBGiA+jD6CVgilD8+tWyfSPRiYXwVJDNNkydPUzvrRmeBZvFdArqSTDSCJ3ALcvDp0JBHWjTK8pb0Qvx7N35CkXo0yFRq1qZAgVaJkYiA7H3AA) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;src:url(data:font/woff2;base64,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) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff;base64,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) format("woff");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff;base64,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) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff;base64,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) format("woff");unicode-range:U+0370-03FF}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff;base64,d09GRgABAAAAACF0AA8AAAAANPgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAALcAAAEeENMPgUdQT1MAAAIQAAAAIAAAACBEdkx1R1NVQgAAAjAAAACqAAAA7qtPmPVPUy8yAAAC3AAAAFoAAABgbptl81NUQVQAAAM4AAAAKgAAAC55kWzdY21hcAAAA2QAAAE6AAABwMYS7sJnYXNwAAAEoAAAAAgAAAAIAAAAEGdseWYAAASoAAAYlQAAJ2AKUboxaGVhZAAAHUAAAAA2AAAANhL1JvtoaGVhAAAdeAAAAB8AAAAkAzn+V2htdHgAAB2YAAAA4QAAA2DBYoWjbG9jYQAAHnwAAAG3AAABzmtRYgJtYXhwAAAgNAAAABwAAAAgAVQCg25hbWUAACBQAAABCwAAAkgzWFNlcG9zdAAAIVwAAAAWAAAAIP+fADN42mJgZGBi4GMAA0Y+IFsLiFmAomyAhuVBtwIAisFwz4LZthHMtm0rmG3btm3bjvZot/nTLywTqECdakGb6sKQGsOMWjKBDRyoExO4MOHbjXrAm/rCnwYyQTBCaTiiaRwSaTIyaBZyaT4KaTFKaTkqaTUT1KKBNqGZtqKTdqOPDmCQDjPBKCbpNGboHJboCtbpFnboHhMc4Iie4IJe4Zbe44W+4ZN+44f+4Z8KlABoAJwACngyH1YAAAEAAAAKABwAHgABREZMVAAIAAQAAAAA//8AAAAAAAB42k3KgUZDUQCA4e9sV64QyBBywRDYGyQlpTtLAuLUTGo6FhPcPUV6giTUK0S1N9s4Lgb/j/8XsC15s3VyWl/rT5p5Eh/m909iGr/MDBbT2aO4aJpGVMBqBbrDUV3pXdYXlf2r0bDSzy3QOrTuyH96niS7mXuZFQK0TxB0lUoHAoJSx47CsXOfvgWFI2c+fG0cPaXo1p2xX3/+LXMpDRy6MfXq3c8aobUpZQAAeNpjYGHZyTiBgZWBgeULyyQGBoZJEJppNYMRUwWQ5ubgZAVSDCwLGBh4gPJcDFDgHOLixHCAkUFRmH3P3xoGBo4S5hcJDAzz718HmiXLmghUosDACgD45RBUAAB42mNgBEIOIGZgEAGTMgxM5ekZJSAmAxMDM4hkZGKcAKT2MDAAADlQA1MAAHjaNcrDopVhAADA+f5sW0fZtm27Ntm2bdu2beM1wivUMlzfWQ8i5EFZeQSUlTfcQUxMXkKTMDSsC4dCWlQlal19a/Vz1X/HYrH7sVext/EyaWkEoVkYkTH+RhUzxoaM8StrvMwdkNYE/g/k5zV+XP9Rmh8Fvj8WxGzwjlAylCdUJiQgxAB5TBGZLK+pCpqpsNmKmKOQWYqbp4T5ylqilIXKWKycpUpbpKIVKliuslUqWamatapaI2WzhI1i1kvaJK6GDWrZqo7tdqhnlwb2qG+3hvZqZJ8mDmjmsKYOOai5I1o7oaVjWjmuvTM6OqeDszq7oJvLurqki4v6uKG363q5ZogHBrqrv9sGu2+AOwa5Z7jHRntujPFemeiNCV7Lb7q2Tunuir5uGumpYR4Z4YmxXvjqczrSAlY6AAAAAQAB//8AD3jajZkHXBTXt8fvnbITMQILLGtA1HWFVZG6LEtbsKHSmxSpwR5BkWoPNppUxfq3K0Y0kX/sPfGlYu81XdPtaSqwwztzZxkgL+V9lPadO+f8zr3nnlsWMSi6fR3zOvsJohGHBiEvhOJUcpWjXCXHNjL1ACedzttb5+WkHiDjyJ9e3t5aT1tbhY2Mo72EXxWkWTRj2fqUbmg7ixv7W1n3yw51C+vnZmfR09bOkKBJyNSMnzxnUN++g4Qv9pOXV6ex6S3bKcbWzs62URYc5R/Vs6fM3tpebTn8jYA3Ciz4P4Sm/ZydEYUGI8SUsZmgzgyh4SpajbVYjVU0PdH41cy38ekv8enDxs3403s4g9/GZrZswU+or9vbxfdkv8ucEEYIydBXPJLoEYnew4TyOsGHiXLoBraCn1T7j9D6ffBtgaxMvlWcylqlIF+ggarn35i4D6+inir4wVNwAb9rKk7kHfgIHFYvyqnmXar516rxM+qH9nbRHmcDflji5zO0CH5iVNz+E5PDzkYO4MXTVsk5Cf0tU9jY2mo9vfVKGfTwQErnZTWQOl92ODZz+Iqo3NOFOe8VFqzWJwedrd/FP9u8DfdiZ48akat3y3p+7cKLmaNd8gzjG7Dhhx9xwHaIUfRBfHMm3xWok8sl/iVa2oU7SPyLrlzWIvE7aJnQV2gXxBYDffUqsoMovFwptVqu9Qyk9DbmtBpSCpLGil4XvqB+zPaG0Pp5IcdC3ty2L57/CDvN/e7YDOrIwdvZA1uPus298/Y7v25OVLOZ3iv43xBNRmwS2KWRJeoLlhUqHfvX1qkdxlJ6ieghbOWfPdBsaWnkXzuBqIh60guvkrz48iugHb5lMtSLjFMr/G0PWnqCDjmkgPjF4d2Y5ykqr+1r2tyGuca71/LKSjazBiyQN0gWWopZOAh1UE4u0S+HSFTWItE7zp30iETviZTXCUoIJRmLSojCFBgdHWSSGqHgAU5CzpD5KqaUOdWRUnKVRiWXyaj8Hc+WZey4lFO2P+aNoMqEsKqc4XE75oxdbOCfKfDltKvKzTjg8X5stj8pInSGv4/f0ttbP20pHNAfN9QZZ3mOBiWiRxKhrRihn0Q5B4l+EUCo8SNBnUSbDZ0WWiR6xwCRkBHpIfZ1JlQjGG65Cr7oVOOLvXupV/ZS1cZ8NtN4nBrdskXIPwbav0PaWwijo5beYSFjmJ5Nxj+amigzHNWaJBQJ09snqVH3SkpM49+D6LUX9ZLevIgQfc803uJo6+C7jr7HX8SebQ+xJ3+RzaxsPVRZyYRVQnsl/5QZDO0hjuBASicIhle0cjW8ZiOTMRwuOXcnhlduNX7f3MxY+da2o+Yam/KvV9ORre/V1jIj6tqUhbf3z7YCRcQ36de+Uv3qoC0SvYM76RGJ3hMprxPUS/RGdWfb5xL9BguRrmj/if4GlFsLfWdjTkFJ1+hJruiEgL9xyTpcPvnD2IjkVYa6Dfw0NrNtWsLbleOGGfJ9NEe30UjIdbDBUKQPHcU+nCiMy1Xo2dVk/vaAkYQhscZajNW4eO9eM6pvs/F7athtGIk3qSXGCqOtoPAqZMlqoltD7NxyAYXYAux4gB0WrAjjymGLJqrAhs1s9dtA6pLwnNS3wWJ9a1cg4Kb38kxchm76tgsUfIA1id4KktpKlENn8Xjj6xBDDHDXjhjiNFiJiYL1Y6l3w4zvN1GFNvhKLn57VttSUU5n9lqBWtyXVgi5iF0pnZDBtrw95nrItj3Aj/CrZtuYE8qs+oZoYyS8O8xhw+fzqX2Q0VJOChG5EY2f0Z1ULtEvjYRCPOBPorfEmswnEhUWaACMa+eQ6rSwatN/0kX9EJkzcIR6hNZ/+N4t47pr5BPd7PMVdiERJfPXrcG7/1oyhdIgA+LY2eDPHvzZUDK1qQZBCbLiLCGrKLmlldbTionLvde4635u7v1djfdyD69talq7cXfTWuq/l/n3D+3DgTeu4BFH9vOnb2JrPJC/yz+Cf99gFUQq+iDzwss0LyTKFUn085TOtkckCvMC0UAHAh1NVA4GnaBN0UWro5LjMMdp9Hqs50AwKZlWci8nJypp1zf5gnD4fh9PWxvlwZ8yH70mygMH2hbvXTuqblbTmhE17GxBeNdALmn45Natad9rWjOZ8JkLIJ7HF57PwP2x9cUXs0SdoIiMtI840qwweudgpOfD6JkjpdCbMhmH1VgtVDZPhvNyIiugN6Mdvy4Dr7vMlx9vwhPaMXd83dbm5lUN9FdT/zNJadxERRn3sZkfvl+Sz6O54Eu0Snz5dfiSqFyiXyJCIatAgURvGYVakQi96gGj7CKqkkoF2Sg6aVwpsknsvo9R9qUYj6Kvt639PXHq2OMLx61M9lpWVP7pjLwzS2uvJUwJ3ZMUtjBs2LqlWUdm4YVFR6amjisYGaXPTRyZHqIeNHnVjKlbU2LCc0f4u4wP9k8Yo+mXRmYIUUJiCRRjseykcol+2ZNQXi2oluj9l51tHST6hdgW4u7a9tZLIe769t9gl7gUOYm7NAWGbXC3+CF8jQ6ToIWJ5eVNBdc8y+bX3/luxgeLwuYM0alifBasvHETTw3Znr6kdtc9dmmUfyY/77UP9hcfyLBTFPWSl5asWP5qAa5VDa1Y1TaUvvHpZ4LnaBidDLIHFlc2nYqj3t7LxzIWVsz5Vi/m/OrViJJa0cJ6FadTKbCp7UvqOP9CbE6dLCujLMVXIFLxHdJXwWJf8YTyasGSRO9bEmr8qBu9xZtWDqaftHKQ7nASyomNuHgw/XIvVNacy36nvrSsHpaNtMrrRbOvL6d3tCVu2rhxE70bLIs2yJwONc1piXJFEoU5LbU9ItF7mFBeJ6iQ6I3znRbSJfo17rTwXKTSCgiVndlF9q9oOK2m4b/W2hr+M7uufrt5y08fNNXvvLFpp7B3YCxan0HhS2eoVp4he2vyLsnDGGlOdVAHiX6BJCq7KdHbuLOtvUTvEk1uQBeDplfEcRcWTi317ru822k8A+cepKyNjyg5DXWY2g82SGviL0H0x6EOSvyJ9PYrEuXsJXoXXGBUC1QF/kDNZDjp6LBKyKJI6oqirYS6bZxFh65ZU80MWwWrvdiWxJwsxjwESVQu0S8dJSprkegdp84ThqN0kvgONaPOFc5RWsu+GyHNVEIDRRotWSY0WaTThcpZAW3ljBb1Q0MgEhtSiTQy0/lVqzWdZzWkSimwsB+Gv6FM0SeGDB08aorSd8/UzYf5pxtKiryqYodm7on4+GM+IrLGdV1T7eTvg/zMi3oEjw4J21+/oykpL+M1h+KBfY9sMi6PGo0t5kyeMBl0iQpkCtA1gei6/FSibLNEr4mU7yuoFSnZy3/c/hOi23+D1qcgCheovsOFmgPLFKfqcib825iU3t6YRETaOjlheKJycqInH2xgjN+bT5/uP94zMmBZwvR6fdDSSZVv3b2WnJGoSx7uOrJyWP48h34l/ItxdTNjRo6c6NHTHE8en9ILz6OjGC3/8Klec6BxsFO+m1/6hDcS99c3/DchJxN6oN/AjOiYdOPdwsxJ0zJSdQX4ztqTb+2F6MQoZH4Q3RQS83m5kGlHgPaA2PrA+EjhOHVbOMi6Qe2MqvCLDf4gbdMXBYVfbJ68LzR2ZNno8ndjqud5DZrpP6rs952bW+sMhllubuevVO2LA4+ibdlg8DhN9Jj0RKJ2Er30l/RiJ2VbJHo26QmiUDnskX9g7yIr1B9GQylXa/6kmkgWz1fQ2UGN9Zb+6xMr9idMOLYkZbnu8bIav9zY5OIhzvPYu4oW/8pxkcuf79j8sjbI0PPilfKjqVOGUebDxggRRIH/c+xdxgnN+ETIiJsUiyYiGlUDrwAFLOpNViE4Xah0jv+q5OEm/gS/Gyc2rrL0W5+4fJ8gKLlS92Rpjd+suPHFzs7zWY/S0t3/oAmi3wS+FTBidkgFnvtSnVnY7VLIlGo4gh23PCZmaXBU6KmJ62/n5l2sKjk9laL45MJNPSlHugZfm7chxN0tx28EONz6ombhD1vt3azwzbeadr8NPUC8kfkzS5w/CiRRZ4le6kLNJHq2k7LNEr2mEPZ+m3gdiUKB3JEeck9hTplmCdcxl7zxvwVH95063ckjsL/e0aqvryZvSfJ+/sC/hNuvn0vkGLWLluNKZa/kxY0tisPNf98BQn8v5ZOYeKYaGVAI9LcgpnO7ISNTW1TFEJFaG2kHphbD0JukB1JsRyWAh4zKa+S68Smp6fsW6saoevcLiHlv+u5M/uXTxg/i1rm/WVRQP6Z8ysnyxf6+KQnT31tQ8tZsPr147oJFswoLmerNCrMhJcnTtqeamVn69HXyDF8Uu+Gt4OosQ7RGE+EbFj4nUvu6o3vN5Kyd6Vgx6FjF9KzlSwpmz4fREKMh41kkjuevndRZohe70PEmaoGame2Mw+nOJ2ZS+7O/CrXkDAzsT+wNZCOskmSwyO6L7D05YdnMDTyU9p+axqT0gOyEPo3sDePRuLiGlUaaepmR6B09xIjZD4Ue15jssOQGS5haWv1f2aM+5Jv4w9sbu1uFGdTwF4ZBNdHHLQHV8037gEmg+hlCDMc4oB7gS7pZoL7Eg9t+xsH8x4xD27SSEtq6BOIW25Lee1PsPVrI5Uw+iW6VmSFbON25mnZfnCaQ7nrvgMULWpIRqi6/0z8t/7Hac2xVQTA/933jtyf2YZkuOFinHzmSGuM9apQ3/AIKolecX+661H5Uyvw42rftJ9CjXIwfjfLQBgdrPUZ1/JQUss2Swms0obwOdJuZqBM6S5O92YnOmDjpjau0MJbvQ0zzoFd6ifEwEA9FbiDmbeav3+iz8WkZHwrCqt59VDdwid20Q9VUC+kheI9xIpm0jKyhF1EZOQFfBy95QsUk/YyxugcFI8j4806U/AtjC77K2zcyDryT8RQVhL/Ep1qc2I8Fe9eNHwnvgb1S8aaqp2DtDFibCuokaxirBHPu/ABK8SWYuyaaUxtPUzr8Y+t9aIvRHFg3noBZOYmpy/ItBEZNzIxwT3B2cS6OrmriT7EftwZFDreRz1eoNlQwWhIbeZ+7B1oqSGzn24/jxg7O3pT4TYh6osCNHwn+CCfa55qsMJ9LFO42qJ7GqYiS1LHklAmHX1aD/49KfAKnjmnlr4zBRd3kUi23Z/zn+Ax6THfV0qwklRbly7XKLvPINJHO1PYa9j8pG6obe4dHB86I78M4rIxJJLNncXaJwTtmsBGjjtlD9g+14mpOxhUDbWW/QuZoIEJxJLE5Ti3WPOu/dFfsGmSjip0UYGM3srzu1eGnUzbUNPaOiDbMjO/DfmVw7R0YvPeRlau9W0CL6h+VOEtKLiFCobchTok2UyR6PoVE7yDsP8E9SWNJi1pSSP80qmJaUHDKUGVELKkj0CnvQ1nxXf1uluu8/mOK86k40ECKiUkWRF8PY+kA1sV7FnFxkhYrZZdyTyWvPjN52plVq85OnXZuVXllRXl5RTmjLftj17YX1eXPd+54UVlx5vrls2evXj0DsRC7pM6sFusMQhItk+iFKImyzRK9hoSaVM+3Au0j3a38SZujkubgn8Zab62XNimCUFBa15wFSmvPZk87h0dUj3dps4+sSvUwWqaXVRrmjS8vN8zpLvynwfzvIW2XZ/ItQ3DvdNp9XNGZa6sORZ+5uuZgNOgjSkjerO/MG0El48h4IaWw88wXr2aVXTedHJROa51eS19raMAD+xmaaocGD/RQeavnNnndrJGv6L2Ytl/8cklNL7M1PXq808SPWEwd+66Y3wgeiW3icYPo0YAk6izRSyI1fiToMFEONbfnw08s9Cr9AEbWmeyL//I+xXSd0uXqgXKbW63OnjVj2/jJB2cXnxoRGlA3ZcE07bysqesTFp3LrT0z6vXAbQUp4e6jffrYj8lLGb84eKRH3mBdhMHV4OFgH75gwqzKoDj/HG0QKCMKSBRbxCgskESdJXpJpLxaUCvR6y//qu1Fsa3xo25tm8mdyhbIol5sf6SEeE3VRq3T6vRyOH6aqhDTy/s/oXuO/vJLI8624RvTsv0nOesGDtpfRRUseWLDG5cYa5JS+9jC6ErWWOTQsYLjv7FK1/Nv8Qs+pxb8X+PU6cWLjYV/4QGiED38AlHsNNXc3ahY4Lxa8Czx60I1EDiMc1feDJzUB+EsAauDdeeaIIdk1JjU4tyElMQNzo215oGH09avZRyMttNSJ46iudb7NdHxO+opHmwTG2S27pFmq0gfysokSmar2JZtlug1sS2vE1QQKp48P0JIspwjtb7ShXISvUoiUUN+V0MkcG+S2eXaREvfeFy+6sfT75Q2frqltIFm22A6toXRbm1X6ENgTXyP5Nm+jvkpUWeJXuyk7A8SPdOlraNEzxE98/nxjA70WAgrtDklVF69Wrg5YXR8jWPuoUq7GW+G9PHh6w5iVzyEcWj9PGt/oXmpVWhBDAicSG8Cy8QGUXFYUtFBHSUq+ruAEP0d+Ot+Z7KBCrVt46mxxu+pb2tri+lXVy4BC6QtifmYGLMCSdRZope6UDOJniVUPJn+YTqZcuhbOOc8kdYmTlqFvg2WZiKhW0Q6TrJM6DGRJgNAbXwuvY/cHvYXejZO6DK56RP+7pec4v0mraLbsO1yrDA2VC4sK9PnJvlP6E/bJnjHBI0dEa3T4+xDVCJt1vZHmx01rmHPge0pG9NcPXO1vnOLluUsWGQ8wwRSfgijW7BS3mLvklNlZ41TqDi13EYcPnHyQg2k7oVmB/l4pg1ODMG04vHAkMLYgOBk58bG0Dr2rp3DfKU8InLdsrbDRVuzIwfOUY0tzqezlq1KLIkQ4is23Y72QnKkED9Dgmhgk2NOqbEGK1n4wqqm4gkrcoYuHVR2ZS0/xY1a42nM9qLWecJ1n949d6Iud1s8zpqOvbPtc7A2GzHE6mTTp47WqK9gF27nSY+p5Y5CJsCXpuNuXK3Gttj/OXaoeLqhhj9JNRhTcYLV5tdXx4+rT2tgMy/d2f5REs8+LizEvZYtW+ZdNj/rTT1iyI3YYPBig3qDjwHC7S6YFC3qteJiwNEmbyo1jdX41FerNo9cWfS57dmWpMKAZw+f0tltq+hs3sPSAq+/wpdTbtUL1qbP8VuS1DN2SfyZD+1wHXh1zysw5hu3UmFCZu+F7PkURsaJfJas60gGc8qC0uhhWLxIHkhbRepQ1Z7d6xZU+s09uXhC6Yi76w9EvBE7YkK4W4Kzq3OxckMF3f/K5ytmZex/+52UEW8kNM3/+NSsZWs3td027RzB4yGyqwuRPl8X76/l1G4cyzdt55twLBvCN9e0LaSX1mAf0IjvGz+izsHaaQ4au+8CqQyXIHPLSVP8rHsHVRtc7TzUN3+2dLN3NSAK27Nyup79AfwIe16IrSPPVV1+xxXugYHuLkFBOMc1MNDVLSiIlQe4uhkMbq4BHT9BwResA3VFZkY0dzlgUQn6UaP03iNHysykcxK0zmU+pwNkjogW9tp6lmb57GQBHq99CE9ns4iOkPmRp5CQVHskn+4l86vbk4xAtTXzG71JVgZPOXhuraT18IWtN6z+4O67K2+zQ3HKaP6oFqdE8MfBlhXzM71F5oxk0FbjqGU5DZ4QjS1yca/wl8zPcY8fxx3q3go8qh31SjounP81l38W/ULmPO7Ro3GHoZUL85BeLFMgC9JbpkpApg4Vl/zm6FcKFImjQ1IVBa+ELGIexi802IWlpYXZGRbGg+p5zE3aW5bz/9irJg2f5Os7afiwyb6+k4d5+Pt7aH19ZTn6ND+fNG/vNB+/NH2qQedlMHjpDKDJgnWkt8k4pBA1dV5+Svl4QRcxwnGAe+8s9fQQn7Bhjn097KdrsllHdw83V+8xme7uzi7ecTHCqISyY+lJbDPpd0g4ehKUbTt27CLhWQGvpn2hJtrCMyh9eq3izx/7ULvTYqzyJyaMyhkeMFPj3SdUpRvJ/+Dd//7KVyYGjEh0tlNmWsgdBVv1vI5WI4OgebLyL26e6B52U7OcPDtvliJ3GgzdLo5Gz34d7LTRRuoTNl/ME1pDuazPymDzrfiN5lDfO+YEIxPv07GdDNErZTcZDgl7/CdAPpe9Sl2WtQA5KxCwmMP+QAdy9sQiyzniCzhXy0/i7O8mN8DTLHg6krOR8vJ5OB/vwtnUbUoW7Fux9+mNXBFYuyBaA/KM3sI5IBmxpuE0jtRK3CvU2BqGLTiHW/Fbt8bfQqTdd9BO3jX74kNJ9oW1cvL4W7fit0ErN/YRvVT2+19lX0L44lgh+8aMTofsi1/KPgrIGvuaf2io/2tjswJA21z2Y1rHpYO2K6bYLWQ29FbZcyBXTSREpqcnyo4AuWYipjGXwY4WCTr3MotpSsaJ8WMNVbyU5+NkXCJ/RSs8Zf9LQ59JTxcv41vjOMcE/muv/wW3XUYGAAAAAAEAAAAFAIO0QZ2aXw889QADB9AAAAAA2wktdwAAAADdVa6+8iv8GAlQCWAAAAAGAAIAAAAAAAB42mNgZGBg3/O3hoGBM+GT9rcNnAFAEVRwCgCThwaOAHjafNIBBwJBEIbh/TgIRCEKEBLS/wgqEBICEBJRCiEoJDkACXAgggQIwEmhIigQBBABRQ03S63ZrMdrWKw1zkIVSPrX+xZQPYHH93SfFmWBRxzujsS4pgnbBxCm9oJqqkg8QcViYyhZuKQgmPwREmQNY4P+yxLPw1/vR0CtBAOSJyMytegLfJLi3lmVq63ZkfmkbeEzcDXX4mBwLWYC/4+koPtla1jpd/L8Iidjx+dkqRSuzgIJXNBAC1FE6GTQQRg5NOHihSviOKOO2mdAGRDUZ6wEynoCZdcyrgUAqEsMUwAAAHjaBcEDtCAhAADAsNUid7Zt27Zt27ZtPp5t27Zt2/b9GQBANdAJ9AUjwBSwDRwCXyCAHMaDqWA1OBJOgXPgergLHoUX4G34HCVDGVEeVBxVQq3QSDQFLUNn0HX0CL1FPzDGqXE2XB7Xwq1wNzwQj8Ez8Gp8Ft/Aj/E7L41Xz2vpdfH6e4e8s94Pgokk8UkT0p70IkPJBDKbXCJPyX8a0tg0GS1BK9N6tCXtQvvTUXQRXUt30MP0HH1KP9DfjLJELC3LwQqz8qwWa8o6sNVsGzvIzvrZ/IJ+e7+XP9Sf4M/2T/nXglhBxaBO0DzoFPQNzoQ5wyJh+bBO2DwcHW4M94SXwrtRyihLVCgqG7WMukYToznRxuhidDd6GX3hgGfi1XhDPpsv4Kv5LUGFEYlEWtFJ9BVLxQaxWxyXvnQyiUwvc8miso2cKxfL9XK3vCtfyM/ynwpVbJVMFVJlVQ3VWLVTE9RstUBtUwfVGXVdPVbv1E/t6WK6l56vLxlhypimZoBZYLabY+aqeWP+W2uz2UZ2hJ1mt9lb9qX9aH857KxL7jK4Iq666+r6ueFugpvhFroNMdkFeqsAeNpjYGRgYHjGxMaQwFDBwAXmIQAzAwsALJ8B2njalJDFWYQxEEAf7lxxyA13d+eC63Xd5XccCqCWrYECqIBukHyD60ZfMj5AJdcUUVBcAeRAuIBWcsKF1HInXMQC98LF9BXUC5fQWLAmXEpXgV+4lpGCGzQXQHXBrbD2yTIGJmfYJIgRx0UxxACDjNDLE+mtOCBOBMUaCWwCKG0Z1n872Bgknzik7RfxcIljYOOg6NB+XUwcpuinnxgJreERpI8QBhn6cTHI4pDijH4k0muczm9jb7zmvUfkiTzSBLAZpY8Bnf00yxywwtITffb5Zt37yf73WOqT9hERbBwSugL1Fj2PiNIj6ZBDCJsEJi4Ofdp3mj4MbGL0s80aGzwunCEVZh4AkbdX7QB42mNgZgCD/3MYjIAUIwMaAAAqlAHSAAA=) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Code;font-style:normal;font-weight:400;font-display:swap;src:url(data:font/woff;base64,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) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.graphiql-container *{box-sizing:border-box;font-variant-ligatures:none}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-dialog-overlay,.graphiql-tooltip,[data-radix-popper-content-wrapper]{--color-primary: 320, 95%, 43%;--color-secondary: 242, 51%, 61%;--color-tertiary: 188, 100%, 36%;--color-info: 208, 100%, 46%;--color-success: 158, 60%, 42%;--color-warning: 36, 100%, 41%;--color-error: 13, 93%, 58%;--color-neutral: 219, 28%, 32%;--color-base: 219, 28%, 100%;--alpha-secondary: .76;--alpha-tertiary: .5;--alpha-background-heavy: .15;--alpha-background-medium: .1;--alpha-background-light: .07;--font-family: "Roboto", sans-serif;--font-family-mono: "Fira Code", monospace;--font-size-hint:.75rem;--font-size-inline-code:.8125rem;--font-size-body:.9375rem;--font-size-h4:1.125rem;--font-size-h3:1.375rem;--font-size-h2:1.8125rem;--font-weight-regular: 400;--font-weight-medium: 500;--line-height: 1.5;--px-2: 2px;--px-4: 4px;--px-6: 6px;--px-8: 8px;--px-10: 10px;--px-12: 12px;--px-16: 16px;--px-20: 20px;--px-24: 24px;--border-radius-2: 2px;--border-radius-4: 4px;--border-radius-8: 8px;--border-radius-12: 12px;--popover-box-shadow: 0px 6px 20px rgba(59, 76, 106, .13), 0px 1.34018px 4.46726px rgba(59, 76, 106, .0774939), 0px .399006px 1.33002px rgba(59, 76, 106, .0525061);--popover-border: none;--sidebar-width: 60px;--toolbar-width: 40px;--session-header-height: 51px}@media (prefers-color-scheme: dark){body:not(.graphiql-light) .graphiql-container,body:not(.graphiql-light) .CodeMirror-info,body:not(.graphiql-light) .CodeMirror-lint-tooltip,body:not(.graphiql-light) .graphiql-dialog,body:not(.graphiql-light) .graphiql-dialog-overlay,body:not(.graphiql-light) .graphiql-tooltip,body:not(.graphiql-light) [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}}body.graphiql-dark .graphiql-container,body.graphiql-dark .CodeMirror-info,body.graphiql-dark .CodeMirror-lint-tooltip,body.graphiql-dark .graphiql-dialog,body.graphiql-dark .graphiql-dialog-overlay,body.graphiql-dark .graphiql-tooltip,body.graphiql-dark [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-container:is(button),.CodeMirror-info:is(button),.CodeMirror-lint-tooltip:is(button),.graphiql-dialog:is(button){color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(----font-weight-regular);line-height:var(--line-height)}.graphiql-container input,.CodeMirror-info input,.CodeMirror-lint-tooltip input,.graphiql-dialog input{color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-caption)}.graphiql-container input::placeholder,.CodeMirror-info input::placeholder,.CodeMirror-lint-tooltip input::placeholder,.graphiql-dialog input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-container a,.CodeMirror-info a,.CodeMirror-lint-tooltip a,.graphiql-dialog a{color:hsl(var(--color-primary))}.graphiql-container a:focus,.CodeMirror-info a:focus,.CodeMirror-lint-tooltip a:focus,.graphiql-dialog a:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-un-styled,button.graphiql-un-styled{all:unset;border-radius:var(--border-radius-4);cursor:pointer}:is(.graphiql-un-styled,button.graphiql-un-styled):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}:is(.graphiql-un-styled,button.graphiql-un-styled):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-un-styled,button.graphiql-un-styled):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button,button.graphiql-button{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border:none;border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),1);cursor:pointer;font-size:var(--font-size-body);padding:var(--px-8) var(--px-12)}:is(.graphiql-button,button.graphiql-button):hover,:is(.graphiql-button,button.graphiql-button):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-button,button.graphiql-button):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button-success:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-success),var(--alpha-background-heavy))}.graphiql-button-error:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-button-group{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-4) + var(--px-4));display:flex;padding:var(--px-4)}.graphiql-button-group>button.graphiql-button{background-color:transparent}.graphiql-button-group>button.graphiql-button:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-button-group>button.graphiql-button.active{background-color:hsl(var(--color-base));cursor:default}.graphiql-button-group>*+*{margin-left:var(--px-8)}.graphiql-dialog-overlay{position:fixed;inset:0;background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));z-index:10}.graphiql-dialog{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-12);box-shadow:var(--popover-box-shadow);margin:0;max-height:80vh;max-width:80vw;overflow:auto;padding:0;width:unset;transform:translate(-50%,-50%);top:50%;left:50%;position:fixed;z-index:10}.graphiql-dialog-close>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-12);padding:var(--px-12);width:var(--px-12)}.graphiql-dropdown-content{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:inherit;max-width:250px;padding:var(--px-4);font-family:var(--font-family);color:hsl(var(--color-neutral));max-height:min(calc(var(--radix-dropdown-menu-content-available-height) - 10px),400px);overflow-y:scroll}.graphiql-dropdown-item{border-radius:var(--border-radius-4);font-size:inherit;margin:var(--px-4);overflow:hidden;padding:var(--px-6) var(--px-8);text-overflow:ellipsis;white-space:nowrap;outline:none;cursor:pointer;line-height:var(--line-height)}.graphiql-dropdown-item[data-selected],.graphiql-dropdown-item[data-current-nav],.graphiql-dropdown-item:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:inherit}.graphiql-dropdown-item:not(:first-child){margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) blockquote{margin-left:0;margin-right:0;padding-left:var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{border-radius:var(--border-radius-4);font-family:var(--font-family-mono);font-size:var(--font-size-inline-code)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code{padding:var(--px-2)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{overflow:auto;padding:var(--px-6) var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre code{background-color:initial;border-radius:0;padding:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{padding-left:var(--px-16)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol{list-style-type:decimal}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{list-style-type:disc}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) img{border-radius:var(--border-radius-4);max-height:120px;max-width:100%}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:first-child{margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:last-child{margin-bottom:0}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a{color:hsl(var(--color-primary));text-decoration:none}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a:hover{text-decoration:underline}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) blockquote{border-left:1.5px solid hsla(var(--color-neutral),var(--alpha-tertiary))}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) code,:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) pre{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description)>*{margin:var(--px-12) 0}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) a{color:hsl(var(--color-warning));text-decoration:underline}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) blockquote{border-left:1.5px solid hsl(var(--color-warning))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) pre{background-color:hsla(var(--color-warning),var(--alpha-background-heavy))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation)>*{margin:var(--px-8) 0}.graphiql-markdown-preview>:not(:first-child){display:none}.CodeMirror-hint-information-deprecation,.CodeMirror-info .info-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));margin-top:var(--px-12);padding:var(--px-6) var(--px-8)}.CodeMirror-hint-information-deprecation-label,.CodeMirror-info .info-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation-reason{margin-top:var(--px-6)}.graphiql-spinner{height:56px;margin:auto;margin-top:var(--px-16);width:56px}.graphiql-spinner:after{animation:rotation .8s linear 0s infinite;border:4px solid transparent;border-radius:100%;border-top:4px solid hsla(var(--color-neutral),var(--alpha-tertiary));content:"";display:inline-block;height:46px;vertical-align:middle;width:46px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.graphiql-tooltip{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-size:inherit;padding:var(--px-4) var(--px-6);font-family:var(--font-family)}.graphiql-tabs{display:flex;align-items:center;overflow-x:auto;padding:var(--px-12)}.graphiql-tabs>:not(:first-child){margin-left:var(--px-12)}.graphiql-tab{align-items:stretch;border-radius:var(--border-radius-8);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex}.graphiql-tab>button.graphiql-tab-close{visibility:hidden}.graphiql-tab.graphiql-tab-active>button.graphiql-tab-close,.graphiql-tab:hover>button.graphiql-tab-close,.graphiql-tab:focus-within>button.graphiql-tab-close{visibility:unset}.graphiql-tab.graphiql-tab-active{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));color:hsla(var(--color-neutral),1)}button.graphiql-tab-button{padding:var(--px-4) 0 var(--px-4) var(--px-8)}button.graphiql-tab-close{align-items:center;display:flex;padding:var(--px-4) var(--px-8)}button.graphiql-tab-close>svg{height:var(--px-8);width:var(--px-8)}.graphiql-history-header{font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);display:flex;justify-content:space-between;align-items:center}.graphiql-history-header button{font-size:var(--font-size-inline-code);padding:var(--px-6) var(--px-10)}.graphiql-history-items{margin:var(--px-16) 0 0;list-style:none;padding:0}.graphiql-history-item{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;font-size:var(--font-size-inline-code);font-family:var(--font-family-mono);height:34px}.graphiql-history-item:hover{color:hsla(var(--color-neutral),1);background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-history-item:not(:first-child){margin-top:var(--px-4)}.graphiql-history-item.editable{background-color:hsla(var(--color-primary),var(--alpha-background-medium))}.graphiql-history-item.editable>input{background:transparent;border:none;flex:1;margin:0;outline:none;padding:0 var(--px-10);width:100%}.graphiql-history-item.editable>input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-history-item.editable>button{color:hsl(var(--color-primary));padding:0 var(--px-10)}.graphiql-history-item.editable>button:active{background-color:hsla(var(--color-primary),var(--alpha-background-heavy))}.graphiql-history-item.editable>button:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-history-item.editable>button>svg{display:block}button.graphiql-history-item-label{flex:1;padding:var(--px-8) var(--px-10);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.graphiql-history-item-action{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;padding:var(--px-8) var(--px-6)}button.graphiql-history-item-action:hover{color:hsla(var(--color-neutral),1)}button.graphiql-history-item-action>svg{height:14px;width:14px}.graphiql-history-item-spacer{height:var(--px-16)}.graphiql-doc-explorer-default-value{color:hsl(var(--color-success))}a.graphiql-doc-explorer-type-name{color:hsl(var(--color-warning));text-decoration:none}a.graphiql-doc-explorer-type-name:hover{text-decoration:underline}a.graphiql-doc-explorer-type-name:focus{outline:hsl(var(--color-warning)) auto 1px}.graphiql-doc-explorer-argument>*+*{margin-top:var(--px-12)}.graphiql-doc-explorer-argument-name{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-argument-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-argument-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--px-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-directive{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-section-title{align-items:center;display:flex;font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);line-height:1}.graphiql-doc-explorer-section-title>svg{height:var(--px-16);margin-right:var(--px-8);width:var(--px-16)}.graphiql-doc-explorer-section-content{margin-left:var(--px-8);margin-top:var(--px-16)}.graphiql-doc-explorer-section-content>*+*{margin-top:var(--px-16)}.graphiql-doc-explorer-root-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-doc-explorer-search:not([data-state="idle"]){border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1)}.graphiql-doc-explorer-search:not([data-state="idle"]) .graphiql-doc-explorer-search-input{background:hsl(var(--color-base))}.graphiql-doc-explorer-search-input{align-items:center;background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:var(--border-radius-4);display:flex;padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search [role=combobox]{border:none;background-color:transparent;margin-left:var(--px-4);width:100%}.graphiql-doc-explorer-search [role=combobox]:focus{outline:none}.graphiql-doc-explorer-search [role=listbox]{background-color:hsl(var(--color-base));border:none;border-bottom-left-radius:var(--border-radius-4);border-bottom-right-radius:var(--border-radius-4);border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));max-height:400px;overflow-y:auto;margin:0;font-size:var(--font-size-body);padding:var(--px-4);position:relative}.graphiql-doc-explorer-search [role=option]{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));overflow-x:hidden;padding:var(--px-8) var(--px-12);text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-doc-explorer-search [role=option]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy))}:is(.graphiql-doc-explorer-search [role="option"])+:is(.graphiql-doc-explorer-search [role="option"]){margin-top:var(--px-4)}.graphiql-doc-explorer-search-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search-field{color:hsl(var(--color-warning))}.graphiql-doc-explorer-search-argument{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-search-divider{color:hsla(var(--color-neutral),var(--alpha-secondary));font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);margin-top:var(--px-8);padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search-empty{color:hsla(var(--color-neutral),var(--alpha-secondary));padding:var(--px-8) var(--px-12)}a.graphiql-doc-explorer-field-name{color:hsl(var(--color-info));text-decoration:none}a.graphiql-doc-explorer-field-name:hover{text-decoration:underline}a.graphiql-doc-explorer-field-name:focus{outline:hsl(var(--color-info)) auto 1px}.graphiql-doc-explorer-item>:not(:first-child){margin-top:var(--px-12)}.graphiql-doc-explorer-argument-multiple{margin-left:var(--px-8)}.graphiql-doc-explorer-enum-value{color:hsl(var(--color-info))}.graphiql-doc-explorer-header{display:flex;justify-content:space-between;position:relative}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-title{visibility:hidden}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-back:not(:focus){color:transparent}.graphiql-doc-explorer-header-content{display:flex;flex-direction:column;min-width:0}.graphiql-doc-explorer-search{position:absolute;right:0;top:0}.graphiql-doc-explorer-search:focus-within{left:0}.graphiql-doc-explorer-search [role=combobox]{height:24px;width:4ch}.graphiql-doc-explorer-search [role=combobox]:focus{width:100%}a.graphiql-doc-explorer-back{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;text-decoration:none}a.graphiql-doc-explorer-back:hover{text-decoration:underline}a.graphiql-doc-explorer-back:focus{outline:hsla(var(--color-neutral),var(--alpha-secondary)) auto 1px}a.graphiql-doc-explorer-back:focus+.graphiql-doc-explorer-title{visibility:unset}a.graphiql-doc-explorer-back>svg{height:var(--px-8);margin-right:var(--px-8);width:var(--px-8)}.graphiql-doc-explorer-title{font-weight:var(--font-weight-medium);font-size:var(--font-size-h2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-title:not(:first-child){font-size:var(--font-size-h3);margin-top:var(--px-8)}.graphiql-doc-explorer-content>*{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-20)}.graphiql-doc-explorer-error{background-color:hsla(var(--color-error),var(--alpha-background-heavy));border:1px solid hsl(var(--color-error));border-radius:var(--border-radius-8);color:hsl(var(--color-error));padding:var(--px-8) var(--px-12)}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;inset:-50px 0 0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;inset:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.graphiql-container .CodeMirror{height:100%;position:absolute;width:100%}.graphiql-container .CodeMirror{font-family:var(--font-family-mono)}.graphiql-container .CodeMirror,.graphiql-container .CodeMirror-gutters{background:none;background-color:var(--editor-background, hsl(var(--color-base)))}.graphiql-container .CodeMirror-linenumber{padding:0}.graphiql-container .CodeMirror-gutters{border:none}.cm-s-graphiql{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-keyword{color:hsl(var(--color-primary))}.cm-s-graphiql .cm-def{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-punctuation{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-variable{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-atom{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-number{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string{color:hsl(var(--color-warning))}.cm-s-graphiql .cm-builtin{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string-2{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-attribute,.cm-s-graphiql .cm-meta{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-property{color:hsl(var(--color-info))}.cm-s-graphiql .cm-qualifier{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-comment{color:hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .cm-ws{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-invalidchar{color:hsl(var(--color-error))}.cm-s-graphiql .CodeMirror-cursor{border-left:2px solid hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .CodeMirror-linenumber{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket,.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:hsl(var(--color-warning))}.graphiql-container .CodeMirror-selected,.graphiql-container .CodeMirror-focused .CodeMirror-selected{background:hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .CodeMirror-dialog{background:inherit;color:inherit;left:0;right:0;overflow:hidden;padding:var(--px-2) var(--px-6);position:absolute;z-index:6}.graphiql-container .CodeMirror-dialog-top{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding-bottom:var(--px-12);top:0}.graphiql-container .CodeMirror-dialog-bottom{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));bottom:0;padding-top:var(--px-12)}.graphiql-container .CodeMirror-search-hint{display:none}.graphiql-container .CodeMirror-dialog input{border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container .CodeMirror-dialog input:focus{outline:hsl(var(--color-primary)) solid 2px}.graphiql-container .cm-searching{background-color:hsla(var(--color-warning),var(--alpha-background-light));padding-bottom:1.5px;padding-top:.5px}.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25be"}.CodeMirror-foldgutter-folded:after{content:"\25b8"}.CodeMirror-foldgutter{width:var(--px-12)}.CodeMirror-foldmarker{background-color:hsl(var(--color-info));border-radius:var(--border-radius-4);color:hsl(var(--color-base));font-family:inherit;margin:0 var(--px-4);padding:0 var(--px-8);text-shadow:none}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.CodeMirror-foldgutter-open:after,.CodeMirror-foldgutter-folded:after{margin:0 var(--px-2)}.graphiql-editor{height:100%;position:relative;width:100%}.graphiql-editor.hidden{left:-9999px;position:absolute;top:-9999px;visibility:hidden}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid black;border-radius:4px;color:#000;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-lint-mark{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-marker{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message{padding-left:18px;background-position:top left;background-repeat:no-repeat}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right bottom;width:100%;height:100%}.CodeMirror-lint-line-error{background-color:#b74c5114}.CodeMirror-lint-line-warning{background-color:#ffd3001a}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-repeat:repeat-x;background-size:10px 3px;background-position:0 95%}.cm-s-graphiql .CodeMirror-lint-mark-error{color:hsl(var(--color-error))}.CodeMirror-lint-mark-error{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-error)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-error)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-error)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-error)) 35%,transparent 50%)}.cm-s-graphiql .CodeMirror-lint-mark-warning{color:hsl(var(--color-warning))}.CodeMirror-lint-mark-warning{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-warning)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-warning)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-warning)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-warning)) 35%,transparent 50%)}.CodeMirror-lint-tooltip{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:var(--font-size-body);font-family:var(--font-family);max-width:600px;overflow:hidden;padding:var(--px-12)}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-image:none;padding:0}.CodeMirror-lint-message-error{color:hsl(var(--color-error))}.CodeMirror-lint-message-warning{color:hsl(var(--color-warning))}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px #0003;border-radius:3px;border:1px solid silver;background:white;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hints{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);display:grid;font-family:var(--font-family);font-size:var(--font-size-body);grid-template-columns:auto fit-content(300px);max-height:264px;padding:0}.CodeMirror-hint{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));grid-column:1 / 2;margin:var(--px-4);padding:var(--px-6) var(--px-8)!important}.CodeMirror-hint:not(:first-child){margin-top:0}li.CodeMirror-hint-active{background:hsla(var(--color-primary),var(--alpha-background-medium));color:hsl(var(--color-primary))}.CodeMirror-hint-information{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));grid-column:2 / 3;grid-row:1 / 99999;max-height:264px;overflow:auto;padding:var(--px-12)}.CodeMirror-hint-information-header{display:flex;align-items:baseline}.CodeMirror-hint-information-field-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-hint-information-type-name{color:inherit;text-decoration:none}.CodeMirror-hint-information-type-name:hover{text-decoration:underline dotted}.CodeMirror-hint-information-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12)}.CodeMirror-info{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1);max-height:300px;max-width:400px;opacity:0;overflow:auto;padding:var(--px-12);position:fixed;transition:opacity .15s;z-index:10}.CodeMirror-info a{color:inherit;text-decoration:none}.CodeMirror-info a:hover{text-decoration:underline dotted}.CodeMirror-info .CodeMirror-info-header{display:flex;align-items:baseline}.CodeMirror-info .CodeMirror-info-header>.type-name,.CodeMirror-info .CodeMirror-info-header>.field-name,.CodeMirror-info .CodeMirror-info-header>.arg-name,.CodeMirror-info .CodeMirror-info-header>.directive-name,.CodeMirror-info .CodeMirror-info-header>.enum-value{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-info .type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-info .info-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12);overflow:hidden}.CodeMirror-jump-token{text-decoration:underline dotted;cursor:pointer}.auto-inserted-leaf.cm-property{animation-duration:6s;animation-name:insertionFade;border-radius:var(--border-radius-4);padding:var(--px-2)}@keyframes insertionFade{0%,to{background-color:none}15%,85%{background-color:hsla(var(--color-warning),var(--alpha-background-light))}}button.graphiql-toolbar-button{display:flex;align-items:center;justify-content:center;height:var(--toolbar-width);width:var(--toolbar-width)}button.graphiql-toolbar-button.error{background:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-execute-button-wrapper{position:relative}button.graphiql-execute-button{background-color:hsl(var(--color-primary));border:none;border-radius:var(--border-radius-8);cursor:pointer;height:var(--toolbar-width);padding:0;width:var(--toolbar-width)}button.graphiql-execute-button:hover{background-color:hsla(var(--color-primary),.9)}button.graphiql-execute-button:active{background-color:hsla(var(--color-primary),.8)}button.graphiql-execute-button:focus{outline:hsla(var(--color-primary),.8) auto 1px}button.graphiql-execute-button>svg{color:#fff;display:block;height:var(--px-16);margin:auto;width:var(--px-16)}button.graphiql-toolbar-menu{display:block;height:var(--toolbar-width);width:var(--toolbar-width)}.graphiql-container{background-color:hsl(var(--color-base));display:flex;height:100%;margin:0;overflow:hidden;width:100%}.graphiql-container .graphiql-sidebar{display:flex;flex-direction:column;justify-content:space-between;padding:var(--px-8);width:var(--sidebar-width)}.graphiql-container .graphiql-sidebar .graphiql-sidebar-section{display:flex;flex-direction:column;gap:var(--px-8)}.graphiql-container .graphiql-sidebar button{display:flex;align-items:center;justify-content:center;color:hsla(var(--color-neutral),var(--alpha-secondary));height:calc(var(--sidebar-width) - (2 * var(--px-8)));width:calc(var(--sidebar-width) - (2 * var(--px-8)))}.graphiql-container .graphiql-sidebar button.active{color:hsla(var(--color-neutral),1)}.graphiql-container .graphiql-sidebar button:not(:first-child){margin-top:var(--px-4)}.graphiql-container .graphiql-sidebar button>svg{height:var(--px-20);width:var(--px-20)}.graphiql-container .graphiql-main{display:flex;flex:1;min-width:0}.graphiql-container .graphiql-sessions{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-12) + var(--px-8));display:flex;flex-direction:column;flex:1;max-height:100%;margin:var(--px-16);margin-left:0;min-width:0}.graphiql-container .graphiql-session-header{align-items:center;display:flex;justify-content:space-between;height:var(--session-header-height)}button.graphiql-tab-add{height:100%;padding:var(--px-4)}button.graphiql-tab-add>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-16);width:var(--px-16)}.graphiql-container .graphiql-session-header-right{align-items:center;display:flex}.graphiql-container .graphiql-logo{color:hsla(var(--color-neutral),var(--alpha-secondary));font-size:var(--font-size-h4);font-weight:var(--font-weight-medium);padding:var(--px-12) var(--px-16)}.graphiql-container .graphiql-logo .graphiql-logo-link{color:hsla(var(--color-neutral),var(--alpha-secondary));text-decoration:none}.graphiql-container .graphiql-session{display:flex;flex:1;padding:0 var(--px-8) var(--px-8)}.graphiql-container .graphiql-editors{background-color:hsl(var(--color-base));border-radius:calc(var(--border-radius-12));box-shadow:var(--popover-box-shadow);display:flex;flex:1;flex-direction:column}.graphiql-container .graphiql-editors.full-height{margin-top:calc(var(--px-8) - var(--session-header-height))}.graphiql-container .graphiql-query-editor{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding:var(--px-16);column-gap:var(--px-16);display:flex;width:100%}.graphiql-container .graphiql-toolbar{width:var(--toolbar-width)}.graphiql-container .graphiql-toolbar>*+*{margin-top:var(--px-8)}.graphiql-toolbar-icon{color:hsla(var(--color-neutral),var(--alpha-tertiary));display:block;height:calc(var(--toolbar-width) - (var(--px-8) * 2));width:calc(var(--toolbar-width) - (var(--px-8) * 2))}.graphiql-container .graphiql-editor-tools{cursor:row-resize;display:flex;width:100%;column-gap:var(--px-8);padding:var(--px-8)}.graphiql-container .graphiql-editor-tools button{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-container .graphiql-editor-tools button.active{color:hsla(var(--color-neutral),1)}.graphiql-container .graphiql-editor-tools>button:not(.graphiql-toggle-editor-tools){padding:var(--px-8) var(--px-12)}.graphiql-container .graphiql-editor-tools .graphiql-toggle-editor-tools{margin-left:auto}.graphiql-container .graphiql-editor-tool{flex:1;padding:var(--px-16)}.graphiql-container .graphiql-toolbar,.graphiql-container .graphiql-editor-tools,.graphiql-container .graphiql-editor-tool{position:relative}.graphiql-container .graphiql-response{--editor-background: transparent;display:flex;width:100%;flex-direction:column}.graphiql-container .graphiql-response .result-window{position:relative;flex:1}.graphiql-container .graphiql-footer{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .graphiql-plugin{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));flex:1;overflow-y:auto;padding:var(--px-16)}.graphiql-horizontal-drag-bar{width:var(--px-12);cursor:col-resize}.graphiql-horizontal-drag-bar:hover:after{border:var(--px-2) solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-2);content:"";display:block;height:25%;margin:0 auto;position:relative;top:37.5%;width:0}.graphiql-container .graphiql-chevron-icon{color:hsla(var(--color-neutral),var(--alpha-tertiary));display:block;height:var(--px-12);margin:var(--px-12);width:var(--px-12)}.graphiql-spin{animation:spin .8s linear 0s infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.graphiql-dialog .graphiql-dialog-header{align-items:center;display:flex;justify-content:space-between;padding:var(--px-24)}.graphiql-dialog .graphiql-dialog-title{font-size:var(--font-size-h3);font-weight:var(--font-weight-medium);margin:0}.graphiql-dialog .graphiql-dialog-section{align-items:center;border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));display:flex;justify-content:space-between;padding:var(--px-24)}.graphiql-dialog .graphiql-dialog-section>:not(:first-child){margin-left:var(--px-24)}.graphiql-dialog .graphiql-dialog-section-title{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.graphiql-dialog .graphiql-dialog-section-caption{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-dialog .graphiql-warning-text{color:hsl(var(--color-warning));font-weight:var(--font-weight-medium)}.graphiql-dialog .graphiql-table{border-collapse:collapse;width:100%}.graphiql-dialog .graphiql-table :is(th,td){border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding:var(--px-8) var(--px-12)}.graphiql-dialog .graphiql-key{background-color:hsla(var(--color-neutral),var(--alpha-background-medium));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container svg{pointer-events:none}.docExplorerWrap{height:unset!important;min-width:unset!important;width:unset!important}.doc-explorer-title{font-size:var(--font-size-h2);font-weight:var(--font-weight-medium)}.doc-explorer-rhs{display:none}.graphiql-explorer-root{font-family:var(--font-family-mono)!important;font-size:var(--font-size-body)!important;padding:0!important}.graphiql-explorer-root>div:first-child{padding-left:var(--px-8);overflow:hidden!important}.graphiql-explorer-root input{background:hsl(var(--color-base))}.graphiql-explorer-root select{background-color:hsl(var(--color-base));border:1px solid hsla(var(--color-neutral),var(--alpha-secondary));border-radius:var(--border-radius-4);color:hsl(var(--color-neutral));margin:0 var(--px-4);padding:var(--px-4) var(--px-6)} -/*!********************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/dist/style.css ***! - \********************************************************************************************/ -/*!*********************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/roboto.css ***! - \*********************************************************************************************/ -/*!************************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/fira-code.css ***! - \************************************************************************************************/ -/*!*********************************************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js!./style.css ***! - \*********************************************************************************************************************/ diff --git a/netbox/project-static/dist/graphiql.js b/netbox/project-static/dist/graphiql.js deleted file mode 100644 index 1b6949d0288..00000000000 --- a/netbox/project-static/dist/graphiql.js +++ /dev/null @@ -1,346 +0,0 @@ -(()=>{var HB=Object.create;var U0=Object.defineProperty;var zB=Object.getOwnPropertyDescriptor;var WB=Object.getOwnPropertyNames;var YB=Object.getPrototypeOf,JB=Object.prototype.hasOwnProperty;var XB=e=>U0(e,"__esModule",{value:!0});var tx=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,r)=>(typeof require!="undefined"?require:t)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var G=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ZB=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of WB(t))!JB.call(e,n)&&n!=="default"&&U0(e,n,{get:()=>t[n],enumerable:!(r=zB(t,n))||r.enumerable});return e},Ee=e=>ZB(XB(U0(e!=null?HB(YB(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var G0=G((Oie,nx)=>{"use strict";var rx=Object.getOwnPropertySymbols,$B=Object.prototype.hasOwnProperty,eK=Object.prototype.propertyIsEnumerable;function tK(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function rK(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(t).map(function(o){return t[o]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(o){i[o]=o}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(o){return!1}}nx.exports=rK()?Object.assign:function(e,t){for(var r,n=tK(e),i,o=1;o{"use strict";var Q0=G0(),ml=60103,ix=60106;Et.Fragment=60107;Et.StrictMode=60108;Et.Profiler=60114;var ax=60109,ox=60110,ux=60112;Et.Suspense=60113;var sx=60115,lx=60116;typeof Symbol=="function"&&Symbol.for&&(Mi=Symbol.for,ml=Mi("react.element"),ix=Mi("react.portal"),Et.Fragment=Mi("react.fragment"),Et.StrictMode=Mi("react.strict_mode"),Et.Profiler=Mi("react.profiler"),ax=Mi("react.provider"),ox=Mi("react.context"),ux=Mi("react.forward_ref"),Et.Suspense=Mi("react.suspense"),sx=Mi("react.memo"),lx=Mi("react.lazy"));var Mi,cx=typeof Symbol=="function"&&Symbol.iterator;function nK(e){return e===null||typeof e!="object"?null:(e=cx&&e[cx]||e["@@iterator"],typeof e=="function"?e:null)}function If(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r{"use strict";Tx.exports=bx()});var wx=G(qt=>{"use strict";var bl,Af,Bh,Y0;typeof performance=="object"&&typeof performance.now=="function"?(_x=performance,qt.unstable_now=function(){return _x.now()}):(J0=Date,Ex=J0.now(),qt.unstable_now=function(){return J0.now()-Ex});var _x,J0,Ex;typeof window=="undefined"||typeof MessageChannel!="function"?(Tl=null,X0=null,Z0=function(){if(Tl!==null)try{var e=qt.unstable_now();Tl(!0,e),Tl=null}catch(t){throw setTimeout(Z0,0),t}},bl=function(e){Tl!==null?setTimeout(bl,0,e):(Tl=e,setTimeout(Z0,0))},Af=function(e,t){X0=setTimeout(e,t)},Bh=function(){clearTimeout(X0)},qt.unstable_shouldYield=function(){return!1},Y0=qt.unstable_forceFrameRate=function(){}):(Sx=window.setTimeout,kx=window.clearTimeout,typeof console!="undefined"&&(Ox=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof Ox!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),Rf=!1,jf=null,Kh=-1,$0=5,eb=0,qt.unstable_shouldYield=function(){return qt.unstable_now()>=eb},Y0=function(){},qt.unstable_forceFrameRate=function(e){0>e||125>>1,i=e[n];if(i!==void 0&&0Wh(s,r))d!==void 0&&0>Wh(d,s)?(e[n]=d,e[l]=r,n=l):(e[n]=s,e[o]=r,n=o);else if(d!==void 0&&0>Wh(d,r))e[n]=d,e[l]=r,n=l;else break e}}return t}return null}function Wh(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var La=[],Ho=[],sK=1,qi=null,An=3,Yh=!1,$u=!1,Pf=!1;function nb(e){for(var t=ha(Ho);t!==null;){if(t.callback===null)zh(Ho);else if(t.startTime<=e)zh(Ho),t.sortIndex=t.expirationTime,rb(La,t);else break;t=ha(Ho)}}function ib(e){if(Pf=!1,nb(e),!$u)if(ha(La)!==null)$u=!0,bl(ab);else{var t=ha(Ho);t!==null&&Af(ib,t.startTime-e)}}function ab(e,t){$u=!1,Pf&&(Pf=!1,Bh()),Yh=!0;var r=An;try{for(nb(t),qi=ha(La);qi!==null&&(!(qi.expirationTime>t)||e&&!qt.unstable_shouldYield());){var n=qi.callback;if(typeof n=="function"){qi.callback=null,An=qi.priorityLevel;var i=n(qi.expirationTime<=t);t=qt.unstable_now(),typeof i=="function"?qi.callback=i:qi===ha(La)&&zh(La),nb(t)}else zh(La);qi=ha(La)}if(qi!==null)var o=!0;else{var s=ha(Ho);s!==null&&Af(ib,s.startTime-t),o=!1}return o}finally{qi=null,An=r,Yh=!1}}var lK=Y0;qt.unstable_IdlePriority=5;qt.unstable_ImmediatePriority=1;qt.unstable_LowPriority=4;qt.unstable_NormalPriority=3;qt.unstable_Profiling=null;qt.unstable_UserBlockingPriority=2;qt.unstable_cancelCallback=function(e){e.callback=null};qt.unstable_continueExecution=function(){$u||Yh||($u=!0,bl(ab))};qt.unstable_getCurrentPriorityLevel=function(){return An};qt.unstable_getFirstCallbackNode=function(){return ha(La)};qt.unstable_next=function(e){switch(An){case 1:case 2:case 3:var t=3;break;default:t=An}var r=An;An=t;try{return e()}finally{An=r}};qt.unstable_pauseExecution=function(){};qt.unstable_requestPaint=lK;qt.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=An;An=e;try{return t()}finally{An=r}};qt.unstable_scheduleCallback=function(e,t,r){var n=qt.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0n?(e.sortIndex=r,rb(Ho,e),ha(La)===null&&e===ha(Ho)&&(Pf?Bh():Pf=!0,Af(ib,r-n))):(e.sortIndex=i,rb(La,e),$u||Yh||($u=!0,bl(ab))),e};qt.unstable_wrapCallback=function(e){var t=An;return function(){var r=An;An=t;try{return e.apply(this,arguments)}finally{An=r}}}});var Dx=G((xie,Nx)=>{"use strict";Nx.exports=wx()});var h1=G(Ki=>{"use strict";var Jh=zt(),cr=G0(),ln=Dx();function ye(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;rt}return!1}function $n(e,t,r,n,i,o,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=i,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=s}var yn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){yn[e]=new $n(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];yn[t]=new $n(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){yn[e]=new $n(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){yn[e]=new $n(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){yn[e]=new $n(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){yn[e]=new $n(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){yn[e]=new $n(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){yn[e]=new $n(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){yn[e]=new $n(e,5,!1,e.toLowerCase(),null,!1,!1)});var ob=/[\-:]([a-z])/g;function ub(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(ob,ub);yn[t]=new $n(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(ob,ub);yn[t]=new $n(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(ob,ub);yn[t]=new $n(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){yn[e]=new $n(e,1,!1,e.toLowerCase(),null,!1,!1)});yn.xlinkHref=new $n("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){yn[e]=new $n(e,1,!1,e.toLowerCase(),null,!0,!0)});function sb(e,t,r,n){var i=yn.hasOwnProperty(t)?yn[t]:null,o=i!==null?i.type===0:n?!1:!(!(2l||i[s]!==o[l])return` -`+i[s].replace(" at new "," at ");while(1<=s&&0<=l);break}}}finally{yb=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Gf(e):""}function hK(e){switch(e.tag){case 5:return Gf(e.type);case 16:return Gf("Lazy");case 13:return Gf("Suspense");case 19:return Gf("SuspenseList");case 0:case 2:case 15:return e=ev(e.type,!1),e;case 11:return e=ev(e.type.render,!1),e;case 22:return e=ev(e.type._render,!1),e;case 1:return e=ev(e.type,!0),e;default:return""}}function El(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case zo:return"Fragment";case rs:return"Portal";case qf:return"Profiler";case lb:return"StrictMode";case Vf:return"Suspense";case Zh:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case fb:return(e.displayName||"Context")+".Consumer";case cb:return(e._context.displayName||"Context")+".Provider";case Xh:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case $h:return El(e.type);case pb:return El(e._render);case db:t=e._payload,e=e._init;try{return El(e(t))}catch(r){}}return null}function Wo(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function jx(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function vK(e){var t=jx(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r!="undefined"&&typeof r.get=="function"&&typeof r.set=="function"){var i=r.get,o=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(s){n=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(s){n=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function tv(e){e._valueTracker||(e._valueTracker=vK(e))}function Px(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=jx(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function rv(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(t){return e.body}}function bb(e,t){var r=t.checked;return cr({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r!=null?r:e._wrapperState.initialChecked})}function Fx(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=Wo(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Mx(e,t){t=t.checked,t!=null&&sb(e,"checked",t,!1)}function Tb(e,t){Mx(e,t);var r=Wo(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?_b(e,t.type,r):t.hasOwnProperty("defaultValue")&&_b(e,t.type,Wo(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function qx(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function _b(e,t,r){(t!=="number"||rv(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}function gK(e){var t="";return Jh.Children.forEach(e,function(r){r!=null&&(t+=r)}),t}function Eb(e,t){return e=cr({children:void 0},t),(t=gK(t.children))&&(e.children=t),e}function Sl(e,t,r,n){if(e=e.options,t){t={};for(var i=0;i=r.length))throw Error(ye(93));r=r[0]}t=r}t==null&&(t=""),r=t}e._wrapperState={initialValue:Wo(r)}}function Ux(e,t){var r=Wo(t.value),n=Wo(t.defaultValue);r!=null&&(r=""+r,r!==e.value&&(e.value=r),t.defaultValue==null&&e.defaultValue!==r&&(e.defaultValue=r)),n!=null&&(e.defaultValue=""+n)}function Gx(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}var kb={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function Qx(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Ob(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?Qx(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var nv,Bx=function(e){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(t,r,n,i){MSApp.execUnsafeLocalFunction(function(){return e(t,r,n,i)})}:e}(function(e,t){if(e.namespaceURI!==kb.svg||"innerHTML"in e)e.innerHTML=t;else{for(nv=nv||document.createElement("div"),nv.innerHTML=""+t.valueOf().toString()+"",t=nv.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Qf(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var Bf={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},mK=["Webkit","ms","Moz","O"];Object.keys(Bf).forEach(function(e){mK.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Bf[t]=Bf[e]})});function Kx(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||Bf.hasOwnProperty(e)&&Bf[e]?(""+t).trim():t+"px"}function Hx(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,i=Kx(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,i):e[r]=i}}var yK=cr({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function wb(e,t){if(t){if(yK[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(ye(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(ye(60));if(!(typeof t.dangerouslySetInnerHTML=="object"&&"__html"in t.dangerouslySetInnerHTML))throw Error(ye(61))}if(t.style!=null&&typeof t.style!="object")throw Error(ye(62))}}function Nb(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Db(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var xb=null,kl=null,Ol=null;function zx(e){if(e=sd(e)){if(typeof xb!="function")throw Error(ye(280));var t=e.stateNode;t&&(t=kv(t),xb(e.stateNode,e.type,t))}}function Wx(e){kl?Ol?Ol.push(e):Ol=[e]:kl=e}function Yx(){if(kl){var e=kl,t=Ol;if(Ol=kl=null,zx(e),t)for(e=0;en?0:1<r;r++)t.push(e);return t}function cv(e,t,r){e.pendingLanes|=t;var n=t-1;e.suspendedLanes&=n,e.pingedLanes&=n,e=e.eventTimes,t=31-Zo(t),e[t]=r}var Zo=Math.clz32?Math.clz32:RK,IK=Math.log,AK=Math.LN2;function RK(e){return e===0?32:31-(IK(e)/AK|0)|0}var jK=ln.unstable_UserBlockingPriority,PK=ln.unstable_runWithPriority,fv=!0;function FK(e,t,r,n){ns||Lb();var i=Qb,o=ns;ns=!0;try{Jx(i,e,t,r,n)}finally{(ns=o)||Ab()}}function MK(e,t,r,n){PK(jK,Qb.bind(null,e,t,r,n))}function Qb(e,t,r,n){if(fv){var i;if((i=(t&4)==0)&&0=td),EC=String.fromCharCode(32),SC=!1;function kC(e,t){switch(e){case"keyup":return u3.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function OC(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ll=!1;function l3(e,t){switch(e){case"compositionend":return OC(t);case"keypress":return t.which!==32?null:(SC=!0,EC);case"textInput":return e=t.data,e===EC&&SC?null:e;default:return null}}function c3(e,t){if(Ll)return e==="compositionend"||!Xb&&kC(e,t)?(e=gC(),dv=Kb=$o=null,Ll=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=LC(r)}}function AC(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?AC(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function RC(){for(var e=window,t=rv();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch(n){r=!1}if(r)e=t.contentWindow;else break;t=rv(e.document)}return t}function $b(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var T3=vo&&"documentMode"in document&&11>=document.documentMode,Il=null,eT=null,ad=null,tT=!1;function jC(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;tT||Il==null||Il!==rv(n)||(n=Il,"selectionStart"in n&&$b(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),ad&&id(ad,n)||(ad=n,n=Tv(eT,"onSelect"),0Fl||(e.current=sT[Fl],sT[Fl]=null,Fl--)}function _r(e,t){Fl++,sT[Fl]=e.current,e.current=t}var ru={},Rn=tu(ru),ci=tu(!1),os=ru;function Ml(e,t){var r=e.type.contextTypes;if(!r)return ru;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in r)i[o]=t[o];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function fi(e){return e=e.childContextTypes,e!=null}function Ov(){or(ci),or(Rn)}function JC(e,t,r){if(Rn.current!==ru)throw Error(ye(168));_r(Rn,t),_r(ci,r)}function XC(e,t,r){var n=e.stateNode;if(e=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var i in n)if(!(i in e))throw Error(ye(108,El(t)||"Unknown",i));return cr({},r,n)}function wv(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ru,os=Rn.current,_r(Rn,e),_r(ci,ci.current),!0}function ZC(e,t,r){var n=e.stateNode;if(!n)throw Error(ye(169));r?(e=XC(e,t,os),n.__reactInternalMemoizedMergedChildContext=e,or(ci),or(Rn),_r(Rn,e)):or(ci),_r(ci,r)}var lT=null,us=null,S3=ln.unstable_runWithPriority,cT=ln.unstable_scheduleCallback,fT=ln.unstable_cancelCallback,k3=ln.unstable_shouldYield,$C=ln.unstable_requestPaint,dT=ln.unstable_now,O3=ln.unstable_getCurrentPriorityLevel,Nv=ln.unstable_ImmediatePriority,eL=ln.unstable_UserBlockingPriority,tL=ln.unstable_NormalPriority,rL=ln.unstable_LowPriority,nL=ln.unstable_IdlePriority,pT={},w3=$C!==void 0?$C:function(){},go=null,Dv=null,hT=!1,iL=dT(),jn=1e4>iL?dT:function(){return dT()-iL};function ql(){switch(O3()){case Nv:return 99;case eL:return 98;case tL:return 97;case rL:return 96;case nL:return 95;default:throw Error(ye(332))}}function aL(e){switch(e){case 99:return Nv;case 98:return eL;case 97:return tL;case 96:return rL;case 95:return nL;default:throw Error(ye(332))}}function ss(e,t){return e=aL(e),S3(e,t)}function ld(e,t,r){return e=aL(e),cT(e,t,r)}function Aa(){if(Dv!==null){var e=Dv;Dv=null,fT(e)}oL()}function oL(){if(!hT&&go!==null){hT=!0;var e=0;try{var t=go;ss(99,function(){for(;eR?(M=O,O=null):M=O.sibling;var q=b(T,O,m[R],w);if(q===null){O===null&&(O=M);break}e&&O&&q.alternate===null&&t(T,O),S=o(q,S,R),L===null?x=q:L.sibling=q,L=q,O=M}if(R===m.length)return r(T,O),x;if(O===null){for(;RR?(M=O,O=null):M=O.sibling;var z=b(T,O,q.value,w);if(z===null){O===null&&(O=M);break}e&&O&&z.alternate===null&&t(T,O),S=o(z,S,R),L===null?x=z:L.sibling=z,L=z,O=M}if(q.done)return r(T,O),x;if(O===null){for(;!q.done;R++,q=m.next())q=y(T,q.value,w),q!==null&&(S=o(q,S,R),L===null?x=q:L.sibling=q,L=q);return x}for(O=n(T,O);!q.done;R++,q=m.next())q=D(O,T,R,q.value,w),q!==null&&(e&&q.alternate!==null&&O.delete(q.key===null?R:q.key),S=o(q,S,R),L===null?x=q:L.sibling=q,L=q);return e&&O.forEach(function(B){return t(T,B)}),x}return function(T,S,m,w){var x=typeof m=="object"&&m!==null&&m.type===zo&&m.key===null;x&&(m=m.props.children);var L=typeof m=="object"&&m!==null;if(L)switch(m.$$typeof){case Mf:e:{for(L=m.key,x=S;x!==null;){if(x.key===L){switch(x.tag){case 7:if(m.type===zo){r(T,x.sibling),S=i(x,m.props.children),S.return=T,T=S;break e}break;default:if(x.elementType===m.type){r(T,x.sibling),S=i(x,m.props),S.ref=fd(T,x,m),S.return=T,T=S;break e}}r(T,x);break}else t(T,x);x=x.sibling}m.type===zo?(S=Yl(m.props.children,T.mode,w,m.key),S.return=T,T=S):(w=$v(m.type,m.key,m.props,null,T.mode,w),w.ref=fd(T,S,m),w.return=T,T=w)}return s(T);case rs:e:{for(x=m.key;S!==null;){if(S.key===x)if(S.tag===4&&S.stateNode.containerInfo===m.containerInfo&&S.stateNode.implementation===m.implementation){r(T,S.sibling),S=i(S,m.children||[]),S.return=T,T=S;break e}else{r(T,S);break}else t(T,S);S=S.sibling}S=t_(m,T.mode,w),S.return=T,T=S}return s(T)}if(typeof m=="string"||typeof m=="number")return m=""+m,S!==null&&S.tag===6?(r(T,S.sibling),S=i(S,m),S.return=T,T=S):(r(T,S),S=e_(m,T.mode,w),S.return=T,T=S),s(T);if(Rv(m))return _(T,S,m,w);if(Uf(m))return k(T,S,m,w);if(L&&jv(T,m),typeof m=="undefined"&&!x)switch(T.tag){case 1:case 22:case 0:case 11:case 15:throw Error(ye(152,El(T.type)||"Component"))}return r(T,S)}}var Pv=vL(!0),gL=vL(!1),dd={},Ra=tu(dd),pd=tu(dd),hd=tu(dd);function ls(e){if(e===dd)throw Error(ye(174));return e}function bT(e,t){switch(_r(hd,t),_r(pd,e),_r(Ra,dd),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ob(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Ob(t,e)}or(Ra),_r(Ra,t)}function Gl(){or(Ra),or(pd),or(hd)}function mL(e){ls(hd.current);var t=ls(Ra.current),r=Ob(t,e.type);t!==r&&(_r(pd,e),_r(Ra,r))}function TT(e){pd.current===e&&(or(Ra),or(pd))}var Er=tu(0);function Fv(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||r.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&64)!=0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var mo=null,ou=null,ja=!1;function yL(e,t){var r=Bi(5,null,null,0);r.elementType="DELETED",r.type="DELETED",r.stateNode=t,r.return=e,r.flags=8,e.lastEffect!==null?(e.lastEffect.nextEffect=r,e.lastEffect=r):e.firstEffect=e.lastEffect=r}function bL(e,t){switch(e.tag){case 5:var r=e.type;return t=t.nodeType!==1||r.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,!0):!1;case 13:return!1;default:return!1}}function _T(e){if(ja){var t=ou;if(t){var r=t;if(!bL(e,t)){if(t=Rl(r.nextSibling),!t||!bL(e,t)){e.flags=e.flags&-1025|2,ja=!1,mo=e;return}yL(mo,r)}mo=e,ou=Rl(t.firstChild)}else e.flags=e.flags&-1025|2,ja=!1,mo=e}}function TL(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;mo=e}function Mv(e){if(e!==mo)return!1;if(!ja)return TL(e),ja=!0,!1;var t=e.type;if(e.tag!==5||t!=="head"&&t!=="body"&&!aT(t,e.memoizedProps))for(t=ou;t;)yL(e,t),t=Rl(t.nextSibling);if(TL(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(ye(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var r=e.data;if(r==="/$"){if(t===0){ou=Rl(e.nextSibling);break e}t--}else r!=="$"&&r!=="$!"&&r!=="$?"||t++}e=e.nextSibling}ou=null}}else ou=mo?Rl(e.stateNode.nextSibling):null;return!0}function ET(){ou=mo=null,ja=!1}var Ql=[];function ST(){for(var e=0;eo))throw Error(ye(301));o+=1,bn=Pn=null,t.updateQueue=null,vd.current=L3,e=r(n,i)}while(md)}if(vd.current=Qv,t=Pn!==null&&Pn.next!==null,gd=0,bn=Pn=Dr=null,qv=!1,t)throw Error(ye(300));return e}function cs(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return bn===null?Dr.memoizedState=bn=e:bn=bn.next=e,bn}function fs(){if(Pn===null){var e=Dr.alternate;e=e!==null?e.memoizedState:null}else e=Pn.next;var t=bn===null?Dr.memoizedState:bn.next;if(t!==null)bn=t,Pn=e;else{if(e===null)throw Error(ye(310));Pn=e,e={memoizedState:Pn.memoizedState,baseState:Pn.baseState,baseQueue:Pn.baseQueue,queue:Pn.queue,next:null},bn===null?Dr.memoizedState=bn=e:bn=bn.next=e}return bn}function Pa(e,t){return typeof t=="function"?t(e):t}function yd(e){var t=fs(),r=t.queue;if(r===null)throw Error(ye(311));r.lastRenderedReducer=e;var n=Pn,i=n.baseQueue,o=r.pending;if(o!==null){if(i!==null){var s=i.next;i.next=o.next,o.next=s}n.baseQueue=i=o,r.pending=null}if(i!==null){i=i.next,n=n.baseState;var l=s=o=null,d=i;do{var h=d.lane;if((gd&h)===h)l!==null&&(l=l.next={lane:0,action:d.action,eagerReducer:d.eagerReducer,eagerState:d.eagerState,next:null}),n=d.eagerReducer===e?d.eagerState:e(n,d.action);else{var v={lane:h,action:d.action,eagerReducer:d.eagerReducer,eagerState:d.eagerState,next:null};l===null?(s=l=v,o=n):l=l.next=v,Dr.lanes|=h,Ed|=h}d=d.next}while(d!==null&&d!==i);l===null?o=n:l.next=s,Vi(n,t.memoizedState)||(ga=!0),t.memoizedState=n,t.baseState=o,t.baseQueue=l,r.lastRenderedState=n}return[t.memoizedState,r.dispatch]}function bd(e){var t=fs(),r=t.queue;if(r===null)throw Error(ye(311));r.lastRenderedReducer=e;var n=r.dispatch,i=r.pending,o=t.memoizedState;if(i!==null){r.pending=null;var s=i=i.next;do o=e(o,s.action),s=s.next;while(s!==i);Vi(o,t.memoizedState)||(ga=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),r.lastRenderedState=o}return[o,n]}function _L(e,t,r){var n=t._getVersion;n=n(t._source);var i=t._workInProgressVersionPrimary;if(i!==null?e=i===n:(e=e.mutableReadLanes,(e=(gd&e)===e)&&(t._workInProgressVersionPrimary=n,Ql.push(t))),e)return r(t._source);throw Ql.push(t),Error(ye(350))}function EL(e,t,r,n){var i=ei;if(i===null)throw Error(ye(349));var o=t._getVersion,s=o(t._source),l=vd.current,d=l.useState(function(){return _L(i,t,r)}),h=d[1],v=d[0];d=bn;var y=e.memoizedState,b=y.refs,D=b.getSnapshot,_=y.source;y=y.subscribe;var k=Dr;return e.memoizedState={refs:b,source:t,subscribe:n},l.useEffect(function(){b.getSnapshot=r,b.setSnapshot=h;var T=o(t._source);if(!Vi(s,T)){T=r(t._source),Vi(v,T)||(h(T),T=su(k),i.mutableReadLanes|=T&i.pendingLanes),T=i.mutableReadLanes,i.entangledLanes|=T;for(var S=i.entanglements,m=T;0r?98:r,function(){e(!0)}),ss(97<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=s.createElement(r,{is:n.is}):(e=s.createElement(r),r==="select"&&(s=e,n.multiple?s.multiple=!0:n.size&&(s.size=n.size))):e=s.createElementNS(e,r),e[eu]=t,e[Sv]=n,QL(e,t,!1,!1),t.stateNode=e,s=Nb(r,n),r){case"dialog":ar("cancel",e),ar("close",e),i=n;break;case"iframe":case"object":case"embed":ar("load",e),i=n;break;case"video":case"audio":for(i=0;iKT&&(t.flags|=64,o=!0,_d(n,!1),t.lanes=33554432)}else{if(!o)if(e=Fv(s),e!==null){if(t.flags|=64,o=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),_d(n,!0),n.tail===null&&n.tailMode==="hidden"&&!s.alternate&&!ja)return t=t.lastEffect=n.lastEffect,t!==null&&(t.nextEffect=null),null}else 2*jn()-n.renderingStartTime>KT&&r!==1073741824&&(t.flags|=64,o=!0,_d(n,!1),t.lanes=33554432);n.isBackwards?(s.sibling=t.child,t.child=s):(r=n.last,r!==null?r.sibling=s:t.child=s,n.last=s)}return n.tail!==null?(r=n.tail,n.rendering=r,n.tail=r.sibling,n.lastEffect=t.lastEffect,n.renderingStartTime=jn(),r.sibling=null,t=Er.current,_r(Er,o?t&1|2:t&1),r):null;case 23:case 24:return XT(),e!==null&&e.memoizedState!==null!=(t.memoizedState!==null)&&n.mode!=="unstable-defer-without-hiding"&&(t.flags|=4),null}throw Error(ye(156,t.tag))}function R3(e){switch(e.tag){case 1:fi(e.type)&&Ov();var t=e.flags;return t&4096?(e.flags=t&-4097|64,e):null;case 3:if(Gl(),or(ci),or(Rn),ST(),t=e.flags,(t&64)!=0)throw Error(ye(285));return e.flags=t&-4097|64,e;case 5:return TT(e),null;case 13:return or(Er),t=e.flags,t&4096?(e.flags=t&-4097|64,e):null;case 19:return or(Er),null;case 4:return Gl(),null;case 10:return gT(e),null;case 23:case 24:return XT(),null;default:return null}}function jT(e,t){try{var r="",n=t;do r+=hK(n),n=n.return;while(n);var i=r}catch(o){i=` -Error generating stack: `+o.message+` -`+o.stack}return{value:e,source:t,stack:i}}function PT(e,t){try{console.error(t.value)}catch(r){setTimeout(function(){throw r})}}var j3=typeof WeakMap=="function"?WeakMap:Map;function HL(e,t,r){r=iu(-1,r),r.tag=3,r.payload={element:null};var n=t.value;return r.callback=function(){zv||(zv=!0,HT=n),PT(e,t)},r}function zL(e,t,r){r=iu(-1,r),r.tag=3;var n=e.type.getDerivedStateFromError;if(typeof n=="function"){var i=t.value;r.payload=function(){return PT(e,t),n(i)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(r.callback=function(){typeof n!="function"&&(Fa===null?Fa=new Set([this]):Fa.add(this),PT(e,t));var s=t.stack;this.componentDidCatch(t.value,{componentStack:s!==null?s:""})}),r}var P3=typeof WeakSet=="function"?WeakSet:Set;function WL(e){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(r){fu(e,r)}else t.current=null}function F3(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(t.flags&256&&e!==null){var r=e.memoizedProps,n=e.memoizedState;e=t.stateNode,t=e.getSnapshotBeforeUpdate(t.elementType===t.type?r:va(t.type,r),n),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:t.flags&256&&oT(t.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(ye(163))}function M3(e,t,r){switch(r.tag){case 0:case 11:case 15:case 22:if(t=r.updateQueue,t=t!==null?t.lastEffect:null,t!==null){e=t=t.next;do{if((e.tag&3)==3){var n=e.create;e.destroy=n()}e=e.next}while(e!==t)}if(t=r.updateQueue,t=t!==null?t.lastEffect:null,t!==null){e=t=t.next;do{var i=e;n=i.next,i=i.tag,(i&4)!=0&&(i&1)!=0&&(l1(r,e),H3(r,e)),e=n}while(e!==t)}return;case 1:e=r.stateNode,r.flags&4&&(t===null?e.componentDidMount():(n=r.elementType===r.type?t.memoizedProps:va(r.type,t.memoizedProps),e.componentDidUpdate(n,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),t=r.updateQueue,t!==null&&cL(r,t,e);return;case 3:if(t=r.updateQueue,t!==null){if(e=null,r.child!==null)switch(r.child.tag){case 5:e=r.child.stateNode;break;case 1:e=r.child.stateNode}cL(r,t,e)}return;case 5:e=r.stateNode,t===null&&r.flags&4&&KC(r.type,r.memoizedProps)&&e.focus();return;case 6:return;case 4:return;case 12:return;case 13:r.memoizedState===null&&(r=r.alternate,r!==null&&(r=r.memoizedState,r!==null&&(r=r.dehydrated,r!==null&&sC(r))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(ye(163))}function YL(e,t){for(var r=e;;){if(r.tag===5){var n=r.stateNode;if(t)n=n.style,typeof n.setProperty=="function"?n.setProperty("display","none","important"):n.display="none";else{n=r.stateNode;var i=r.memoizedProps.style;i=i!=null&&i.hasOwnProperty("display")?i.display:null,n.style.display=Kx("display",i)}}else if(r.tag===6)r.stateNode.nodeValue=t?"":r.memoizedProps;else if((r.tag!==23&&r.tag!==24||r.memoizedState===null||r===e)&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===e)break;for(;r.sibling===null;){if(r.return===null||r.return===e)return;r=r.return}r.sibling.return=r.return,r=r.sibling}}function JL(e,t){if(us&&typeof us.onCommitFiberUnmount=="function")try{us.onCommitFiberUnmount(lT,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(e=t.updateQueue,e!==null&&(e=e.lastEffect,e!==null)){var r=e=e.next;do{var n=r,i=n.destroy;if(n=n.tag,i!==void 0)if((n&4)!=0)l1(t,r);else{n=t;try{i()}catch(o){fu(n,o)}}r=r.next}while(r!==e)}break;case 1:if(WL(t),e=t.stateNode,typeof e.componentWillUnmount=="function")try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){fu(t,o)}break;case 5:WL(t);break;case 4:e1(e,t)}}function XL(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function ZL(e){return e.tag===5||e.tag===3||e.tag===4}function $L(e){e:{for(var t=e.return;t!==null;){if(ZL(t))break e;t=t.return}throw Error(ye(160))}var r=t;switch(t=r.stateNode,r.tag){case 5:var n=!1;break;case 3:t=t.containerInfo,n=!0;break;case 4:t=t.containerInfo,n=!0;break;default:throw Error(ye(161))}r.flags&16&&(Qf(t,""),r.flags&=-17);e:t:for(r=e;;){for(;r.sibling===null;){if(r.return===null||ZL(r.return)){r=null;break e}r=r.return}for(r.sibling.return=r.return,r=r.sibling;r.tag!==5&&r.tag!==6&&r.tag!==18;){if(r.flags&2||r.child===null||r.tag===4)continue t;r.child.return=r,r=r.child}if(!(r.flags&2)){r=r.stateNode;break e}}n?FT(e,r,t):MT(e,r,t)}function FT(e,t,r){var n=e.tag,i=n===5||n===6;if(i)e=i?e.stateNode:e.stateNode.instance,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=_v));else if(n!==4&&(e=e.child,e!==null))for(FT(e,t,r),e=e.sibling;e!==null;)FT(e,t,r),e=e.sibling}function MT(e,t,r){var n=e.tag,i=n===5||n===6;if(i)e=i?e.stateNode:e.stateNode.instance,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(MT(e,t,r),e=e.sibling;e!==null;)MT(e,t,r),e=e.sibling}function e1(e,t){for(var r=t,n=!1,i,o;;){if(!n){n=r.return;e:for(;;){if(n===null)throw Error(ye(160));switch(i=n.stateNode,n.tag){case 5:o=!1;break e;case 3:i=i.containerInfo,o=!0;break e;case 4:i=i.containerInfo,o=!0;break e}n=n.return}n=!0}if(r.tag===5||r.tag===6){e:for(var s=e,l=r,d=l;;)if(JL(s,d),d.child!==null&&d.tag!==4)d.child.return=d,d=d.child;else{if(d===l)break e;for(;d.sibling===null;){if(d.return===null||d.return===l)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}o?(s=i,l=r.stateNode,s.nodeType===8?s.parentNode.removeChild(l):s.removeChild(l)):i.removeChild(r.stateNode)}else if(r.tag===4){if(r.child!==null){i=r.stateNode.containerInfo,o=!0,r.child.return=r,r=r.child;continue}}else if(JL(e,r),r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break;for(;r.sibling===null;){if(r.return===null||r.return===t)return;r=r.return,r.tag===4&&(n=!1)}r.sibling.return=r.return,r=r.sibling}}function qT(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var n=r=r.next;do(n.tag&3)==3&&(e=n.destroy,n.destroy=void 0,e!==void 0&&e()),n=n.next;while(n!==r)}return;case 1:return;case 5:if(r=t.stateNode,r!=null){n=t.memoizedProps;var i=e!==null?e.memoizedProps:n;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,o!==null){for(r[Sv]=n,e==="input"&&n.type==="radio"&&n.name!=null&&Mx(r,n),Nb(e,i),t=Nb(e,n),i=0;ii&&(i=s),r&=~o}if(r=i,r=jn()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*V3(r/1960))-r,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}Tn!==5&&(Tn=2),d=jT(d,l),b=s;do{switch(b.tag){case 3:o=d,b.flags|=4096,t&=-t,b.lanes|=t;var L=HL(b,o,t);lL(b,L);break e;case 1:o=d;var O=b.type,R=b.stateNode;if((b.flags&64)==0&&(typeof O.getDerivedStateFromError=="function"||R!==null&&typeof R.componentDidCatch=="function"&&(Fa===null||!Fa.has(R)))){b.flags|=4096,t&=-t,b.lanes|=t;var M=zL(b,o,t);lL(b,M);break e}}b=b.return}while(b!==null)}s1(r)}catch(q){t=q,Jr===r&&r!==null&&(Jr=r=r.return);continue}break}while(1)}function o1(){var e=Kv.current;return Kv.current=Qv,e===null?Qv:e}function Nd(e,t){var r=tt;tt|=16;var n=o1();ei===e&&Fn===t||Wl(e,t);do try{G3();break}catch(i){a1(e,i)}while(1);if(vT(),tt=r,Kv.current=n,Jr!==null)throw Error(ye(261));return ei=null,Fn=0,Tn}function G3(){for(;Jr!==null;)u1(Jr)}function Q3(){for(;Jr!==null&&!k3();)u1(Jr)}function u1(e){var t=f1(e.alternate,e,ds);e.memoizedProps=e.pendingProps,t===null?s1(e):Jr=t,VT.current=null}function s1(e){var t=e;do{var r=t.alternate;if(e=t.return,(t.flags&2048)==0){if(r=A3(r,t,ds),r!==null){Jr=r;return}if(r=t,r.tag!==24&&r.tag!==23||r.memoizedState===null||(ds&1073741824)!=0||(r.mode&4)==0){for(var n=0,i=r.child;i!==null;)n|=i.lanes|i.childLanes,i=i.sibling;r.childLanes=n}e!==null&&(e.flags&2048)==0&&(e.firstEffect===null&&(e.firstEffect=t.firstEffect),t.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1s&&(l=s,s=L,L=l),l=IC(m,L),o=IC(m,s),l&&o&&(x.rangeCount!==1||x.anchorNode!==l.node||x.anchorOffset!==l.offset||x.focusNode!==o.node||x.focusOffset!==o.offset)&&(w=w.createRange(),w.setStart(l.node,l.offset),x.removeAllRanges(),L>s?(x.addRange(w),x.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),x.addRange(w)))))),w=[],x=m;x=x.parentNode;)x.nodeType===1&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for(typeof m.focus=="function"&&m.focus(),m=0;mjn()-BT?Wl(e,0):GT|=r),Qi(e,t)}function Y3(e,t){var r=e.stateNode;r!==null&&r.delete(t),t=0,t===0&&(t=e.mode,(t&2)==0?t=1:(t&4)==0?t=ql()===99?1:2:(To===0&&(To=Bl),t=xl(62914560&~To),t===0&&(t=4194304))),r=wi(),e=Xv(e,t),e!==null&&(cv(e,t,r),Qi(e,r))}var f1;f1=function(e,t,r){var n=t.lanes;if(e!==null)if(e.memoizedProps!==t.pendingProps||ci.current)ga=!0;else if((r&n)!=0)ga=(e.flags&16384)!=0;else{switch(ga=!1,t.tag){case 3:PL(t),ET();break;case 5:mL(t);break;case 1:fi(t.type)&&wv(t);break;case 4:bT(t,t.stateNode.containerInfo);break;case 10:n=t.memoizedProps.value;var i=t.type._context;_r(xv,i._currentValue),i._currentValue=n;break;case 13:if(t.memoizedState!==null)return(r&t.child.childLanes)!=0?FL(e,t,r):(_r(Er,Er.current&1),t=yo(e,t,r),t!==null?t.sibling:null);_r(Er,Er.current&1);break;case 19:if(n=(r&t.childLanes)!=0,(e.flags&64)!=0){if(n)return GL(e,t,r);t.flags|=64}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),_r(Er,Er.current),n)break;return null;case 23:case 24:return t.lanes=0,CT(e,t,r)}return yo(e,t,r)}else ga=!1;switch(t.lanes=0,t.tag){case 2:if(n=t.type,e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,i=Ml(t,Rn.current),Ul(t,r),i=OT(null,t,n,e,i,r),t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,fi(n)){var o=!0;wv(t)}else o=!1;t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,mT(t);var s=n.getDerivedStateFromProps;typeof s=="function"&&Iv(t,n,s,e),i.updater=Av,t.stateNode=i,i._reactInternals=t,yT(t,n,e,r),t=IT(null,t,n,!0,o,r)}else t.tag=0,pi(null,t,i,r),t=t.child;return t;case 16:i=t.elementType;e:{switch(e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=i._init,i=o(i._payload),t.type=i,o=t.tag=X3(i),e=va(i,e),o){case 0:t=LT(null,t,i,e,r);break e;case 1:t=jL(null,t,i,e,r);break e;case 11:t=LL(null,t,i,e,r);break e;case 14:t=IL(null,t,i,va(i.type,e),n,r);break e}throw Error(ye(306,i,""))}return t;case 0:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:va(n,i),LT(e,t,n,i,r);case 1:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:va(n,i),jL(e,t,n,i,r);case 3:if(PL(t),n=t.updateQueue,e===null||n===null)throw Error(ye(282));if(n=t.pendingProps,i=t.memoizedState,i=i!==null?i.element:null,sL(e,t),cd(t,n,null,r),n=t.memoizedState.element,n===i)ET(),t=yo(e,t,r);else{if(i=t.stateNode,(o=i.hydrate)&&(ou=Rl(t.stateNode.containerInfo.firstChild),mo=t,o=ja=!0),o){if(e=i.mutableSourceEagerHydrationData,e!=null)for(i=0;i{"use strict";function v1(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v1)}catch(e){console.error(e)}}v1(),g1.exports=h1()});var m1=G(Jl=>{"use strict";Object.defineProperty(Jl,"__esModule",{value:!0});Jl.versionInfo=Jl.version=void 0;var iH="15.5.0";Jl.version=iH;var aH=Object.freeze({major:15,minor:5,patch:0,preReleaseTag:null});Jl.versionInfo=aH});var rg=G(o_=>{"use strict";Object.defineProperty(o_,"__esModule",{value:!0});o_.default=oH;function oH(e){return typeof(e==null?void 0:e.then)=="function"}});var Ma=G(u_=>{"use strict";Object.defineProperty(u_,"__esModule",{value:!0});u_.default=uH;function ng(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ng=function(r){return typeof r}:ng=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ng(e)}function uH(e){return ng(e)=="object"&&e!==null}});var qa=G(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});pu.SYMBOL_TO_STRING_TAG=pu.SYMBOL_ASYNC_ITERATOR=pu.SYMBOL_ITERATOR=void 0;var sH=typeof Symbol=="function"&&Symbol.iterator!=null?Symbol.iterator:"@@iterator";pu.SYMBOL_ITERATOR=sH;var lH=typeof Symbol=="function"&&Symbol.asyncIterator!=null?Symbol.asyncIterator:"@@asyncIterator";pu.SYMBOL_ASYNC_ITERATOR=lH;var cH=typeof Symbol=="function"&&Symbol.toStringTag!=null?Symbol.toStringTag:"@@toStringTag";pu.SYMBOL_TO_STRING_TAG=cH});var ig=G(s_=>{"use strict";Object.defineProperty(s_,"__esModule",{value:!0});s_.getLocation=fH;function fH(e,t){for(var r=/\r\n|[\n\r]/g,n=1,i=t+1,o;(o=r.exec(e.body))&&o.index{"use strict";Object.defineProperty(og,"__esModule",{value:!0});og.printLocation=pH;og.printSourceLocation=y1;var dH=ig();function pH(e){return y1(e.source,(0,dH.getLocation)(e.source,e.start))}function y1(e,t){var r=e.locationOffset.column-1,n=ag(r)+e.body,i=t.line-1,o=e.locationOffset.line-1,s=t.line+o,l=t.line===1?r:0,d=t.column+l,h="".concat(e.name,":").concat(s,":").concat(d,` -`),v=n.split(/\r\n|[\n\r]/g),y=v[i];if(y.length>120){for(var b=Math.floor(d/80),D=d%80,_=[],k=0;k{"use strict";function ug(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ug=function(r){return typeof r}:ug=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ug(e)}Object.defineProperty(Rd,"__esModule",{value:!0});Rd.printError=O1;Rd.GraphQLError=void 0;var vH=mH(Ma()),gH=qa(),T1=ig(),_1=l_();function mH(e){return e&&e.__esModule?e:{default:e}}function yH(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function E1(e,t){for(var r=0;r{"use strict";Object.defineProperty(f_,"__esModule",{value:!0});f_.syntaxError=OH;var kH=Je();function OH(e,t,r){return new kH.GraphQLError("Syntax Error: ".concat(r),void 0,e,[t])}});var Jt=G(cg=>{"use strict";Object.defineProperty(cg,"__esModule",{value:!0});cg.Kind=void 0;var wH=Object.freeze({NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType",SCHEMA_DEFINITION:"SchemaDefinition",OPERATION_TYPE_DEFINITION:"OperationTypeDefinition",SCALAR_TYPE_DEFINITION:"ScalarTypeDefinition",OBJECT_TYPE_DEFINITION:"ObjectTypeDefinition",FIELD_DEFINITION:"FieldDefinition",INPUT_VALUE_DEFINITION:"InputValueDefinition",INTERFACE_TYPE_DEFINITION:"InterfaceTypeDefinition",UNION_TYPE_DEFINITION:"UnionTypeDefinition",ENUM_TYPE_DEFINITION:"EnumTypeDefinition",ENUM_VALUE_DEFINITION:"EnumValueDefinition",INPUT_OBJECT_TYPE_DEFINITION:"InputObjectTypeDefinition",DIRECTIVE_DEFINITION:"DirectiveDefinition",SCHEMA_EXTENSION:"SchemaExtension",SCALAR_TYPE_EXTENSION:"ScalarTypeExtension",OBJECT_TYPE_EXTENSION:"ObjectTypeExtension",INTERFACE_TYPE_EXTENSION:"InterfaceTypeExtension",UNION_TYPE_EXTENSION:"UnionTypeExtension",ENUM_TYPE_EXTENSION:"EnumTypeExtension",INPUT_OBJECT_TYPE_EXTENSION:"InputObjectTypeExtension"});cg.Kind=wH});var _n=G(d_=>{"use strict";Object.defineProperty(d_,"__esModule",{value:!0});d_.default=NH;function NH(e,t){var r=Boolean(e);if(!r)throw new Error(t!=null?t:"Unexpected invariant triggered.")}});var p_=G(fg=>{"use strict";Object.defineProperty(fg,"__esModule",{value:!0});fg.default=void 0;var DH=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):void 0,xH=DH;fg.default=xH});var dg=G(h_=>{"use strict";Object.defineProperty(h_,"__esModule",{value:!0});h_.default=LH;var CH=N1(_n()),w1=N1(p_());function N1(e){return e&&e.__esModule?e:{default:e}}function LH(e){var t=e.prototype.toJSON;typeof t=="function"||(0,CH.default)(0),e.prototype.inspect=t,w1.default&&(e.prototype[w1.default]=t)}});var Xl=G(hs=>{"use strict";Object.defineProperty(hs,"__esModule",{value:!0});hs.isNode=AH;hs.Token=hs.Location=void 0;var D1=IH(dg());function IH(e){return e&&e.__esModule?e:{default:e}}var x1=function(){function e(r,n,i){this.start=r.start,this.end=n.end,this.startToken=r,this.endToken=n,this.source=i}var t=e.prototype;return t.toJSON=function(){return{start:this.start,end:this.end}},e}();hs.Location=x1;(0,D1.default)(x1);var C1=function(){function e(r,n,i,o,s,l,d){this.kind=r,this.start=n,this.end=i,this.line=o,this.column=s,this.value=d,this.prev=l,this.next=null}var t=e.prototype;return t.toJSON=function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}},e}();hs.Token=C1;(0,D1.default)(C1);function AH(e){return e!=null&&typeof e.kind=="string"}});var Zl=G(pg=>{"use strict";Object.defineProperty(pg,"__esModule",{value:!0});pg.TokenKind=void 0;var RH=Object.freeze({SOF:"",EOF:"",BANG:"!",DOLLAR:"$",AMP:"&",PAREN_L:"(",PAREN_R:")",SPREAD:"...",COLON:":",EQUALS:"=",AT:"@",BRACKET_L:"[",BRACKET_R:"]",BRACE_L:"{",PIPE:"|",BRACE_R:"}",NAME:"Name",INT:"Int",FLOAT:"Float",STRING:"String",BLOCK_STRING:"BlockString",COMMENT:"Comment"});pg.TokenKind=RH});var jt=G(v_=>{"use strict";Object.defineProperty(v_,"__esModule",{value:!0});v_.default=MH;var jH=PH(p_());function PH(e){return e&&e.__esModule?e:{default:e}}function hg(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?hg=function(r){return typeof r}:hg=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},hg(e)}var FH=10,L1=2;function MH(e){return vg(e,[])}function vg(e,t){switch(hg(e)){case"string":return JSON.stringify(e);case"function":return e.name?"[function ".concat(e.name,"]"):"[function]";case"object":return e===null?"null":qH(e,t);default:return String(e)}}function qH(e,t){if(t.indexOf(e)!==-1)return"[Circular]";var r=[].concat(t,[e]),n=GH(e);if(n!==void 0){var i=n.call(e);if(i!==e)return typeof i=="string"?i:vg(i,r)}else if(Array.isArray(e))return UH(e,r);return VH(e,r)}function VH(e,t){var r=Object.keys(e);if(r.length===0)return"{}";if(t.length>L1)return"["+QH(e)+"]";var n=r.map(function(i){var o=vg(e[i],t);return i+": "+o});return"{ "+n.join(", ")+" }"}function UH(e,t){if(e.length===0)return"[]";if(t.length>L1)return"[Array]";for(var r=Math.min(FH,e.length),n=e.length-r,i=[],o=0;o1&&i.push("... ".concat(n," more items")),"["+i.join(", ")+"]"}function GH(e){var t=e[String(jH.default)];if(typeof t=="function")return t;if(typeof e.inspect=="function")return e.inspect}function QH(e){var t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if(t==="Object"&&typeof e.constructor=="function"){var r=e.constructor.name;if(typeof r=="string"&&r!=="")return r}return t}});var Hi=G(g_=>{"use strict";Object.defineProperty(g_,"__esModule",{value:!0});g_.default=BH;function BH(e,t){var r=Boolean(e);if(!r)throw new Error(t)}});var jd=G(gg=>{"use strict";Object.defineProperty(gg,"__esModule",{value:!0});gg.default=void 0;var KH=function(t,r){return t instanceof r};gg.default=KH});var mg=G(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});Pd.isSource=JH;Pd.Source=void 0;var HH=qa(),zH=y_(jt()),m_=y_(Hi()),WH=y_(jd());function y_(e){return e&&e.__esModule?e:{default:e}}function I1(e,t){for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:"GraphQL request",n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{line:1,column:1};typeof t=="string"||(0,m_.default)(0,"Body must be a string. Received: ".concat((0,zH.default)(t),".")),this.body=t,this.name=r,this.locationOffset=n,this.locationOffset.line>0||(0,m_.default)(0,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||(0,m_.default)(0,"column in locationOffset is 1-indexed and must be positive.")}return YH(e,[{key:HH.SYMBOL_TO_STRING_TAG,get:function(){return"Source"}}]),e}();Pd.Source=A1;function JH(e){return(0,WH.default)(e,A1)}});var $l=G(yg=>{"use strict";Object.defineProperty(yg,"__esModule",{value:!0});yg.DirectiveLocation=void 0;var XH=Object.freeze({QUERY:"QUERY",MUTATION:"MUTATION",SUBSCRIPTION:"SUBSCRIPTION",FIELD:"FIELD",FRAGMENT_DEFINITION:"FRAGMENT_DEFINITION",FRAGMENT_SPREAD:"FRAGMENT_SPREAD",INLINE_FRAGMENT:"INLINE_FRAGMENT",VARIABLE_DEFINITION:"VARIABLE_DEFINITION",SCHEMA:"SCHEMA",SCALAR:"SCALAR",OBJECT:"OBJECT",FIELD_DEFINITION:"FIELD_DEFINITION",ARGUMENT_DEFINITION:"ARGUMENT_DEFINITION",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",ENUM_VALUE:"ENUM_VALUE",INPUT_OBJECT:"INPUT_OBJECT",INPUT_FIELD_DEFINITION:"INPUT_FIELD_DEFINITION"});yg.DirectiveLocation=XH});var ec=G(Fd=>{"use strict";Object.defineProperty(Fd,"__esModule",{value:!0});Fd.dedentBlockStringValue=ZH;Fd.getBlockStringIndentation=j1;Fd.printBlockString=$H;function ZH(e){var t=e.split(/\r\n|[\n\r]/g),r=j1(e);if(r!==0)for(var n=1;ni&&R1(t[o-1]);)--o;return t.slice(i,o).join(` -`)}function R1(e){for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:"",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=e.indexOf(` -`)===-1,i=e[0]===" "||e[0]===" ",o=e[e.length-1]==='"',s=e[e.length-1]==="\\",l=!n||o||s||r,d="";return l&&!(n&&i)&&(d+=` -`+t),d+=t?e.replace(/\n/g,` -`+t):e,l&&(d+=` -`),'"""'+d.replace(/"""/g,'\\"""')+'"""'}});var Tg=G(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});Md.isPunctuatorTokenKind=rz;Md.Lexer=void 0;var Va=lg(),xr=Xl(),dt=Zl(),ez=ec(),tz=function(){function e(r){var n=new xr.Token(dt.TokenKind.SOF,0,0,0,0,null);this.source=r,this.lastToken=n,this.token=n,this.line=1,this.lineStart=0}var t=e.prototype;return t.advance=function(){this.lastToken=this.token;var n=this.token=this.lookahead();return n},t.lookahead=function(){var n=this.token;if(n.kind!==dt.TokenKind.EOF)do{var i;n=(i=n.next)!==null&&i!==void 0?i:n.next=nz(this,n)}while(n.kind===dt.TokenKind.COMMENT);return n},e}();Md.Lexer=tz;function rz(e){return e===dt.TokenKind.BANG||e===dt.TokenKind.DOLLAR||e===dt.TokenKind.AMP||e===dt.TokenKind.PAREN_L||e===dt.TokenKind.PAREN_R||e===dt.TokenKind.SPREAD||e===dt.TokenKind.COLON||e===dt.TokenKind.EQUALS||e===dt.TokenKind.AT||e===dt.TokenKind.BRACKET_L||e===dt.TokenKind.BRACKET_R||e===dt.TokenKind.BRACE_L||e===dt.TokenKind.PIPE||e===dt.TokenKind.BRACE_R}function vs(e){return isNaN(e)?dt.TokenKind.EOF:e<127?JSON.stringify(String.fromCharCode(e)):'"\\u'.concat(("00"+e.toString(16).toUpperCase()).slice(-4),'"')}function nz(e,t){for(var r=e.source,n=r.body,i=n.length,o=t.end;o31||s===9));return new xr.Token(dt.TokenKind.COMMENT,t,l,r,n,i,o.slice(t+1,l))}function oz(e,t,r,n,i,o){var s=e.body,l=r,d=t,h=!1;if(l===45&&(l=s.charCodeAt(++d)),l===48){if(l=s.charCodeAt(++d),l>=48&&l<=57)throw(0,Va.syntaxError)(e,d,"Invalid number, unexpected digit after 0: ".concat(vs(l),"."))}else d=b_(e,d,l),l=s.charCodeAt(d);if(l===46&&(h=!0,l=s.charCodeAt(++d),d=b_(e,d,l),l=s.charCodeAt(d)),(l===69||l===101)&&(h=!0,l=s.charCodeAt(++d),(l===43||l===45)&&(l=s.charCodeAt(++d)),d=b_(e,d,l),l=s.charCodeAt(d)),l===46||fz(l))throw(0,Va.syntaxError)(e,d,"Invalid number, expected digit but got: ".concat(vs(l),"."));return new xr.Token(h?dt.TokenKind.FLOAT:dt.TokenKind.INT,t,d,n,i,o,s.slice(t,d))}function b_(e,t,r){var n=e.body,i=t,o=r;if(o>=48&&o<=57){do o=n.charCodeAt(++i);while(o>=48&&o<=57);return i}throw(0,Va.syntaxError)(e,i,"Invalid number, expected digit but got: ".concat(vs(o),"."))}function uz(e,t,r,n,i){for(var o=e.body,s=t+1,l=s,d=0,h="";s=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function cz(e,t,r,n,i){for(var o=e.body,s=o.length,l=t+1,d=0;l!==s&&!isNaN(d=o.charCodeAt(l))&&(d===95||d>=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122);)++l;return new xr.Token(dt.TokenKind.NAME,t,l,r,n,i,o.slice(t,l))}function fz(e){return e===95||e>=65&&e<=90||e>=97&&e<=122}});var tc=G(gs=>{"use strict";Object.defineProperty(gs,"__esModule",{value:!0});gs.parse=hz;gs.parseValue=vz;gs.parseType=gz;gs.Parser=void 0;var T_=lg(),$e=Jt(),dz=Xl(),De=Zl(),P1=mg(),pz=$l(),F1=Tg();function hz(e,t){var r=new _g(e,t);return r.parseDocument()}function vz(e,t){var r=new _g(e,t);r.expectToken(De.TokenKind.SOF);var n=r.parseValueLiteral(!1);return r.expectToken(De.TokenKind.EOF),n}function gz(e,t){var r=new _g(e,t);r.expectToken(De.TokenKind.SOF);var n=r.parseTypeReference();return r.expectToken(De.TokenKind.EOF),n}var _g=function(){function e(r,n){var i=(0,P1.isSource)(r)?r:new P1.Source(r);this._lexer=new F1.Lexer(i),this._options=n}var t=e.prototype;return t.parseName=function(){var n=this.expectToken(De.TokenKind.NAME);return{kind:$e.Kind.NAME,value:n.value,loc:this.loc(n)}},t.parseDocument=function(){var n=this._lexer.token;return{kind:$e.Kind.DOCUMENT,definitions:this.many(De.TokenKind.SOF,this.parseDefinition,De.TokenKind.EOF),loc:this.loc(n)}},t.parseDefinition=function(){if(this.peek(De.TokenKind.NAME))switch(this._lexer.token.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"schema":case"scalar":case"type":case"interface":case"union":case"enum":case"input":case"directive":return this.parseTypeSystemDefinition();case"extend":return this.parseTypeSystemExtension()}else{if(this.peek(De.TokenKind.BRACE_L))return this.parseOperationDefinition();if(this.peekDescription())return this.parseTypeSystemDefinition()}throw this.unexpected()},t.parseOperationDefinition=function(){var n=this._lexer.token;if(this.peek(De.TokenKind.BRACE_L))return{kind:$e.Kind.OPERATION_DEFINITION,operation:"query",name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet(),loc:this.loc(n)};var i=this.parseOperationType(),o;return this.peek(De.TokenKind.NAME)&&(o=this.parseName()),{kind:$e.Kind.OPERATION_DEFINITION,operation:i,name:o,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(n)}},t.parseOperationType=function(){var n=this.expectToken(De.TokenKind.NAME);switch(n.value){case"query":return"query";case"mutation":return"mutation";case"subscription":return"subscription"}throw this.unexpected(n)},t.parseVariableDefinitions=function(){return this.optionalMany(De.TokenKind.PAREN_L,this.parseVariableDefinition,De.TokenKind.PAREN_R)},t.parseVariableDefinition=function(){var n=this._lexer.token;return{kind:$e.Kind.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(De.TokenKind.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(De.TokenKind.EQUALS)?this.parseValueLiteral(!0):void 0,directives:this.parseDirectives(!0),loc:this.loc(n)}},t.parseVariable=function(){var n=this._lexer.token;return this.expectToken(De.TokenKind.DOLLAR),{kind:$e.Kind.VARIABLE,name:this.parseName(),loc:this.loc(n)}},t.parseSelectionSet=function(){var n=this._lexer.token;return{kind:$e.Kind.SELECTION_SET,selections:this.many(De.TokenKind.BRACE_L,this.parseSelection,De.TokenKind.BRACE_R),loc:this.loc(n)}},t.parseSelection=function(){return this.peek(De.TokenKind.SPREAD)?this.parseFragment():this.parseField()},t.parseField=function(){var n=this._lexer.token,i=this.parseName(),o,s;return this.expectOptionalToken(De.TokenKind.COLON)?(o=i,s=this.parseName()):s=i,{kind:$e.Kind.FIELD,alias:o,name:s,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(De.TokenKind.BRACE_L)?this.parseSelectionSet():void 0,loc:this.loc(n)}},t.parseArguments=function(n){var i=n?this.parseConstArgument:this.parseArgument;return this.optionalMany(De.TokenKind.PAREN_L,i,De.TokenKind.PAREN_R)},t.parseArgument=function(){var n=this._lexer.token,i=this.parseName();return this.expectToken(De.TokenKind.COLON),{kind:$e.Kind.ARGUMENT,name:i,value:this.parseValueLiteral(!1),loc:this.loc(n)}},t.parseConstArgument=function(){var n=this._lexer.token;return{kind:$e.Kind.ARGUMENT,name:this.parseName(),value:(this.expectToken(De.TokenKind.COLON),this.parseValueLiteral(!0)),loc:this.loc(n)}},t.parseFragment=function(){var n=this._lexer.token;this.expectToken(De.TokenKind.SPREAD);var i=this.expectOptionalKeyword("on");return!i&&this.peek(De.TokenKind.NAME)?{kind:$e.Kind.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1),loc:this.loc(n)}:{kind:$e.Kind.INLINE_FRAGMENT,typeCondition:i?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(n)}},t.parseFragmentDefinition=function(){var n,i=this._lexer.token;return this.expectKeyword("fragment"),((n=this._options)===null||n===void 0?void 0:n.experimentalFragmentVariables)===!0?{kind:$e.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(i)}:{kind:$e.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(i)}},t.parseFragmentName=function(){if(this._lexer.token.value==="on")throw this.unexpected();return this.parseName()},t.parseValueLiteral=function(n){var i=this._lexer.token;switch(i.kind){case De.TokenKind.BRACKET_L:return this.parseList(n);case De.TokenKind.BRACE_L:return this.parseObject(n);case De.TokenKind.INT:return this._lexer.advance(),{kind:$e.Kind.INT,value:i.value,loc:this.loc(i)};case De.TokenKind.FLOAT:return this._lexer.advance(),{kind:$e.Kind.FLOAT,value:i.value,loc:this.loc(i)};case De.TokenKind.STRING:case De.TokenKind.BLOCK_STRING:return this.parseStringLiteral();case De.TokenKind.NAME:switch(this._lexer.advance(),i.value){case"true":return{kind:$e.Kind.BOOLEAN,value:!0,loc:this.loc(i)};case"false":return{kind:$e.Kind.BOOLEAN,value:!1,loc:this.loc(i)};case"null":return{kind:$e.Kind.NULL,loc:this.loc(i)};default:return{kind:$e.Kind.ENUM,value:i.value,loc:this.loc(i)}}case De.TokenKind.DOLLAR:if(!n)return this.parseVariable();break}throw this.unexpected()},t.parseStringLiteral=function(){var n=this._lexer.token;return this._lexer.advance(),{kind:$e.Kind.STRING,value:n.value,block:n.kind===De.TokenKind.BLOCK_STRING,loc:this.loc(n)}},t.parseList=function(n){var i=this,o=this._lexer.token,s=function(){return i.parseValueLiteral(n)};return{kind:$e.Kind.LIST,values:this.any(De.TokenKind.BRACKET_L,s,De.TokenKind.BRACKET_R),loc:this.loc(o)}},t.parseObject=function(n){var i=this,o=this._lexer.token,s=function(){return i.parseObjectField(n)};return{kind:$e.Kind.OBJECT,fields:this.any(De.TokenKind.BRACE_L,s,De.TokenKind.BRACE_R),loc:this.loc(o)}},t.parseObjectField=function(n){var i=this._lexer.token,o=this.parseName();return this.expectToken(De.TokenKind.COLON),{kind:$e.Kind.OBJECT_FIELD,name:o,value:this.parseValueLiteral(n),loc:this.loc(i)}},t.parseDirectives=function(n){for(var i=[];this.peek(De.TokenKind.AT);)i.push(this.parseDirective(n));return i},t.parseDirective=function(n){var i=this._lexer.token;return this.expectToken(De.TokenKind.AT),{kind:$e.Kind.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(n),loc:this.loc(i)}},t.parseTypeReference=function(){var n=this._lexer.token,i;return this.expectOptionalToken(De.TokenKind.BRACKET_L)?(i=this.parseTypeReference(),this.expectToken(De.TokenKind.BRACKET_R),i={kind:$e.Kind.LIST_TYPE,type:i,loc:this.loc(n)}):i=this.parseNamedType(),this.expectOptionalToken(De.TokenKind.BANG)?{kind:$e.Kind.NON_NULL_TYPE,type:i,loc:this.loc(n)}:i},t.parseNamedType=function(){var n=this._lexer.token;return{kind:$e.Kind.NAMED_TYPE,name:this.parseName(),loc:this.loc(n)}},t.parseTypeSystemDefinition=function(){var n=this.peekDescription()?this._lexer.lookahead():this._lexer.token;if(n.kind===De.TokenKind.NAME)switch(n.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}throw this.unexpected(n)},t.peekDescription=function(){return this.peek(De.TokenKind.STRING)||this.peek(De.TokenKind.BLOCK_STRING)},t.parseDescription=function(){if(this.peekDescription())return this.parseStringLiteral()},t.parseSchemaDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("schema");var o=this.parseDirectives(!0),s=this.many(De.TokenKind.BRACE_L,this.parseOperationTypeDefinition,De.TokenKind.BRACE_R);return{kind:$e.Kind.SCHEMA_DEFINITION,description:i,directives:o,operationTypes:s,loc:this.loc(n)}},t.parseOperationTypeDefinition=function(){var n=this._lexer.token,i=this.parseOperationType();this.expectToken(De.TokenKind.COLON);var o=this.parseNamedType();return{kind:$e.Kind.OPERATION_TYPE_DEFINITION,operation:i,type:o,loc:this.loc(n)}},t.parseScalarTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("scalar");var o=this.parseName(),s=this.parseDirectives(!0);return{kind:$e.Kind.SCALAR_TYPE_DEFINITION,description:i,name:o,directives:s,loc:this.loc(n)}},t.parseObjectTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("type");var o=this.parseName(),s=this.parseImplementsInterfaces(),l=this.parseDirectives(!0),d=this.parseFieldsDefinition();return{kind:$e.Kind.OBJECT_TYPE_DEFINITION,description:i,name:o,interfaces:s,directives:l,fields:d,loc:this.loc(n)}},t.parseImplementsInterfaces=function(){var n;if(!this.expectOptionalKeyword("implements"))return[];if(((n=this._options)===null||n===void 0?void 0:n.allowLegacySDLImplementsInterfaces)===!0){var i=[];this.expectOptionalToken(De.TokenKind.AMP);do i.push(this.parseNamedType());while(this.expectOptionalToken(De.TokenKind.AMP)||this.peek(De.TokenKind.NAME));return i}return this.delimitedMany(De.TokenKind.AMP,this.parseNamedType)},t.parseFieldsDefinition=function(){var n;return((n=this._options)===null||n===void 0?void 0:n.allowLegacySDLEmptyFields)===!0&&this.peek(De.TokenKind.BRACE_L)&&this._lexer.lookahead().kind===De.TokenKind.BRACE_R?(this._lexer.advance(),this._lexer.advance(),[]):this.optionalMany(De.TokenKind.BRACE_L,this.parseFieldDefinition,De.TokenKind.BRACE_R)},t.parseFieldDefinition=function(){var n=this._lexer.token,i=this.parseDescription(),o=this.parseName(),s=this.parseArgumentDefs();this.expectToken(De.TokenKind.COLON);var l=this.parseTypeReference(),d=this.parseDirectives(!0);return{kind:$e.Kind.FIELD_DEFINITION,description:i,name:o,arguments:s,type:l,directives:d,loc:this.loc(n)}},t.parseArgumentDefs=function(){return this.optionalMany(De.TokenKind.PAREN_L,this.parseInputValueDef,De.TokenKind.PAREN_R)},t.parseInputValueDef=function(){var n=this._lexer.token,i=this.parseDescription(),o=this.parseName();this.expectToken(De.TokenKind.COLON);var s=this.parseTypeReference(),l;this.expectOptionalToken(De.TokenKind.EQUALS)&&(l=this.parseValueLiteral(!0));var d=this.parseDirectives(!0);return{kind:$e.Kind.INPUT_VALUE_DEFINITION,description:i,name:o,type:s,defaultValue:l,directives:d,loc:this.loc(n)}},t.parseInterfaceTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("interface");var o=this.parseName(),s=this.parseImplementsInterfaces(),l=this.parseDirectives(!0),d=this.parseFieldsDefinition();return{kind:$e.Kind.INTERFACE_TYPE_DEFINITION,description:i,name:o,interfaces:s,directives:l,fields:d,loc:this.loc(n)}},t.parseUnionTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("union");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseUnionMemberTypes();return{kind:$e.Kind.UNION_TYPE_DEFINITION,description:i,name:o,directives:s,types:l,loc:this.loc(n)}},t.parseUnionMemberTypes=function(){return this.expectOptionalToken(De.TokenKind.EQUALS)?this.delimitedMany(De.TokenKind.PIPE,this.parseNamedType):[]},t.parseEnumTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("enum");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseEnumValuesDefinition();return{kind:$e.Kind.ENUM_TYPE_DEFINITION,description:i,name:o,directives:s,values:l,loc:this.loc(n)}},t.parseEnumValuesDefinition=function(){return this.optionalMany(De.TokenKind.BRACE_L,this.parseEnumValueDefinition,De.TokenKind.BRACE_R)},t.parseEnumValueDefinition=function(){var n=this._lexer.token,i=this.parseDescription(),o=this.parseName(),s=this.parseDirectives(!0);return{kind:$e.Kind.ENUM_VALUE_DEFINITION,description:i,name:o,directives:s,loc:this.loc(n)}},t.parseInputObjectTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("input");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseInputFieldsDefinition();return{kind:$e.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:i,name:o,directives:s,fields:l,loc:this.loc(n)}},t.parseInputFieldsDefinition=function(){return this.optionalMany(De.TokenKind.BRACE_L,this.parseInputValueDef,De.TokenKind.BRACE_R)},t.parseTypeSystemExtension=function(){var n=this._lexer.lookahead();if(n.kind===De.TokenKind.NAME)switch(n.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(n)},t.parseSchemaExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");var i=this.parseDirectives(!0),o=this.optionalMany(De.TokenKind.BRACE_L,this.parseOperationTypeDefinition,De.TokenKind.BRACE_R);if(i.length===0&&o.length===0)throw this.unexpected();return{kind:$e.Kind.SCHEMA_EXTENSION,directives:i,operationTypes:o,loc:this.loc(n)}},t.parseScalarTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");var i=this.parseName(),o=this.parseDirectives(!0);if(o.length===0)throw this.unexpected();return{kind:$e.Kind.SCALAR_TYPE_EXTENSION,name:i,directives:o,loc:this.loc(n)}},t.parseObjectTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");var i=this.parseName(),o=this.parseImplementsInterfaces(),s=this.parseDirectives(!0),l=this.parseFieldsDefinition();if(o.length===0&&s.length===0&&l.length===0)throw this.unexpected();return{kind:$e.Kind.OBJECT_TYPE_EXTENSION,name:i,interfaces:o,directives:s,fields:l,loc:this.loc(n)}},t.parseInterfaceTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");var i=this.parseName(),o=this.parseImplementsInterfaces(),s=this.parseDirectives(!0),l=this.parseFieldsDefinition();if(o.length===0&&s.length===0&&l.length===0)throw this.unexpected();return{kind:$e.Kind.INTERFACE_TYPE_EXTENSION,name:i,interfaces:o,directives:s,fields:l,loc:this.loc(n)}},t.parseUnionTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");var i=this.parseName(),o=this.parseDirectives(!0),s=this.parseUnionMemberTypes();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:$e.Kind.UNION_TYPE_EXTENSION,name:i,directives:o,types:s,loc:this.loc(n)}},t.parseEnumTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");var i=this.parseName(),o=this.parseDirectives(!0),s=this.parseEnumValuesDefinition();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:$e.Kind.ENUM_TYPE_EXTENSION,name:i,directives:o,values:s,loc:this.loc(n)}},t.parseInputObjectTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");var i=this.parseName(),o=this.parseDirectives(!0),s=this.parseInputFieldsDefinition();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:$e.Kind.INPUT_OBJECT_TYPE_EXTENSION,name:i,directives:o,fields:s,loc:this.loc(n)}},t.parseDirectiveDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("directive"),this.expectToken(De.TokenKind.AT);var o=this.parseName(),s=this.parseArgumentDefs(),l=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");var d=this.parseDirectiveLocations();return{kind:$e.Kind.DIRECTIVE_DEFINITION,description:i,name:o,arguments:s,repeatable:l,locations:d,loc:this.loc(n)}},t.parseDirectiveLocations=function(){return this.delimitedMany(De.TokenKind.PIPE,this.parseDirectiveLocation)},t.parseDirectiveLocation=function(){var n=this._lexer.token,i=this.parseName();if(pz.DirectiveLocation[i.value]!==void 0)return i;throw this.unexpected(n)},t.loc=function(n){var i;if(((i=this._options)===null||i===void 0?void 0:i.noLocation)!==!0)return new dz.Location(n,this._lexer.lastToken,this._lexer.source)},t.peek=function(n){return this._lexer.token.kind===n},t.expectToken=function(n){var i=this._lexer.token;if(i.kind===n)return this._lexer.advance(),i;throw(0,T_.syntaxError)(this._lexer.source,i.start,"Expected ".concat(M1(n),", found ").concat(__(i),"."))},t.expectOptionalToken=function(n){var i=this._lexer.token;if(i.kind===n)return this._lexer.advance(),i},t.expectKeyword=function(n){var i=this._lexer.token;if(i.kind===De.TokenKind.NAME&&i.value===n)this._lexer.advance();else throw(0,T_.syntaxError)(this._lexer.source,i.start,'Expected "'.concat(n,'", found ').concat(__(i),"."))},t.expectOptionalKeyword=function(n){var i=this._lexer.token;return i.kind===De.TokenKind.NAME&&i.value===n?(this._lexer.advance(),!0):!1},t.unexpected=function(n){var i=n!=null?n:this._lexer.token;return(0,T_.syntaxError)(this._lexer.source,i.start,"Unexpected ".concat(__(i),"."))},t.any=function(n,i,o){this.expectToken(n);for(var s=[];!this.expectOptionalToken(o);)s.push(i.call(this));return s},t.optionalMany=function(n,i,o){if(this.expectOptionalToken(n)){var s=[];do s.push(i.call(this));while(!this.expectOptionalToken(o));return s}return[]},t.many=function(n,i,o){this.expectToken(n);var s=[];do s.push(i.call(this));while(!this.expectOptionalToken(o));return s},t.delimitedMany=function(n,i){this.expectOptionalToken(n);var o=[];do o.push(i.call(this));while(this.expectOptionalToken(n));return o},e}();gs.Parser=_g;function __(e){var t=e.value;return M1(e.kind)+(t!=null?' "'.concat(t,'"'):"")}function M1(e){return(0,F1.isPunctuatorTokenKind)(e)?'"'.concat(e,'"'):e}});var hu=G(_o=>{"use strict";Object.defineProperty(_o,"__esModule",{value:!0});_o.visit=bz;_o.visitInParallel=Tz;_o.getVisitFn=Eg;_o.BREAK=_o.QueryDocumentKeys=void 0;var mz=yz(jt()),q1=Xl();function yz(e){return e&&e.__esModule?e:{default:e}}var V1={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]};_o.QueryDocumentKeys=V1;var rc=Object.freeze({});_o.BREAK=rc;function bz(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:V1,n=void 0,i=Array.isArray(e),o=[e],s=-1,l=[],d=void 0,h=void 0,v=void 0,y=[],b=[],D=e;do{s++;var _=s===o.length,k=_&&l.length!==0;if(_){if(h=b.length===0?void 0:y[y.length-1],d=v,v=b.pop(),k){if(i)d=d.slice();else{for(var T={},S=0,m=Object.keys(d);S{"use strict";Object.defineProperty(Sg,"__esModule",{value:!0});Sg.default=void 0;var _z=Array.prototype.find?function(e,t){return Array.prototype.find.call(e,t)}:function(e,t){for(var r=0;r{"use strict";Object.defineProperty(kg,"__esModule",{value:!0});kg.default=void 0;var Sz=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},kz=Sz;kg.default=kz});var qd=G(E_=>{"use strict";Object.defineProperty(E_,"__esModule",{value:!0});E_.locatedError=Dz;var Oz=Nz(jt()),wz=Je();function Nz(e){return e&&e.__esModule?e:{default:e}}function Dz(e,t,r){var n,i=e instanceof Error?e:new Error("Unexpected error value: "+(0,Oz.default)(e));return Array.isArray(i.path)?i:new wz.GraphQLError(i.message,(n=i.nodes)!==null&&n!==void 0?n:t,i.source,i.positions,r,i)}});var S_=G(Og=>{"use strict";Object.defineProperty(Og,"__esModule",{value:!0});Og.assertValidName=Iz;Og.isValidNameError=G1;var xz=Cz(Hi()),U1=Je();function Cz(e){return e&&e.__esModule?e:{default:e}}var Lz=/^[_a-zA-Z][_a-zA-Z0-9]*$/;function Iz(e){var t=G1(e);if(t)throw t;return e}function G1(e){if(typeof e=="string"||(0,xz.default)(0,"Expected name to be a string."),e.length>1&&e[0]==="_"&&e[1]==="_")return new U1.GraphQLError('Name "'.concat(e,'" must not begin with "__", which is reserved by GraphQL introspection.'));if(!Lz.test(e))return new U1.GraphQLError('Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "'.concat(e,'" does not.'))}});var ic=G(wg=>{"use strict";Object.defineProperty(wg,"__esModule",{value:!0});wg.default=void 0;var Az=Object.entries||function(e){return Object.keys(e).map(function(t){return[t,e[t]]})},Rz=Az;wg.default=Rz});var vu=G(k_=>{"use strict";Object.defineProperty(k_,"__esModule",{value:!0});k_.default=jz;function jz(e,t){return e.reduce(function(r,n){return r[t(n)]=n,r},Object.create(null))}});var w_=G(O_=>{"use strict";Object.defineProperty(O_,"__esModule",{value:!0});O_.default=Mz;var Pz=Fz(ic());function Fz(e){return e&&e.__esModule?e:{default:e}}function Mz(e,t){for(var r=Object.create(null),n=0,i=(0,Pz.default)(e);n{"use strict";Object.defineProperty(N_,"__esModule",{value:!0});N_.default=Uz;var qz=Vz(ic());function Vz(e){return e&&e.__esModule?e:{default:e}}function Uz(e){if(Object.getPrototypeOf(e)===null)return e;for(var t=Object.create(null),r=0,n=(0,qz.default)(e);r{"use strict";Object.defineProperty(D_,"__esModule",{value:!0});D_.default=Gz;function Gz(e,t,r){return e.reduce(function(n,i){return n[t(i)]=r(i),n},Object.create(null))}});var gu=G(x_=>{"use strict";Object.defineProperty(x_,"__esModule",{value:!0});x_.default=Bz;var Qz=5;function Bz(e,t){var r=typeof e=="string"?[e,t]:[void 0,e],n=r[0],i=r[1],o=" Did you mean ";n&&(o+=n+" ");var s=i.map(function(h){return'"'.concat(h,'"')});switch(s.length){case 0:return"";case 1:return o+s[0]+"?";case 2:return o+s[0]+" or "+s[1]+"?"}var l=s.slice(0,Qz),d=l.pop();return o+l.join(", ")+", or "+d+"?"}});var Q1=G(C_=>{"use strict";Object.defineProperty(C_,"__esModule",{value:!0});C_.default=Kz;function Kz(e){return e}});var Ud=G(I_=>{"use strict";Object.defineProperty(I_,"__esModule",{value:!0});I_.default=Hz;function Hz(e,t){for(var r=0,n=0;r0);var l=0;do++n,l=l*10+o-L_,o=t.charCodeAt(n);while(Dg(o)&&l>0);if(sl)return 1}else{if(io)return 1;++r,++n}}return e.length-t.length}var L_=48,zz=57;function Dg(e){return!isNaN(e)&&L_<=e&&e<=zz}});var mu=G(A_=>{"use strict";Object.defineProperty(A_,"__esModule",{value:!0});A_.default=Jz;var Wz=Yz(Ud());function Yz(e){return e&&e.__esModule?e:{default:e}}function Jz(e,t){for(var r=Object.create(null),n=new Xz(e),i=Math.floor(e.length*.4)+1,o=0;oi)){for(var y=this._rows,b=0;b<=v;b++)y[0][b]=b;for(var D=1;D<=h;D++){for(var _=y[(D-1)%3],k=y[D%3],T=k[0]=D,S=1;S<=v;S++){var m=s[D-1]===l[S-1]?0:1,w=Math.min(_[S]+1,k[S-1]+1,_[S-1]+m);if(D>1&&S>1&&s[D-1]===l[S-2]&&s[D-2]===l[S-1]){var x=y[(D-2)%3][S-2];w=Math.min(w,x+1)}wi)return}var L=y[h%3][v];return L<=i?L:void 0}},e}();function B1(e){for(var t=e.length,r=new Array(t),n=0;n{"use strict";Object.defineProperty(R_,"__esModule",{value:!0});R_.print=eW;var Zz=hu(),$z=ec();function eW(e){return(0,Zz.visit)(e,{leave:rW})}var tW=80,rW={Name:function(t){return t.value},Variable:function(t){return"$"+t.name},Document:function(t){return je(t.definitions,` - -`)+` -`},OperationDefinition:function(t){var r=t.operation,n=t.name,i=yr("(",je(t.variableDefinitions,", "),")"),o=je(t.directives," "),s=t.selectionSet;return!n&&!o&&!i&&r==="query"?s:je([r,je([n,i]),o,s]," ")},VariableDefinition:function(t){var r=t.variable,n=t.type,i=t.defaultValue,o=t.directives;return r+": "+n+yr(" = ",i)+yr(" ",je(o," "))},SelectionSet:function(t){var r=t.selections;return ya(r)},Field:function(t){var r=t.alias,n=t.name,i=t.arguments,o=t.directives,s=t.selectionSet,l=yr("",r,": ")+n,d=l+yr("(",je(i,", "),")");return d.length>tW&&(d=l+yr(`( -`,xg(je(i,` -`)),` -)`)),je([d,je(o," "),s]," ")},Argument:function(t){var r=t.name,n=t.value;return r+": "+n},FragmentSpread:function(t){var r=t.name,n=t.directives;return"..."+r+yr(" ",je(n," "))},InlineFragment:function(t){var r=t.typeCondition,n=t.directives,i=t.selectionSet;return je(["...",yr("on ",r),je(n," "),i]," ")},FragmentDefinition:function(t){var r=t.name,n=t.typeCondition,i=t.variableDefinitions,o=t.directives,s=t.selectionSet;return"fragment ".concat(r).concat(yr("(",je(i,", "),")")," ")+"on ".concat(n," ").concat(yr("",je(o," ")," "))+s},IntValue:function(t){var r=t.value;return r},FloatValue:function(t){var r=t.value;return r},StringValue:function(t,r){var n=t.value,i=t.block;return i?(0,$z.printBlockString)(n,r==="description"?"":" "):JSON.stringify(n)},BooleanValue:function(t){var r=t.value;return r?"true":"false"},NullValue:function(){return"null"},EnumValue:function(t){var r=t.value;return r},ListValue:function(t){var r=t.values;return"["+je(r,", ")+"]"},ObjectValue:function(t){var r=t.fields;return"{"+je(r,", ")+"}"},ObjectField:function(t){var r=t.name,n=t.value;return r+": "+n},Directive:function(t){var r=t.name,n=t.arguments;return"@"+r+yr("(",je(n,", "),")")},NamedType:function(t){var r=t.name;return r},ListType:function(t){var r=t.type;return"["+r+"]"},NonNullType:function(t){var r=t.type;return r+"!"},SchemaDefinition:ma(function(e){var t=e.directives,r=e.operationTypes;return je(["schema",je(t," "),ya(r)]," ")}),OperationTypeDefinition:function(t){var r=t.operation,n=t.type;return r+": "+n},ScalarTypeDefinition:ma(function(e){var t=e.name,r=e.directives;return je(["scalar",t,je(r," ")]," ")}),ObjectTypeDefinition:ma(function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return je(["type",t,yr("implements ",je(r," & ")),je(n," "),ya(i)]," ")}),FieldDefinition:ma(function(e){var t=e.name,r=e.arguments,n=e.type,i=e.directives;return t+(K1(r)?yr(`( -`,xg(je(r,` -`)),` -)`):yr("(",je(r,", "),")"))+": "+n+yr(" ",je(i," "))}),InputValueDefinition:ma(function(e){var t=e.name,r=e.type,n=e.defaultValue,i=e.directives;return je([t+": "+r,yr("= ",n),je(i," ")]," ")}),InterfaceTypeDefinition:ma(function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return je(["interface",t,yr("implements ",je(r," & ")),je(n," "),ya(i)]," ")}),UnionTypeDefinition:ma(function(e){var t=e.name,r=e.directives,n=e.types;return je(["union",t,je(r," "),n&&n.length!==0?"= "+je(n," | "):""]," ")}),EnumTypeDefinition:ma(function(e){var t=e.name,r=e.directives,n=e.values;return je(["enum",t,je(r," "),ya(n)]," ")}),EnumValueDefinition:ma(function(e){var t=e.name,r=e.directives;return je([t,je(r," ")]," ")}),InputObjectTypeDefinition:ma(function(e){var t=e.name,r=e.directives,n=e.fields;return je(["input",t,je(r," "),ya(n)]," ")}),DirectiveDefinition:ma(function(e){var t=e.name,r=e.arguments,n=e.repeatable,i=e.locations;return"directive @"+t+(K1(r)?yr(`( -`,xg(je(r,` -`)),` -)`):yr("(",je(r,", "),")"))+(n?" repeatable":"")+" on "+je(i," | ")}),SchemaExtension:function(t){var r=t.directives,n=t.operationTypes;return je(["extend schema",je(r," "),ya(n)]," ")},ScalarTypeExtension:function(t){var r=t.name,n=t.directives;return je(["extend scalar",r,je(n," ")]," ")},ObjectTypeExtension:function(t){var r=t.name,n=t.interfaces,i=t.directives,o=t.fields;return je(["extend type",r,yr("implements ",je(n," & ")),je(i," "),ya(o)]," ")},InterfaceTypeExtension:function(t){var r=t.name,n=t.interfaces,i=t.directives,o=t.fields;return je(["extend interface",r,yr("implements ",je(n," & ")),je(i," "),ya(o)]," ")},UnionTypeExtension:function(t){var r=t.name,n=t.directives,i=t.types;return je(["extend union",r,je(n," "),i&&i.length!==0?"= "+je(i," | "):""]," ")},EnumTypeExtension:function(t){var r=t.name,n=t.directives,i=t.values;return je(["extend enum",r,je(n," "),ya(i)]," ")},InputObjectTypeExtension:function(t){var r=t.name,n=t.directives,i=t.fields;return je(["extend input",r,je(n," "),ya(i)]," ")}};function ma(e){return function(t){return je([t.description,e(t)],` -`)}}function je(e){var t,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return(t=e==null?void 0:e.filter(function(n){return n}).join(r))!==null&&t!==void 0?t:""}function ya(e){return yr(`{ -`,xg(je(e,` -`)),` -}`)}function yr(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";return t!=null&&t!==""?e+t+r:""}function xg(e){return yr(" ",e.replace(/\n/g,` - `))}function nW(e){return e.indexOf(` -`)!==-1}function K1(e){return e!=null&&e.some(nW)}});var M_=G(F_=>{"use strict";Object.defineProperty(F_,"__esModule",{value:!0});F_.valueFromASTUntyped=P_;var iW=j_(jt()),aW=j_(_n()),oW=j_(Vd()),Eo=Jt();function j_(e){return e&&e.__esModule?e:{default:e}}function P_(e,t){switch(e.kind){case Eo.Kind.NULL:return null;case Eo.Kind.INT:return parseInt(e.value,10);case Eo.Kind.FLOAT:return parseFloat(e.value);case Eo.Kind.STRING:case Eo.Kind.ENUM:case Eo.Kind.BOOLEAN:return e.value;case Eo.Kind.LIST:return e.values.map(function(r){return P_(r,t)});case Eo.Kind.OBJECT:return(0,oW.default)(e.fields,function(r){return r.name.value},function(r){return P_(r.value,t)});case Eo.Kind.VARIABLE:return t==null?void 0:t[e.name.value]}(0,aW.default)(0,"Unexpected value node: "+(0,iW.default)(e))}});var bt=G(Be=>{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.isType=q_;Be.assertType=X1;Be.isScalarType=ms;Be.assertScalarType=pW;Be.isObjectType=oc;Be.assertObjectType=hW;Be.isInterfaceType=ys;Be.assertInterfaceType=vW;Be.isUnionType=bs;Be.assertUnionType=gW;Be.isEnumType=Ts;Be.assertEnumType=mW;Be.isInputObjectType=Qd;Be.assertInputObjectType=yW;Be.isListType=Lg;Be.assertListType=bW;Be.isNonNullType=_u;Be.assertNonNullType=TW;Be.isInputType=V_;Be.assertInputType=_W;Be.isOutputType=U_;Be.assertOutputType=EW;Be.isLeafType=Z1;Be.assertLeafType=SW;Be.isCompositeType=$1;Be.assertCompositeType=kW;Be.isAbstractType=eI;Be.assertAbstractType=OW;Be.GraphQLList=Eu;Be.GraphQLNonNull=Su;Be.isWrappingType=Bd;Be.assertWrappingType=wW;Be.isNullableType=tI;Be.assertNullableType=rI;Be.getNullableType=NW;Be.isNamedType=nI;Be.assertNamedType=DW;Be.getNamedType=xW;Be.argsToArgsConfig=uI;Be.isRequiredArgument=CW;Be.isRequiredInputField=RW;Be.GraphQLInputObjectType=Be.GraphQLEnumType=Be.GraphQLUnionType=Be.GraphQLInterfaceType=Be.GraphQLObjectType=Be.GraphQLScalarType=void 0;var H1=Di(ic()),yu=qa(),ur=Di(jt()),uW=Di(vu()),Cg=Di(w_()),Ua=Di(Ng()),fr=Di(Hi()),z1=Di(Vd()),bu=Di(jd()),sW=Di(gu()),lW=Di(Ma()),W1=Di(Q1()),Tu=Di(dg()),cW=Di(mu()),Gd=Je(),fW=Jt(),Y1=hi(),dW=M_();function Di(e){return e&&e.__esModule?e:{default:e}}function J1(e,t){for(var r=0;r0?e:void 0}var G_=function(){function e(r){var n,i,o,s=(n=r.parseValue)!==null&&n!==void 0?n:W1.default;this.name=r.name,this.description=r.description,this.specifiedByUrl=r.specifiedByUrl,this.serialize=(i=r.serialize)!==null&&i!==void 0?i:W1.default,this.parseValue=s,this.parseLiteral=(o=r.parseLiteral)!==null&&o!==void 0?o:function(l,d){return s((0,dW.valueFromASTUntyped)(l,d))},this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),typeof r.name=="string"||(0,fr.default)(0,"Must provide name."),r.specifiedByUrl==null||typeof r.specifiedByUrl=="string"||(0,fr.default)(0,"".concat(this.name,' must provide "specifiedByUrl" as a string, ')+"but got: ".concat((0,ur.default)(r.specifiedByUrl),".")),r.serialize==null||typeof r.serialize=="function"||(0,fr.default)(0,"".concat(this.name,' must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.')),r.parseLiteral&&(typeof r.parseValue=="function"&&typeof r.parseLiteral=="function"||(0,fr.default)(0,"".concat(this.name,' must provide both "parseValue" and "parseLiteral" functions.')))}var t=e.prototype;return t.toConfig=function(){var n;return{name:this.name,description:this.description,specifiedByUrl:this.specifiedByUrl,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLScalarType"}}]),e}();Be.GraphQLScalarType=G_;(0,Tu.default)(G_);var Q_=function(){function e(r){this.name=r.name,this.description=r.description,this.isTypeOf=r.isTypeOf,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._fields=aI.bind(void 0,r),this._interfaces=iI.bind(void 0,r),typeof r.name=="string"||(0,fr.default)(0,"Must provide name."),r.isTypeOf==null||typeof r.isTypeOf=="function"||(0,fr.default)(0,"".concat(this.name,' must provide "isTypeOf" as a function, ')+"but got: ".concat((0,ur.default)(r.isTypeOf),"."))}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.getInterfaces=function(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces},t.toConfig=function(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:oI(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes||[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLObjectType"}}]),e}();Be.GraphQLObjectType=Q_;(0,Tu.default)(Q_);function iI(e){var t,r=(t=Ig(e.interfaces))!==null&&t!==void 0?t:[];return Array.isArray(r)||(0,fr.default)(0,"".concat(e.name," interfaces must be an Array or a function which returns an Array.")),r}function aI(e){var t=Ig(e.fields);return sc(t)||(0,fr.default)(0,"".concat(e.name," fields must be an object with field names as keys or a function which returns such an object.")),(0,Cg.default)(t,function(r,n){var i;sc(r)||(0,fr.default)(0,"".concat(e.name,".").concat(n," field config must be an object.")),!("isDeprecated"in r)||(0,fr.default)(0,"".concat(e.name,".").concat(n,' should provide "deprecationReason" instead of "isDeprecated".')),r.resolve==null||typeof r.resolve=="function"||(0,fr.default)(0,"".concat(e.name,".").concat(n," field resolver must be a function if ")+"provided, but got: ".concat((0,ur.default)(r.resolve),"."));var o=(i=r.args)!==null&&i!==void 0?i:{};sc(o)||(0,fr.default)(0,"".concat(e.name,".").concat(n," args must be an object with argument names as keys."));var s=(0,H1.default)(o).map(function(l){var d=l[0],h=l[1];return{name:d,description:h.description,type:h.type,defaultValue:h.defaultValue,deprecationReason:h.deprecationReason,extensions:h.extensions&&(0,Ua.default)(h.extensions),astNode:h.astNode}});return{name:n,description:r.description,type:r.type,args:s,resolve:r.resolve,subscribe:r.subscribe,isDeprecated:r.deprecationReason!=null,deprecationReason:r.deprecationReason,extensions:r.extensions&&(0,Ua.default)(r.extensions),astNode:r.astNode}})}function sc(e){return(0,lW.default)(e)&&!Array.isArray(e)}function oI(e){return(0,Cg.default)(e,function(t){return{description:t.description,type:t.type,args:uI(t.args),resolve:t.resolve,subscribe:t.subscribe,deprecationReason:t.deprecationReason,extensions:t.extensions,astNode:t.astNode}})}function uI(e){return(0,z1.default)(e,function(t){return t.name},function(t){return{description:t.description,type:t.type,defaultValue:t.defaultValue,deprecationReason:t.deprecationReason,extensions:t.extensions,astNode:t.astNode}})}function CW(e){return _u(e.type)&&e.defaultValue===void 0}var B_=function(){function e(r){this.name=r.name,this.description=r.description,this.resolveType=r.resolveType,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._fields=aI.bind(void 0,r),this._interfaces=iI.bind(void 0,r),typeof r.name=="string"||(0,fr.default)(0,"Must provide name."),r.resolveType==null||typeof r.resolveType=="function"||(0,fr.default)(0,"".concat(this.name,' must provide "resolveType" as a function, ')+"but got: ".concat((0,ur.default)(r.resolveType),"."))}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.getInterfaces=function(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces},t.toConfig=function(){var n;return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:oI(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLInterfaceType"}}]),e}();Be.GraphQLInterfaceType=B_;(0,Tu.default)(B_);var K_=function(){function e(r){this.name=r.name,this.description=r.description,this.resolveType=r.resolveType,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._types=LW.bind(void 0,r),typeof r.name=="string"||(0,fr.default)(0,"Must provide name."),r.resolveType==null||typeof r.resolveType=="function"||(0,fr.default)(0,"".concat(this.name,' must provide "resolveType" as a function, ')+"but got: ".concat((0,ur.default)(r.resolveType),"."))}var t=e.prototype;return t.getTypes=function(){return typeof this._types=="function"&&(this._types=this._types()),this._types},t.toConfig=function(){var n;return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLUnionType"}}]),e}();Be.GraphQLUnionType=K_;(0,Tu.default)(K_);function LW(e){var t=Ig(e.types);return Array.isArray(t)||(0,fr.default)(0,"Must provide Array of types or a function which returns such an array for Union ".concat(e.name,".")),t}var H_=function(){function e(r){this.name=r.name,this.description=r.description,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._values=IW(this.name,r.values),this._valueLookup=new Map(this._values.map(function(n){return[n.value,n]})),this._nameLookup=(0,uW.default)(this._values,function(n){return n.name}),typeof r.name=="string"||(0,fr.default)(0,"Must provide name.")}var t=e.prototype;return t.getValues=function(){return this._values},t.getValue=function(n){return this._nameLookup[n]},t.serialize=function(n){var i=this._valueLookup.get(n);if(i===void 0)throw new Gd.GraphQLError('Enum "'.concat(this.name,'" cannot represent value: ').concat((0,ur.default)(n)));return i.name},t.parseValue=function(n){if(typeof n!="string"){var i=(0,ur.default)(n);throw new Gd.GraphQLError('Enum "'.concat(this.name,'" cannot represent non-string value: ').concat(i,".")+Ag(this,i))}var o=this.getValue(n);if(o==null)throw new Gd.GraphQLError('Value "'.concat(n,'" does not exist in "').concat(this.name,'" enum.')+Ag(this,n));return o.value},t.parseLiteral=function(n,i){if(n.kind!==fW.Kind.ENUM){var o=(0,Y1.print)(n);throw new Gd.GraphQLError('Enum "'.concat(this.name,'" cannot represent non-enum value: ').concat(o,".")+Ag(this,o),n)}var s=this.getValue(n.value);if(s==null){var l=(0,Y1.print)(n);throw new Gd.GraphQLError('Value "'.concat(l,'" does not exist in "').concat(this.name,'" enum.')+Ag(this,l),n)}return s.value},t.toConfig=function(){var n,i=(0,z1.default)(this.getValues(),function(o){return o.name},function(o){return{description:o.description,value:o.value,deprecationReason:o.deprecationReason,extensions:o.extensions,astNode:o.astNode}});return{name:this.name,description:this.description,values:i,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLEnumType"}}]),e}();Be.GraphQLEnumType=H_;(0,Tu.default)(H_);function Ag(e,t){var r=e.getValues().map(function(i){return i.name}),n=(0,cW.default)(t,r);return(0,sW.default)("the enum value",n)}function IW(e,t){return sc(t)||(0,fr.default)(0,"".concat(e," values must be an object with value names as keys.")),(0,H1.default)(t).map(function(r){var n=r[0],i=r[1];return sc(i)||(0,fr.default)(0,"".concat(e,".").concat(n,' must refer to an object with a "value" key ')+"representing an internal value but got: ".concat((0,ur.default)(i),".")),!("isDeprecated"in i)||(0,fr.default)(0,"".concat(e,".").concat(n,' should provide "deprecationReason" instead of "isDeprecated".')),{name:n,description:i.description,value:i.value!==void 0?i.value:n,isDeprecated:i.deprecationReason!=null,deprecationReason:i.deprecationReason,extensions:i.extensions&&(0,Ua.default)(i.extensions),astNode:i.astNode}})}var z_=function(){function e(r){this.name=r.name,this.description=r.description,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._fields=AW.bind(void 0,r),typeof r.name=="string"||(0,fr.default)(0,"Must provide name.")}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.toConfig=function(){var n,i=(0,Cg.default)(this.getFields(),function(o){return{description:o.description,type:o.type,defaultValue:o.defaultValue,extensions:o.extensions,astNode:o.astNode}});return{name:this.name,description:this.description,fields:i,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLInputObjectType"}}]),e}();Be.GraphQLInputObjectType=z_;(0,Tu.default)(z_);function AW(e){var t=Ig(e.fields);return sc(t)||(0,fr.default)(0,"".concat(e.name," fields must be an object with field names as keys or a function which returns such an object.")),(0,Cg.default)(t,function(r,n){return!("resolve"in r)||(0,fr.default)(0,"".concat(e.name,".").concat(n," field has a resolve property, but Input Types cannot define resolvers.")),{name:n,description:r.description,type:r.type,defaultValue:r.defaultValue,deprecationReason:r.deprecationReason,extensions:r.extensions&&(0,Ua.default)(r.extensions),astNode:r.astNode}})}function RW(e){return _u(e.type)&&e.defaultValue===void 0}});var Hd=G(Kd=>{"use strict";Object.defineProperty(Kd,"__esModule",{value:!0});Kd.isEqualType=W_;Kd.isTypeSubTypeOf=Rg;Kd.doTypesOverlap=jW;var Mn=bt();function W_(e,t){return e===t?!0:(0,Mn.isNonNullType)(e)&&(0,Mn.isNonNullType)(t)||(0,Mn.isListType)(e)&&(0,Mn.isListType)(t)?W_(e.ofType,t.ofType):!1}function Rg(e,t,r){return t===r?!0:(0,Mn.isNonNullType)(r)?(0,Mn.isNonNullType)(t)?Rg(e,t.ofType,r.ofType):!1:(0,Mn.isNonNullType)(t)?Rg(e,t.ofType,r):(0,Mn.isListType)(r)?(0,Mn.isListType)(t)?Rg(e,t.ofType,r.ofType):!1:(0,Mn.isListType)(t)?!1:(0,Mn.isAbstractType)(r)&&((0,Mn.isInterfaceType)(t)||(0,Mn.isObjectType)(t))&&e.isSubType(r,t)}function jW(e,t,r){return t===r?!0:(0,Mn.isAbstractType)(t)?(0,Mn.isAbstractType)(r)?e.getPossibleTypes(t).some(function(n){return e.isSubType(r,n)}):e.isSubType(t,r):(0,Mn.isAbstractType)(r)?e.isSubType(r,t):!1}});var Y_=G(jg=>{"use strict";Object.defineProperty(jg,"__esModule",{value:!0});jg.default=void 0;var PW=qa(),FW=Array.from||function(e,t,r){if(e==null)throw new TypeError("Array.from requires an array-like object - not null or undefined");var n=e[PW.SYMBOL_ITERATOR];if(typeof n=="function"){for(var i=n.call(e),o=[],s,l=0;!(s=i.next()).done;++l)if(o.push(t.call(r,s.value,l)),l>9999999)throw new TypeError("Near-infinite iteration.");return o}var d=e.length;if(typeof d=="number"&&d>=0&&d%1==0){for(var h=[],v=0;v{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});Pg.default=void 0;var qW=Number.isFinite||function(e){return typeof e=="number"&&isFinite(e)},VW=qW;Pg.default=VW});var Mg=G(X_=>{"use strict";Object.defineProperty(X_,"__esModule",{value:!0});X_.default=GW;var UW=qa();function Fg(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fg=function(r){return typeof r}:Fg=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Fg(e)}function GW(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(v){return v};if(e==null||Fg(e)!=="object")return null;if(Array.isArray(e))return e.map(t);var r=e[UW.SYMBOL_ITERATOR];if(typeof r=="function"){for(var n=r.call(e),i=[],o,s=0;!(o=n.next()).done;++s)i.push(t(o.value,s));return i}var l=e.length;if(typeof l=="number"&&l>=0&&l%1==0){for(var d=[],h=0;h{"use strict";Object.defineProperty(qg,"__esModule",{value:!0});qg.default=void 0;var QW=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e},BW=QW;qg.default=BW});var Ga=G(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.isSpecifiedScalarType=t4;ti.specifiedScalarTypes=ti.GraphQLID=ti.GraphQLBoolean=ti.GraphQLString=ti.GraphQLFloat=ti.GraphQLInt=void 0;var Vg=Gg(J_()),Ug=Gg(sI()),ba=Gg(jt()),lI=Gg(Ma()),_s=Jt(),zd=hi(),cn=Je(),Wd=bt();function Gg(e){return e&&e.__esModule?e:{default:e}}var Z_=2147483647,$_=-2147483648;function KW(e){var t=Yd(e);if(typeof t=="boolean")return t?1:0;var r=t;if(typeof t=="string"&&t!==""&&(r=Number(t)),!(0,Ug.default)(r))throw new cn.GraphQLError("Int cannot represent non-integer value: ".concat((0,ba.default)(t)));if(r>Z_||r<$_)throw new cn.GraphQLError("Int cannot represent non 32-bit signed integer value: "+(0,ba.default)(t));return r}function HW(e){if(!(0,Ug.default)(e))throw new cn.GraphQLError("Int cannot represent non-integer value: ".concat((0,ba.default)(e)));if(e>Z_||e<$_)throw new cn.GraphQLError("Int cannot represent non 32-bit signed integer value: ".concat(e));return e}var cI=new Wd.GraphQLScalarType({name:"Int",description:"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",serialize:KW,parseValue:HW,parseLiteral:function(t){if(t.kind!==_s.Kind.INT)throw new cn.GraphQLError("Int cannot represent non-integer value: ".concat((0,zd.print)(t)),t);var r=parseInt(t.value,10);if(r>Z_||r<$_)throw new cn.GraphQLError("Int cannot represent non 32-bit signed integer value: ".concat(t.value),t);return r}});ti.GraphQLInt=cI;function zW(e){var t=Yd(e);if(typeof t=="boolean")return t?1:0;var r=t;if(typeof t=="string"&&t!==""&&(r=Number(t)),!(0,Vg.default)(r))throw new cn.GraphQLError("Float cannot represent non numeric value: ".concat((0,ba.default)(t)));return r}function WW(e){if(!(0,Vg.default)(e))throw new cn.GraphQLError("Float cannot represent non numeric value: ".concat((0,ba.default)(e)));return e}var fI=new Wd.GraphQLScalarType({name:"Float",description:"The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).",serialize:zW,parseValue:WW,parseLiteral:function(t){if(t.kind!==_s.Kind.FLOAT&&t.kind!==_s.Kind.INT)throw new cn.GraphQLError("Float cannot represent non numeric value: ".concat((0,zd.print)(t)),t);return parseFloat(t.value)}});ti.GraphQLFloat=fI;function Yd(e){if((0,lI.default)(e)){if(typeof e.valueOf=="function"){var t=e.valueOf();if(!(0,lI.default)(t))return t}if(typeof e.toJSON=="function")return e.toJSON()}return e}function YW(e){var t=Yd(e);if(typeof t=="string")return t;if(typeof t=="boolean")return t?"true":"false";if((0,Vg.default)(t))return t.toString();throw new cn.GraphQLError("String cannot represent value: ".concat((0,ba.default)(e)))}function JW(e){if(typeof e!="string")throw new cn.GraphQLError("String cannot represent a non string value: ".concat((0,ba.default)(e)));return e}var dI=new Wd.GraphQLScalarType({name:"String",description:"The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.",serialize:YW,parseValue:JW,parseLiteral:function(t){if(t.kind!==_s.Kind.STRING)throw new cn.GraphQLError("String cannot represent a non string value: ".concat((0,zd.print)(t)),t);return t.value}});ti.GraphQLString=dI;function XW(e){var t=Yd(e);if(typeof t=="boolean")return t;if((0,Vg.default)(t))return t!==0;throw new cn.GraphQLError("Boolean cannot represent a non boolean value: ".concat((0,ba.default)(t)))}function ZW(e){if(typeof e!="boolean")throw new cn.GraphQLError("Boolean cannot represent a non boolean value: ".concat((0,ba.default)(e)));return e}var pI=new Wd.GraphQLScalarType({name:"Boolean",description:"The `Boolean` scalar type represents `true` or `false`.",serialize:XW,parseValue:ZW,parseLiteral:function(t){if(t.kind!==_s.Kind.BOOLEAN)throw new cn.GraphQLError("Boolean cannot represent a non boolean value: ".concat((0,zd.print)(t)),t);return t.value}});ti.GraphQLBoolean=pI;function $W(e){var t=Yd(e);if(typeof t=="string")return t;if((0,Ug.default)(t))return String(t);throw new cn.GraphQLError("ID cannot represent value: ".concat((0,ba.default)(e)))}function e4(e){if(typeof e=="string")return e;if((0,Ug.default)(e))return e.toString();throw new cn.GraphQLError("ID cannot represent value: ".concat((0,ba.default)(e)))}var hI=new Wd.GraphQLScalarType({name:"ID",description:'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.',serialize:$W,parseValue:e4,parseLiteral:function(t){if(t.kind!==_s.Kind.STRING&&t.kind!==_s.Kind.INT)throw new cn.GraphQLError("ID cannot represent a non-string and non-integer value: "+(0,zd.print)(t),t);return t.value}});ti.GraphQLID=hI;var vI=Object.freeze([dI,cI,fI,pI,hI]);ti.specifiedScalarTypes=vI;function t4(e){return vI.some(function(t){var r=t.name;return e.name===r})}});var Zd=G(eE=>{"use strict";Object.defineProperty(eE,"__esModule",{value:!0});eE.astFromValue=Xd;var r4=lc(J_()),n4=lc(Ni()),gI=lc(jt()),i4=lc(_n()),a4=lc(Ma()),o4=lc(Mg()),zi=Jt(),u4=Ga(),Jd=bt();function lc(e){return e&&e.__esModule?e:{default:e}}function Xd(e,t){if((0,Jd.isNonNullType)(t)){var r=Xd(e,t.ofType);return(r==null?void 0:r.kind)===zi.Kind.NULL?null:r}if(e===null)return{kind:zi.Kind.NULL};if(e===void 0)return null;if((0,Jd.isListType)(t)){var n=t.ofType,i=(0,o4.default)(e);if(i!=null){for(var o=[],s=0;s{"use strict";Object.defineProperty(Gt,"__esModule",{value:!0});Gt.isIntrospectionType=v4;Gt.introspectionTypes=Gt.TypeNameMetaFieldDef=Gt.TypeMetaFieldDef=Gt.SchemaMetaFieldDef=Gt.__TypeKind=Gt.TypeKind=Gt.__EnumValue=Gt.__InputValue=Gt.__Field=Gt.__Type=Gt.__DirectiveLocation=Gt.__Directive=Gt.__Schema=void 0;var tE=rE(Ni()),s4=rE(jt()),l4=rE(_n()),c4=hi(),Xr=$l(),f4=Zd(),$t=Ga(),Pe=bt();function rE(e){return e&&e.__esModule?e:{default:e}}var nE=new Pe.GraphQLObjectType({name:"__Schema",description:"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",fields:function(){return{description:{type:$t.GraphQLString,resolve:function(r){return r.description}},types:{description:"A list of all types supported by this server.",type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull(Wi))),resolve:function(r){return(0,tE.default)(r.getTypeMap())}},queryType:{description:"The type that query operations will be rooted at.",type:new Pe.GraphQLNonNull(Wi),resolve:function(r){return r.getQueryType()}},mutationType:{description:"If this server supports mutation, the type that mutation operations will be rooted at.",type:Wi,resolve:function(r){return r.getMutationType()}},subscriptionType:{description:"If this server support subscription, the type that subscription operations will be rooted at.",type:Wi,resolve:function(r){return r.getSubscriptionType()}},directives:{description:"A list of all directives supported by this server.",type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull(iE))),resolve:function(r){return r.getDirectives()}}}}});Gt.__Schema=nE;var iE=new Pe.GraphQLObjectType({name:"__Directive",description:`A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document. - -In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.`,fields:function(){return{name:{type:new Pe.GraphQLNonNull($t.GraphQLString),resolve:function(r){return r.name}},description:{type:$t.GraphQLString,resolve:function(r){return r.description}},isRepeatable:{type:new Pe.GraphQLNonNull($t.GraphQLBoolean),resolve:function(r){return r.isRepeatable}},locations:{type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull(aE))),resolve:function(r){return r.locations}},args:{type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull($d))),resolve:function(r){return r.args}}}}});Gt.__Directive=iE;var aE=new Pe.GraphQLEnumType({name:"__DirectiveLocation",description:"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",values:{QUERY:{value:Xr.DirectiveLocation.QUERY,description:"Location adjacent to a query operation."},MUTATION:{value:Xr.DirectiveLocation.MUTATION,description:"Location adjacent to a mutation operation."},SUBSCRIPTION:{value:Xr.DirectiveLocation.SUBSCRIPTION,description:"Location adjacent to a subscription operation."},FIELD:{value:Xr.DirectiveLocation.FIELD,description:"Location adjacent to a field."},FRAGMENT_DEFINITION:{value:Xr.DirectiveLocation.FRAGMENT_DEFINITION,description:"Location adjacent to a fragment definition."},FRAGMENT_SPREAD:{value:Xr.DirectiveLocation.FRAGMENT_SPREAD,description:"Location adjacent to a fragment spread."},INLINE_FRAGMENT:{value:Xr.DirectiveLocation.INLINE_FRAGMENT,description:"Location adjacent to an inline fragment."},VARIABLE_DEFINITION:{value:Xr.DirectiveLocation.VARIABLE_DEFINITION,description:"Location adjacent to a variable definition."},SCHEMA:{value:Xr.DirectiveLocation.SCHEMA,description:"Location adjacent to a schema definition."},SCALAR:{value:Xr.DirectiveLocation.SCALAR,description:"Location adjacent to a scalar definition."},OBJECT:{value:Xr.DirectiveLocation.OBJECT,description:"Location adjacent to an object type definition."},FIELD_DEFINITION:{value:Xr.DirectiveLocation.FIELD_DEFINITION,description:"Location adjacent to a field definition."},ARGUMENT_DEFINITION:{value:Xr.DirectiveLocation.ARGUMENT_DEFINITION,description:"Location adjacent to an argument definition."},INTERFACE:{value:Xr.DirectiveLocation.INTERFACE,description:"Location adjacent to an interface definition."},UNION:{value:Xr.DirectiveLocation.UNION,description:"Location adjacent to a union definition."},ENUM:{value:Xr.DirectiveLocation.ENUM,description:"Location adjacent to an enum definition."},ENUM_VALUE:{value:Xr.DirectiveLocation.ENUM_VALUE,description:"Location adjacent to an enum value definition."},INPUT_OBJECT:{value:Xr.DirectiveLocation.INPUT_OBJECT,description:"Location adjacent to an input object type definition."},INPUT_FIELD_DEFINITION:{value:Xr.DirectiveLocation.INPUT_FIELD_DEFINITION,description:"Location adjacent to an input object field definition."}}});Gt.__DirectiveLocation=aE;var Wi=new Pe.GraphQLObjectType({name:"__Type",description:"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByUrl`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",fields:function(){return{kind:{type:new Pe.GraphQLNonNull(sE),resolve:function(r){if((0,Pe.isScalarType)(r))return En.SCALAR;if((0,Pe.isObjectType)(r))return En.OBJECT;if((0,Pe.isInterfaceType)(r))return En.INTERFACE;if((0,Pe.isUnionType)(r))return En.UNION;if((0,Pe.isEnumType)(r))return En.ENUM;if((0,Pe.isInputObjectType)(r))return En.INPUT_OBJECT;if((0,Pe.isListType)(r))return En.LIST;if((0,Pe.isNonNullType)(r))return En.NON_NULL;(0,l4.default)(0,'Unexpected type: "'.concat((0,s4.default)(r),'".'))}},name:{type:$t.GraphQLString,resolve:function(r){return r.name!==void 0?r.name:void 0}},description:{type:$t.GraphQLString,resolve:function(r){return r.description!==void 0?r.description:void 0}},specifiedByUrl:{type:$t.GraphQLString,resolve:function(r){return r.specifiedByUrl!==void 0?r.specifiedByUrl:void 0}},fields:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull(oE)),args:{includeDeprecated:{type:$t.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var i=n.includeDeprecated;if((0,Pe.isObjectType)(r)||(0,Pe.isInterfaceType)(r)){var o=(0,tE.default)(r.getFields());return i?o:o.filter(function(s){return s.deprecationReason==null})}}},interfaces:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull(Wi)),resolve:function(r){if((0,Pe.isObjectType)(r)||(0,Pe.isInterfaceType)(r))return r.getInterfaces()}},possibleTypes:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull(Wi)),resolve:function(r,n,i,o){var s=o.schema;if((0,Pe.isAbstractType)(r))return s.getPossibleTypes(r)}},enumValues:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull(uE)),args:{includeDeprecated:{type:$t.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var i=n.includeDeprecated;if((0,Pe.isEnumType)(r)){var o=r.getValues();return i?o:o.filter(function(s){return s.deprecationReason==null})}}},inputFields:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull($d)),args:{includeDeprecated:{type:$t.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var i=n.includeDeprecated;if((0,Pe.isInputObjectType)(r)){var o=(0,tE.default)(r.getFields());return i?o:o.filter(function(s){return s.deprecationReason==null})}}},ofType:{type:Wi,resolve:function(r){return r.ofType!==void 0?r.ofType:void 0}}}}});Gt.__Type=Wi;var oE=new Pe.GraphQLObjectType({name:"__Field",description:"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",fields:function(){return{name:{type:new Pe.GraphQLNonNull($t.GraphQLString),resolve:function(r){return r.name}},description:{type:$t.GraphQLString,resolve:function(r){return r.description}},args:{type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull($d))),args:{includeDeprecated:{type:$t.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var i=n.includeDeprecated;return i?r.args:r.args.filter(function(o){return o.deprecationReason==null})}},type:{type:new Pe.GraphQLNonNull(Wi),resolve:function(r){return r.type}},isDeprecated:{type:new Pe.GraphQLNonNull($t.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:$t.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Gt.__Field=oE;var $d=new Pe.GraphQLObjectType({name:"__InputValue",description:"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",fields:function(){return{name:{type:new Pe.GraphQLNonNull($t.GraphQLString),resolve:function(r){return r.name}},description:{type:$t.GraphQLString,resolve:function(r){return r.description}},type:{type:new Pe.GraphQLNonNull(Wi),resolve:function(r){return r.type}},defaultValue:{type:$t.GraphQLString,description:"A GraphQL-formatted string representing the default value for this input value.",resolve:function(r){var n=r.type,i=r.defaultValue,o=(0,f4.astFromValue)(i,n);return o?(0,c4.print)(o):null}},isDeprecated:{type:new Pe.GraphQLNonNull($t.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:$t.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Gt.__InputValue=$d;var uE=new Pe.GraphQLObjectType({name:"__EnumValue",description:"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",fields:function(){return{name:{type:new Pe.GraphQLNonNull($t.GraphQLString),resolve:function(r){return r.name}},description:{type:$t.GraphQLString,resolve:function(r){return r.description}},isDeprecated:{type:new Pe.GraphQLNonNull($t.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:$t.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Gt.__EnumValue=uE;var En=Object.freeze({SCALAR:"SCALAR",OBJECT:"OBJECT",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",INPUT_OBJECT:"INPUT_OBJECT",LIST:"LIST",NON_NULL:"NON_NULL"});Gt.TypeKind=En;var sE=new Pe.GraphQLEnumType({name:"__TypeKind",description:"An enum describing what kind of type a given `__Type` is.",values:{SCALAR:{value:En.SCALAR,description:"Indicates this type is a scalar."},OBJECT:{value:En.OBJECT,description:"Indicates this type is an object. `fields` and `interfaces` are valid fields."},INTERFACE:{value:En.INTERFACE,description:"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields."},UNION:{value:En.UNION,description:"Indicates this type is a union. `possibleTypes` is a valid field."},ENUM:{value:En.ENUM,description:"Indicates this type is an enum. `enumValues` is a valid field."},INPUT_OBJECT:{value:En.INPUT_OBJECT,description:"Indicates this type is an input object. `inputFields` is a valid field."},LIST:{value:En.LIST,description:"Indicates this type is a list. `ofType` is a valid field."},NON_NULL:{value:En.NON_NULL,description:"Indicates this type is a non-null. `ofType` is a valid field."}}});Gt.__TypeKind=sE;var d4={name:"__schema",type:new Pe.GraphQLNonNull(nE),description:"Access the current type schema of this server.",args:[],resolve:function(t,r,n,i){var o=i.schema;return o},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Gt.SchemaMetaFieldDef=d4;var p4={name:"__type",type:Wi,description:"Request the type information of a single type.",args:[{name:"name",description:void 0,type:new Pe.GraphQLNonNull($t.GraphQLString),defaultValue:void 0,deprecationReason:void 0,extensions:void 0,astNode:void 0}],resolve:function(t,r,n,i){var o=r.name,s=i.schema;return s.getType(o)},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Gt.TypeMetaFieldDef=p4;var h4={name:"__typename",type:new Pe.GraphQLNonNull($t.GraphQLString),description:"The name of the current Object type at runtime.",args:[],resolve:function(t,r,n,i){var o=i.parentType;return o.name},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Gt.TypeNameMetaFieldDef=h4;var yI=Object.freeze([nE,iE,aE,Wi,oE,$d,uE,sE]);Gt.introspectionTypes=yI;function v4(e){return yI.some(function(t){var r=t.name;return e.name===r})}});var gi=G(Zr=>{"use strict";Object.defineProperty(Zr,"__esModule",{value:!0});Zr.isDirective=_I;Zr.assertDirective=S4;Zr.isSpecifiedDirective=k4;Zr.specifiedDirectives=Zr.GraphQLSpecifiedByDirective=Zr.GraphQLDeprecatedDirective=Zr.DEFAULT_DEPRECATION_REASON=Zr.GraphQLSkipDirective=Zr.GraphQLIncludeDirective=Zr.GraphQLDirective=void 0;var g4=Es(ic()),m4=qa(),y4=Es(jt()),bI=Es(Ng()),lE=Es(Hi()),b4=Es(jd()),T4=Es(Ma()),_4=Es(dg()),Ta=$l(),Qg=Ga(),Bg=bt();function Es(e){return e&&e.__esModule?e:{default:e}}function TI(e,t){for(var r=0;r{"use strict";Object.defineProperty(cc,"__esModule",{value:!0});cc.isSchema=CI;cc.assertSchema=A4;cc.GraphQLSchema=void 0;var O4=ku(nc()),w4=ku(Y_()),cE=ku(Ni()),N4=qa(),fE=ku(jt()),D4=ku(Ng()),Kg=ku(Hi()),x4=ku(jd()),C4=ku(Ma()),L4=vi(),DI=gi(),_a=bt();function ku(e){return e&&e.__esModule?e:{default:e}}function xI(e,t){for(var r=0;r{"use strict";Object.defineProperty(Hg,"__esModule",{value:!0});Hg.validateSchema=jI;Hg.assertValidSchema=q4;var II=dE(nc()),ep=dE(Ni()),qn=dE(jt()),R4=Je(),j4=qd(),P4=S_(),AI=Hd(),F4=ks(),M4=vi(),RI=gi(),Cr=bt();function dE(e){return e&&e.__esModule?e:{default:e}}function jI(e){if((0,F4.assertSchema)(e),e.__validationErrors)return e.__validationErrors;var t=new V4(e);U4(t),G4(t),Q4(t);var r=t.getErrors();return e.__validationErrors=r,r}function q4(e){var t=jI(e);if(t.length!==0)throw new Error(t.map(function(r){return r.message}).join(` - -`))}var V4=function(){function e(r){this._errors=[],this.schema=r}var t=e.prototype;return t.reportError=function(n,i){var o=Array.isArray(i)?i.filter(Boolean):i;this.addError(new R4.GraphQLError(n,o))},t.addError=function(n){this._errors.push(n)},t.getErrors=function(){return this._errors},e}();function U4(e){var t=e.schema,r=t.getQueryType();if(!r)e.reportError("Query root type must be provided.",t.astNode);else if(!(0,Cr.isObjectType)(r)){var n;e.reportError("Query root type must be Object type, it cannot be ".concat((0,qn.default)(r),"."),(n=pE(t,"query"))!==null&&n!==void 0?n:r.astNode)}var i=t.getMutationType();if(i&&!(0,Cr.isObjectType)(i)){var o;e.reportError("Mutation root type must be Object type if provided, it cannot be "+"".concat((0,qn.default)(i),"."),(o=pE(t,"mutation"))!==null&&o!==void 0?o:i.astNode)}var s=t.getSubscriptionType();if(s&&!(0,Cr.isObjectType)(s)){var l;e.reportError("Subscription root type must be Object type if provided, it cannot be "+"".concat((0,qn.default)(s),"."),(l=pE(t,"subscription"))!==null&&l!==void 0?l:s.astNode)}}function pE(e,t){for(var r=hE(e,function(o){return o.operationTypes}),n=0;n{"use strict";Object.defineProperty(yE,"__esModule",{value:!0});yE.typeFromAST=mE;var J4=VI(jt()),X4=VI(_n()),gE=Jt(),qI=bt();function VI(e){return e&&e.__esModule?e:{default:e}}function mE(e,t){var r;if(t.kind===gE.Kind.LIST_TYPE)return r=mE(e,t.type),r&&new qI.GraphQLList(r);if(t.kind===gE.Kind.NON_NULL_TYPE)return r=mE(e,t.type),r&&new qI.GraphQLNonNull(r);if(t.kind===gE.Kind.NAMED_TYPE)return e.getType(t.name.value);(0,X4.default)(0,"Unexpected type node: "+(0,J4.default)(t))}});var zg=G(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});np.visitWithTypeInfo=n5;np.TypeInfo=void 0;var Z4=e5(nc()),Sr=Jt(),$4=Xl(),UI=hu(),kr=bt(),dc=vi(),GI=Qa();function e5(e){return e&&e.__esModule?e:{default:e}}var t5=function(){function e(r,n,i){this._schema=r,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=n!=null?n:r5,i&&((0,kr.isInputType)(i)&&this._inputTypeStack.push(i),(0,kr.isCompositeType)(i)&&this._parentTypeStack.push(i),(0,kr.isOutputType)(i)&&this._typeStack.push(i))}var t=e.prototype;return t.getType=function(){if(this._typeStack.length>0)return this._typeStack[this._typeStack.length-1]},t.getParentType=function(){if(this._parentTypeStack.length>0)return this._parentTypeStack[this._parentTypeStack.length-1]},t.getInputType=function(){if(this._inputTypeStack.length>0)return this._inputTypeStack[this._inputTypeStack.length-1]},t.getParentInputType=function(){if(this._inputTypeStack.length>1)return this._inputTypeStack[this._inputTypeStack.length-2]},t.getFieldDef=function(){if(this._fieldDefStack.length>0)return this._fieldDefStack[this._fieldDefStack.length-1]},t.getDefaultValue=function(){if(this._defaultValueStack.length>0)return this._defaultValueStack[this._defaultValueStack.length-1]},t.getDirective=function(){return this._directive},t.getArgument=function(){return this._argument},t.getEnumValue=function(){return this._enumValue},t.enter=function(n){var i=this._schema;switch(n.kind){case Sr.Kind.SELECTION_SET:{var o=(0,kr.getNamedType)(this.getType());this._parentTypeStack.push((0,kr.isCompositeType)(o)?o:void 0);break}case Sr.Kind.FIELD:{var s=this.getParentType(),l,d;s&&(l=this._getFieldDef(i,s,n),l&&(d=l.type)),this._fieldDefStack.push(l),this._typeStack.push((0,kr.isOutputType)(d)?d:void 0);break}case Sr.Kind.DIRECTIVE:this._directive=i.getDirective(n.name.value);break;case Sr.Kind.OPERATION_DEFINITION:{var h;switch(n.operation){case"query":h=i.getQueryType();break;case"mutation":h=i.getMutationType();break;case"subscription":h=i.getSubscriptionType();break}this._typeStack.push((0,kr.isObjectType)(h)?h:void 0);break}case Sr.Kind.INLINE_FRAGMENT:case Sr.Kind.FRAGMENT_DEFINITION:{var v=n.typeCondition,y=v?(0,GI.typeFromAST)(i,v):(0,kr.getNamedType)(this.getType());this._typeStack.push((0,kr.isOutputType)(y)?y:void 0);break}case Sr.Kind.VARIABLE_DEFINITION:{var b=(0,GI.typeFromAST)(i,n.type);this._inputTypeStack.push((0,kr.isInputType)(b)?b:void 0);break}case Sr.Kind.ARGUMENT:{var D,_,k,T=(D=this.getDirective())!==null&&D!==void 0?D:this.getFieldDef();T&&(_=(0,Z4.default)(T.args,function(M){return M.name===n.name.value}),_&&(k=_.type)),this._argument=_,this._defaultValueStack.push(_?_.defaultValue:void 0),this._inputTypeStack.push((0,kr.isInputType)(k)?k:void 0);break}case Sr.Kind.LIST:{var S=(0,kr.getNullableType)(this.getInputType()),m=(0,kr.isListType)(S)?S.ofType:S;this._defaultValueStack.push(void 0),this._inputTypeStack.push((0,kr.isInputType)(m)?m:void 0);break}case Sr.Kind.OBJECT_FIELD:{var w=(0,kr.getNamedType)(this.getInputType()),x,L;(0,kr.isInputObjectType)(w)&&(L=w.getFields()[n.name.value],L&&(x=L.type)),this._defaultValueStack.push(L?L.defaultValue:void 0),this._inputTypeStack.push((0,kr.isInputType)(x)?x:void 0);break}case Sr.Kind.ENUM:{var O=(0,kr.getNamedType)(this.getInputType()),R;(0,kr.isEnumType)(O)&&(R=O.getValue(n.value)),this._enumValue=R;break}}},t.leave=function(n){switch(n.kind){case Sr.Kind.SELECTION_SET:this._parentTypeStack.pop();break;case Sr.Kind.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case Sr.Kind.DIRECTIVE:this._directive=null;break;case Sr.Kind.OPERATION_DEFINITION:case Sr.Kind.INLINE_FRAGMENT:case Sr.Kind.FRAGMENT_DEFINITION:this._typeStack.pop();break;case Sr.Kind.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case Sr.Kind.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case Sr.Kind.LIST:case Sr.Kind.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case Sr.Kind.ENUM:this._enumValue=null;break}},e}();np.TypeInfo=t5;function r5(e,t,r){var n=r.name.value;if(n===dc.SchemaMetaFieldDef.name&&e.getQueryType()===t)return dc.SchemaMetaFieldDef;if(n===dc.TypeMetaFieldDef.name&&e.getQueryType()===t)return dc.TypeMetaFieldDef;if(n===dc.TypeNameMetaFieldDef.name&&(0,kr.isCompositeType)(t))return dc.TypeNameMetaFieldDef;if((0,kr.isObjectType)(t)||(0,kr.isInterfaceType)(t))return t.getFields()[n]}function n5(e,t){return{enter:function(n){e.enter(n);var i=(0,UI.getVisitFn)(t,n.kind,!1);if(i){var o=i.apply(t,arguments);return o!==void 0&&(e.leave(n),(0,$4.isNode)(o)&&e.enter(o)),o}},leave:function(n){var i=(0,UI.getVisitFn)(t,n.kind,!0),o;return i&&(o=i.apply(t,arguments)),e.leave(n),o}}}});var ws=G(Sa=>{"use strict";Object.defineProperty(Sa,"__esModule",{value:!0});Sa.isDefinitionNode=i5;Sa.isExecutableDefinitionNode=QI;Sa.isSelectionNode=a5;Sa.isValueNode=o5;Sa.isTypeNode=u5;Sa.isTypeSystemDefinitionNode=BI;Sa.isTypeDefinitionNode=KI;Sa.isTypeSystemExtensionNode=HI;Sa.isTypeExtensionNode=zI;var Dt=Jt();function i5(e){return QI(e)||BI(e)||HI(e)}function QI(e){return e.kind===Dt.Kind.OPERATION_DEFINITION||e.kind===Dt.Kind.FRAGMENT_DEFINITION}function a5(e){return e.kind===Dt.Kind.FIELD||e.kind===Dt.Kind.FRAGMENT_SPREAD||e.kind===Dt.Kind.INLINE_FRAGMENT}function o5(e){return e.kind===Dt.Kind.VARIABLE||e.kind===Dt.Kind.INT||e.kind===Dt.Kind.FLOAT||e.kind===Dt.Kind.STRING||e.kind===Dt.Kind.BOOLEAN||e.kind===Dt.Kind.NULL||e.kind===Dt.Kind.ENUM||e.kind===Dt.Kind.LIST||e.kind===Dt.Kind.OBJECT}function u5(e){return e.kind===Dt.Kind.NAMED_TYPE||e.kind===Dt.Kind.LIST_TYPE||e.kind===Dt.Kind.NON_NULL_TYPE}function BI(e){return e.kind===Dt.Kind.SCHEMA_DEFINITION||KI(e)||e.kind===Dt.Kind.DIRECTIVE_DEFINITION}function KI(e){return e.kind===Dt.Kind.SCALAR_TYPE_DEFINITION||e.kind===Dt.Kind.OBJECT_TYPE_DEFINITION||e.kind===Dt.Kind.INTERFACE_TYPE_DEFINITION||e.kind===Dt.Kind.UNION_TYPE_DEFINITION||e.kind===Dt.Kind.ENUM_TYPE_DEFINITION||e.kind===Dt.Kind.INPUT_OBJECT_TYPE_DEFINITION}function HI(e){return e.kind===Dt.Kind.SCHEMA_EXTENSION||zI(e)}function zI(e){return e.kind===Dt.Kind.SCALAR_TYPE_EXTENSION||e.kind===Dt.Kind.OBJECT_TYPE_EXTENSION||e.kind===Dt.Kind.INTERFACE_TYPE_EXTENSION||e.kind===Dt.Kind.UNION_TYPE_EXTENSION||e.kind===Dt.Kind.ENUM_TYPE_EXTENSION||e.kind===Dt.Kind.INPUT_OBJECT_TYPE_EXTENSION}});var TE=G(bE=>{"use strict";Object.defineProperty(bE,"__esModule",{value:!0});bE.ExecutableDefinitionsRule=c5;var s5=Je(),WI=Jt(),l5=ws();function c5(e){return{Document:function(r){for(var n=0,i=r.definitions;n{"use strict";Object.defineProperty(_E,"__esModule",{value:!0});_E.UniqueOperationNamesRule=d5;var f5=Je();function d5(e){var t=Object.create(null);return{OperationDefinition:function(n){var i=n.name;return i&&(t[i.value]?e.reportError(new f5.GraphQLError('There can be only one operation named "'.concat(i.value,'".'),[t[i.value],i])):t[i.value]=i),!1},FragmentDefinition:function(){return!1}}}});var kE=G(SE=>{"use strict";Object.defineProperty(SE,"__esModule",{value:!0});SE.LoneAnonymousOperationRule=v5;var p5=Je(),h5=Jt();function v5(e){var t=0;return{Document:function(n){t=n.definitions.filter(function(i){return i.kind===h5.Kind.OPERATION_DEFINITION}).length},OperationDefinition:function(n){!n.name&&t>1&&e.reportError(new p5.GraphQLError("This anonymous operation must be the only defined operation.",n))}}}});var wE=G(OE=>{"use strict";Object.defineProperty(OE,"__esModule",{value:!0});OE.SingleFieldSubscriptionsRule=m5;var g5=Je();function m5(e){return{OperationDefinition:function(r){r.operation==="subscription"&&r.selectionSet.selections.length!==1&&e.reportError(new g5.GraphQLError(r.name?'Subscription "'.concat(r.name.value,'" must select only one top level field.'):"Anonymous Subscription must select only one top level field.",r.selectionSet.selections.slice(1)))}}}});var xE=G(DE=>{"use strict";Object.defineProperty(DE,"__esModule",{value:!0});DE.KnownTypeNamesRule=S5;var y5=YI(gu()),b5=YI(mu()),T5=Je(),NE=ws(),_5=Ga(),E5=vi();function YI(e){return e&&e.__esModule?e:{default:e}}function S5(e){for(var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null),i=0,o=e.getDocument().definitions;i{"use strict";Object.defineProperty(CE,"__esModule",{value:!0});CE.FragmentsOnCompositeTypesRule=w5;var XI=Je(),ZI=hi(),$I=bt(),eA=Qa();function w5(e){return{InlineFragment:function(r){var n=r.typeCondition;if(n){var i=(0,eA.typeFromAST)(e.getSchema(),n);if(i&&!(0,$I.isCompositeType)(i)){var o=(0,ZI.print)(n);e.reportError(new XI.GraphQLError('Fragment cannot condition on non composite type "'.concat(o,'".'),n))}}},FragmentDefinition:function(r){var n=(0,eA.typeFromAST)(e.getSchema(),r.typeCondition);if(n&&!(0,$I.isCompositeType)(n)){var i=(0,ZI.print)(r.typeCondition);e.reportError(new XI.GraphQLError('Fragment "'.concat(r.name.value,'" cannot condition on non composite type "').concat(i,'".'),r.typeCondition))}}}}});var AE=G(IE=>{"use strict";Object.defineProperty(IE,"__esModule",{value:!0});IE.VariablesAreInputTypesRule=L5;var N5=Je(),D5=hi(),x5=bt(),C5=Qa();function L5(e){return{VariableDefinition:function(r){var n=(0,C5.typeFromAST)(e.getSchema(),r.type);if(n&&!(0,x5.isInputType)(n)){var i=r.variable.name.value,o=(0,D5.print)(r.type);e.reportError(new N5.GraphQLError('Variable "$'.concat(i,'" cannot be non-input type "').concat(o,'".'),r.type))}}}}});var jE=G(RE=>{"use strict";Object.defineProperty(RE,"__esModule",{value:!0});RE.ScalarLeafsRule=A5;var tA=I5(jt()),rA=Je(),nA=bt();function I5(e){return e&&e.__esModule?e:{default:e}}function A5(e){return{Field:function(r){var n=e.getType(),i=r.selectionSet;if(n){if((0,nA.isLeafType)((0,nA.getNamedType)(n))){if(i){var o=r.name.value,s=(0,tA.default)(n);e.reportError(new rA.GraphQLError('Field "'.concat(o,'" must not have a selection since type "').concat(s,'" has no subfields.'),i))}}else if(!i){var l=r.name.value,d=(0,tA.default)(n);e.reportError(new rA.GraphQLError('Field "'.concat(l,'" of type "').concat(d,'" must have a selection of subfields. Did you mean "').concat(l,' { ... }"?'),r))}}}}}});var FE=G(PE=>{"use strict";Object.defineProperty(PE,"__esModule",{value:!0});PE.FieldsOnCorrectTypeRule=M5;var R5=Wg(Y_()),iA=Wg(gu()),j5=Wg(mu()),P5=Wg(Ud()),F5=Je(),ip=bt();function Wg(e){return e&&e.__esModule?e:{default:e}}function M5(e){return{Field:function(r){var n=e.getParentType();if(n){var i=e.getFieldDef();if(!i){var o=e.getSchema(),s=r.name.value,l=(0,iA.default)("to use an inline fragment on",q5(o,n,s));l===""&&(l=(0,iA.default)(V5(n,s))),e.reportError(new F5.GraphQLError('Cannot query field "'.concat(s,'" on type "').concat(n.name,'".')+l,r))}}}}}function q5(e,t,r){if(!(0,ip.isAbstractType)(t))return[];for(var n=new Set,i=Object.create(null),o=0,s=e.getPossibleTypes(t);o{"use strict";Object.defineProperty(ME,"__esModule",{value:!0});ME.UniqueFragmentNamesRule=G5;var U5=Je();function G5(e){var t=Object.create(null);return{OperationDefinition:function(){return!1},FragmentDefinition:function(n){var i=n.name.value;return t[i]?e.reportError(new U5.GraphQLError('There can be only one fragment named "'.concat(i,'".'),[t[i],n.name])):t[i]=n.name,!1}}}});var UE=G(VE=>{"use strict";Object.defineProperty(VE,"__esModule",{value:!0});VE.KnownFragmentNamesRule=B5;var Q5=Je();function B5(e){return{FragmentSpread:function(r){var n=r.name.value,i=e.getFragment(n);i||e.reportError(new Q5.GraphQLError('Unknown fragment "'.concat(n,'".'),r.name))}}}});var QE=G(GE=>{"use strict";Object.defineProperty(GE,"__esModule",{value:!0});GE.NoUnusedFragmentsRule=H5;var K5=Je();function H5(e){var t=[],r=[];return{OperationDefinition:function(i){return t.push(i),!1},FragmentDefinition:function(i){return r.push(i),!1},Document:{leave:function(){for(var i=Object.create(null),o=0;o{"use strict";Object.defineProperty(KE,"__esModule",{value:!0});KE.PossibleFragmentSpreadsRule=Y5;var Yg=W5(jt()),aA=Je(),BE=bt(),z5=Qa(),oA=Hd();function W5(e){return e&&e.__esModule?e:{default:e}}function Y5(e){return{InlineFragment:function(r){var n=e.getType(),i=e.getParentType();if((0,BE.isCompositeType)(n)&&(0,BE.isCompositeType)(i)&&!(0,oA.doTypesOverlap)(e.getSchema(),n,i)){var o=(0,Yg.default)(i),s=(0,Yg.default)(n);e.reportError(new aA.GraphQLError('Fragment cannot be spread here as objects of type "'.concat(o,'" can never be of type "').concat(s,'".'),r))}},FragmentSpread:function(r){var n=r.name.value,i=J5(e,n),o=e.getParentType();if(i&&o&&!(0,oA.doTypesOverlap)(e.getSchema(),i,o)){var s=(0,Yg.default)(o),l=(0,Yg.default)(i);e.reportError(new aA.GraphQLError('Fragment "'.concat(n,'" cannot be spread here as objects of type "').concat(s,'" can never be of type "').concat(l,'".'),r))}}}}function J5(e,t){var r=e.getFragment(t);if(r){var n=(0,z5.typeFromAST)(e.getSchema(),r.typeCondition);if((0,BE.isCompositeType)(n))return n}}});var WE=G(zE=>{"use strict";Object.defineProperty(zE,"__esModule",{value:!0});zE.NoFragmentCyclesRule=Z5;var X5=Je();function Z5(e){var t=Object.create(null),r=[],n=Object.create(null);return{OperationDefinition:function(){return!1},FragmentDefinition:function(s){return i(s),!1}};function i(o){if(!t[o.name.value]){var s=o.name.value;t[s]=!0;var l=e.getFragmentSpreads(o.selectionSet);if(l.length!==0){n[s]=r.length;for(var d=0;d{"use strict";Object.defineProperty(YE,"__esModule",{value:!0});YE.UniqueVariableNamesRule=e6;var $5=Je();function e6(e){var t=Object.create(null);return{OperationDefinition:function(){t=Object.create(null)},VariableDefinition:function(n){var i=n.variable.name.value;t[i]?e.reportError(new $5.GraphQLError('There can be only one variable named "$'.concat(i,'".'),[t[i],n.variable.name])):t[i]=n.variable.name}}}});var ZE=G(XE=>{"use strict";Object.defineProperty(XE,"__esModule",{value:!0});XE.NoUndefinedVariablesRule=r6;var t6=Je();function r6(e){var t=Object.create(null);return{OperationDefinition:{enter:function(){t=Object.create(null)},leave:function(n){for(var i=e.getRecursiveVariableUsages(n),o=0;o{"use strict";Object.defineProperty($E,"__esModule",{value:!0});$E.NoUnusedVariablesRule=i6;var n6=Je();function i6(e){var t=[];return{OperationDefinition:{enter:function(){t=[]},leave:function(n){for(var i=Object.create(null),o=e.getRecursiveVariableUsages(n),s=0;s{"use strict";Object.defineProperty(tS,"__esModule",{value:!0});tS.KnownDirectivesRule=u6;var a6=lA(jt()),uA=lA(_n()),sA=Je(),sr=Jt(),$r=$l(),o6=gi();function lA(e){return e&&e.__esModule?e:{default:e}}function u6(e){for(var t=Object.create(null),r=e.getSchema(),n=r?r.getDirectives():o6.specifiedDirectives,i=0;i{"use strict";Object.defineProperty(iS,"__esModule",{value:!0});iS.UniqueDirectivesPerLocationRule=d6;var c6=Je(),nS=Jt(),cA=ws(),f6=gi();function d6(e){for(var t=Object.create(null),r=e.getSchema(),n=r?r.getDirectives():f6.specifiedDirectives,i=0;i{"use strict";Object.defineProperty(Jg,"__esModule",{value:!0});Jg.KnownArgumentNamesRule=g6;Jg.KnownArgumentNamesOnDirectivesRule=mA;var fA=hA(gu()),dA=hA(mu()),pA=Je(),p6=Jt(),h6=gi();function hA(e){return e&&e.__esModule?e:{default:e}}function vA(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function gA(e){for(var t=1;t{"use strict";Object.defineProperty(uS,"__esModule",{value:!0});uS.UniqueArgumentNamesRule=y6;var m6=Je();function y6(e){var t=Object.create(null);return{Field:function(){t=Object.create(null)},Directive:function(){t=Object.create(null)},Argument:function(n){var i=n.name.value;return t[i]?e.reportError(new m6.GraphQLError('There can be only one argument named "'.concat(i,'".'),[t[i],n.name])):t[i]=n.name,!1}}}});var cS=G(lS=>{"use strict";Object.defineProperty(lS,"__esModule",{value:!0});lS.ValuesOfCorrectTypeRule=S6;var b6=op(Ni()),T6=op(vu()),ap=op(jt()),_6=op(gu()),E6=op(mu()),Ns=Je(),Xg=hi(),Ba=bt();function op(e){return e&&e.__esModule?e:{default:e}}function S6(e){return{ListValue:function(r){var n=(0,Ba.getNullableType)(e.getParentInputType());if(!(0,Ba.isListType)(n))return Ds(e,r),!1},ObjectValue:function(r){var n=(0,Ba.getNamedType)(e.getInputType());if(!(0,Ba.isInputObjectType)(n))return Ds(e,r),!1;for(var i=(0,T6.default)(r.fields,function(v){return v.name.value}),o=0,s=(0,b6.default)(n.getFields());o{"use strict";Object.defineProperty($g,"__esModule",{value:!0});$g.ProvidedRequiredArgumentsRule=N6;$g.ProvidedRequiredArgumentsOnDirectivesRule=kA;var yA=_A(jt()),Zg=_A(vu()),bA=Je(),TA=Jt(),k6=hi(),O6=gi(),fS=bt();function _A(e){return e&&e.__esModule?e:{default:e}}function EA(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function SA(e){for(var t=1;t{"use strict";Object.defineProperty(pS,"__esModule",{value:!0});pS.VariablesInAllowedPositionRule=A6;var OA=I6(jt()),x6=Je(),C6=Jt(),wA=bt(),L6=Qa(),NA=Hd();function I6(e){return e&&e.__esModule?e:{default:e}}function A6(e){var t=Object.create(null);return{OperationDefinition:{enter:function(){t=Object.create(null)},leave:function(n){for(var i=e.getRecursiveVariableUsages(n),o=0;o{"use strict";Object.defineProperty(TS,"__esModule",{value:!0});TS.OverlappingFieldsCanBeMergedRule=M6;var j6=gS(nc()),P6=gS(ic()),DA=gS(jt()),F6=Je(),vS=Jt(),xA=hi(),mi=bt(),CA=Qa();function gS(e){return e&&e.__esModule?e:{default:e}}function LA(e){return Array.isArray(e)?e.map(function(t){var r=t[0],n=t[1];return'subfields "'.concat(r,'" conflict because ')+LA(n)}).join(" and "):e}function M6(e){var t=new K6,r=new Map;return{SelectionSet:function(i){for(var o=q6(e,r,t,e.getParentType(),i),s=0;s1)for(var v=0;v0)return[[t,e.map(function(i){var o=i[0];return o})],e.reduce(function(i,o){var s=o[1];return i.concat(s)},[r]),e.reduce(function(i,o){var s=o[2];return i.concat(s)},[n])]}var K6=function(){function e(){this._data=Object.create(null)}var t=e.prototype;return t.has=function(n,i,o){var s=this._data[n],l=s&&s[i];return l===void 0?!1:o===!1?l===!1:!0},t.add=function(n,i,o){this._pairSetAdd(n,i,o),this._pairSetAdd(i,n,o)},t._pairSetAdd=function(n,i,o){var s=this._data[n];s||(s=Object.create(null),this._data[n]=s),s[i]=o},e}()});var SS=G(ES=>{"use strict";Object.defineProperty(ES,"__esModule",{value:!0});ES.UniqueInputFieldNamesRule=z6;var H6=Je();function z6(e){var t=[],r=Object.create(null);return{ObjectValue:{enter:function(){t.push(r),r=Object.create(null)},leave:function(){r=t.pop()}},ObjectField:function(i){var o=i.name.value;r[o]?e.reportError(new H6.GraphQLError('There can be only one input field named "'.concat(o,'".'),[r[o],i.name])):r[o]=i.name}}}});var OS=G(kS=>{"use strict";Object.defineProperty(kS,"__esModule",{value:!0});kS.LoneSchemaDefinitionRule=W6;var RA=Je();function W6(e){var t,r,n,i=e.getSchema(),o=(t=(r=(n=i==null?void 0:i.astNode)!==null&&n!==void 0?n:i==null?void 0:i.getQueryType())!==null&&r!==void 0?r:i==null?void 0:i.getMutationType())!==null&&t!==void 0?t:i==null?void 0:i.getSubscriptionType(),s=0;return{SchemaDefinition:function(d){if(o){e.reportError(new RA.GraphQLError("Cannot define a new schema within a schema extension.",d));return}s>0&&e.reportError(new RA.GraphQLError("Must provide only one schema definition.",d)),++s}}}});var NS=G(wS=>{"use strict";Object.defineProperty(wS,"__esModule",{value:!0});wS.UniqueOperationTypesRule=Y6;var jA=Je();function Y6(e){var t=e.getSchema(),r=Object.create(null),n=t?{query:t.getQueryType(),mutation:t.getMutationType(),subscription:t.getSubscriptionType()}:{};return{SchemaDefinition:i,SchemaExtension:i};function i(o){for(var s,l=(s=o.operationTypes)!==null&&s!==void 0?s:[],d=0;d{"use strict";Object.defineProperty(DS,"__esModule",{value:!0});DS.UniqueTypeNamesRule=J6;var PA=Je();function J6(e){var t=Object.create(null),r=e.getSchema();return{ScalarTypeDefinition:n,ObjectTypeDefinition:n,InterfaceTypeDefinition:n,UnionTypeDefinition:n,EnumTypeDefinition:n,InputObjectTypeDefinition:n};function n(i){var o=i.name.value;if(r!=null&&r.getType(o)){e.reportError(new PA.GraphQLError('Type "'.concat(o,'" already exists in the schema. It cannot also be defined in this type definition.'),i.name));return}return t[o]?e.reportError(new PA.GraphQLError('There can be only one type named "'.concat(o,'".'),[t[o],i.name])):t[o]=i.name,!1}}});var LS=G(CS=>{"use strict";Object.defineProperty(CS,"__esModule",{value:!0});CS.UniqueEnumValueNamesRule=Z6;var FA=Je(),X6=bt();function Z6(e){var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null);return{EnumTypeDefinition:i,EnumTypeExtension:i};function i(o){var s,l=o.name.value;n[l]||(n[l]=Object.create(null));for(var d=(s=o.values)!==null&&s!==void 0?s:[],h=n[l],v=0;v{"use strict";Object.defineProperty(AS,"__esModule",{value:!0});AS.UniqueFieldDefinitionNamesRule=$6;var MA=Je(),IS=bt();function $6(e){var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null);return{InputObjectTypeDefinition:i,InputObjectTypeExtension:i,InterfaceTypeDefinition:i,InterfaceTypeExtension:i,ObjectTypeDefinition:i,ObjectTypeExtension:i};function i(o){var s,l=o.name.value;n[l]||(n[l]=Object.create(null));for(var d=(s=o.fields)!==null&&s!==void 0?s:[],h=n[l],v=0;v{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});jS.UniqueDirectiveNamesRule=t9;var qA=Je();function t9(e){var t=Object.create(null),r=e.getSchema();return{DirectiveDefinition:function(i){var o=i.name.value;if(r!=null&&r.getDirective(o)){e.reportError(new qA.GraphQLError('Directive "@'.concat(o,'" already exists in the schema. It cannot be redefined.'),i.name));return}return t[o]?e.reportError(new qA.GraphQLError('There can be only one directive named "@'.concat(o,'".'),[t[o],i.name])):t[o]=i.name,!1}}}});var MS=G(FS=>{"use strict";Object.defineProperty(FS,"__esModule",{value:!0});FS.PossibleTypeExtensionsRule=a9;var VA=nm(jt()),UA=nm(_n()),r9=nm(gu()),n9=nm(mu()),GA=Je(),dr=Jt(),i9=ws(),pc=bt(),Ou;function nm(e){return e&&e.__esModule?e:{default:e}}function hc(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a9(e){for(var t=e.getSchema(),r=Object.create(null),n=0,i=e.getDocument().definitions;n{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});vc.specifiedSDLRules=vc.specifiedRules=void 0;var l9=TE(),c9=EE(),f9=kE(),d9=wE(),QA=xE(),p9=LE(),h9=AE(),v9=jE(),g9=FE(),m9=qE(),y9=UE(),b9=QE(),T9=HE(),_9=WE(),E9=JE(),S9=ZE(),k9=eS(),BA=rS(),KA=aS(),HA=oS(),zA=sS(),O9=cS(),WA=dS(),w9=hS(),N9=_S(),YA=SS(),D9=OS(),x9=NS(),C9=xS(),L9=LS(),I9=RS(),A9=PS(),R9=MS(),j9=Object.freeze([l9.ExecutableDefinitionsRule,c9.UniqueOperationNamesRule,f9.LoneAnonymousOperationRule,d9.SingleFieldSubscriptionsRule,QA.KnownTypeNamesRule,p9.FragmentsOnCompositeTypesRule,h9.VariablesAreInputTypesRule,v9.ScalarLeafsRule,g9.FieldsOnCorrectTypeRule,m9.UniqueFragmentNamesRule,y9.KnownFragmentNamesRule,b9.NoUnusedFragmentsRule,T9.PossibleFragmentSpreadsRule,_9.NoFragmentCyclesRule,E9.UniqueVariableNamesRule,S9.NoUndefinedVariablesRule,k9.NoUnusedVariablesRule,BA.KnownDirectivesRule,KA.UniqueDirectivesPerLocationRule,HA.KnownArgumentNamesRule,zA.UniqueArgumentNamesRule,O9.ValuesOfCorrectTypeRule,WA.ProvidedRequiredArgumentsRule,w9.VariablesInAllowedPositionRule,N9.OverlappingFieldsCanBeMergedRule,YA.UniqueInputFieldNamesRule]);vc.specifiedRules=j9;var P9=Object.freeze([D9.LoneSchemaDefinitionRule,x9.UniqueOperationTypesRule,C9.UniqueTypeNamesRule,L9.UniqueEnumValueNamesRule,I9.UniqueFieldDefinitionNamesRule,A9.UniqueDirectiveNamesRule,QA.KnownTypeNamesRule,BA.KnownDirectivesRule,KA.UniqueDirectivesPerLocationRule,R9.PossibleTypeExtensionsRule,HA.KnownArgumentNamesOnDirectivesRule,zA.UniqueArgumentNamesRule,YA.UniqueInputFieldNamesRule,WA.ProvidedRequiredArgumentsOnDirectivesRule]);vc.specifiedSDLRules=P9});var US=G(wu=>{"use strict";Object.defineProperty(wu,"__esModule",{value:!0});wu.ValidationContext=wu.SDLValidationContext=wu.ASTValidationContext=void 0;var JA=Jt(),F9=hu(),XA=zg();function ZA(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var VS=function(){function e(r,n){this._ast=r,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=n}var t=e.prototype;return t.reportError=function(n){this._onError(n)},t.getDocument=function(){return this._ast},t.getFragment=function(n){var i=this._fragments;return i||(this._fragments=i=this.getDocument().definitions.reduce(function(o,s){return s.kind===JA.Kind.FRAGMENT_DEFINITION&&(o[s.name.value]=s),o},Object.create(null))),i[n]},t.getFragmentSpreads=function(n){var i=this._fragmentSpreads.get(n);if(!i){i=[];for(var o=[n];o.length!==0;)for(var s=o.pop(),l=0,d=s.selections;l{"use strict";Object.defineProperty(gc,"__esModule",{value:!0});gc.validate=B9;gc.validateSDL=GS;gc.assertValidSDL=K9;gc.assertValidSDLExtension=H9;var V9=Q9(Hi()),U9=Je(),im=hu(),G9=rp(),$A=zg(),eR=qS(),tR=US();function Q9(e){return e&&e.__esModule?e:{default:e}}function B9(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:eR.specifiedRules,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:new $A.TypeInfo(e),i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{maxErrors:void 0};t||(0,V9.default)(0,"Must provide document."),(0,G9.assertValidSchema)(e);var o=Object.freeze({}),s=[],l=new tR.ValidationContext(e,t,n,function(h){if(i.maxErrors!=null&&s.length>=i.maxErrors)throw s.push(new U9.GraphQLError("Too many validation errors, error limit reached. Validation aborted.")),o;s.push(h)}),d=(0,im.visitInParallel)(r.map(function(h){return h(l)}));try{(0,im.visit)(t,(0,$A.visitWithTypeInfo)(n,d))}catch(h){if(h!==o)throw h}return s}function GS(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:eR.specifiedSDLRules,n=[],i=new tR.SDLValidationContext(e,t,function(s){n.push(s)}),o=r.map(function(s){return s(i)});return(0,im.visit)(e,(0,im.visitInParallel)(o)),n}function K9(e){var t=GS(e);if(t.length!==0)throw new Error(t.map(function(r){return r.message}).join(` - -`))}function H9(e,t){var r=GS(e,t);if(r.length!==0)throw new Error(r.map(function(n){return n.message}).join(` - -`))}});var rR=G(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});QS.default=z9;function z9(e){var t;return function(n,i,o){t||(t=new WeakMap);var s=t.get(n),l;if(s){if(l=s.get(i),l){var d=l.get(o);if(d!==void 0)return d}}else s=new WeakMap,t.set(n,s);l||(l=new WeakMap,s.set(i,l));var h=e(n,i,o);return l.set(o,h),h}}});var nR=G(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});BS.default=J9;var W9=Y9(rg());function Y9(e){return e&&e.__esModule?e:{default:e}}function J9(e,t,r){return e.reduce(function(n,i){return(0,W9.default)(n)?n.then(function(o){return t(o,i)}):t(n,i)},r)}});var iR=G(KS=>{"use strict";Object.defineProperty(KS,"__esModule",{value:!0});KS.default=X9;function X9(e){var t=Object.keys(e),r=t.map(function(n){return e[n]});return Promise.all(r).then(function(n){return n.reduce(function(i,o,s){return i[t[s]]=o,i},Object.create(null))})}});var up=G(am=>{"use strict";Object.defineProperty(am,"__esModule",{value:!0});am.addPath=Z9;am.pathToArray=$9;function Z9(e,t,r){return{prev:e,key:t,typename:r}}function $9(e){for(var t=[],r=e;r;)t.push(r.key),r=r.prev;return t.reverse()}});var um=G(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});HS.getOperationRootType=e8;var om=Je();function e8(e,t){if(t.operation==="query"){var r=e.getQueryType();if(!r)throw new om.GraphQLError("Schema does not define the required query root type.",t);return r}if(t.operation==="mutation"){var n=e.getMutationType();if(!n)throw new om.GraphQLError("Schema is not configured for mutations.",t);return n}if(t.operation==="subscription"){var i=e.getSubscriptionType();if(!i)throw new om.GraphQLError("Schema is not configured for subscriptions.",t);return i}throw new om.GraphQLError("Can only have query, mutation and subscription operations.",t)}});var WS=G(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});zS.default=t8;function t8(e){return e.map(function(t){return typeof t=="number"?"["+t.toString()+"]":"."+t}).join("")}});var lp=G(YS=>{"use strict";Object.defineProperty(YS,"__esModule",{value:!0});YS.valueFromAST=sp;var r8=sm(Ni()),n8=sm(vu()),i8=sm(jt()),a8=sm(_n()),yc=Jt(),xs=bt();function sm(e){return e&&e.__esModule?e:{default:e}}function sp(e,t,r){if(!!e){if(e.kind===yc.Kind.VARIABLE){var n=e.name.value;if(r==null||r[n]===void 0)return;var i=r[n];return i===null&&(0,xs.isNonNullType)(t)?void 0:i}if((0,xs.isNonNullType)(t))return e.kind===yc.Kind.NULL?void 0:sp(e,t.ofType,r);if(e.kind===yc.Kind.NULL)return null;if((0,xs.isListType)(t)){var o=t.ofType;if(e.kind===yc.Kind.LIST){for(var s=[],l=0,d=e.values;l{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});JS.coerceInputValue=p8;var o8=Nu(Ni()),lm=Nu(jt()),u8=Nu(_n()),s8=Nu(gu()),l8=Nu(Ma()),c8=Nu(Mg()),f8=Nu(mu()),d8=Nu(WS()),So=up(),Cs=Je(),cp=bt();function Nu(e){return e&&e.__esModule?e:{default:e}}function p8(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:h8;return fp(e,t,r)}function h8(e,t,r){var n="Invalid value "+(0,lm.default)(t);throw e.length>0&&(n+=' at "value'.concat((0,d8.default)(e),'"')),r.message=n+": "+r.message,r}function fp(e,t,r,n){if((0,cp.isNonNullType)(t)){if(e!=null)return fp(e,t.ofType,r,n);r((0,So.pathToArray)(n),e,new Cs.GraphQLError('Expected non-nullable type "'.concat((0,lm.default)(t),'" not to be null.')));return}if(e==null)return null;if((0,cp.isListType)(t)){var i=t.ofType,o=(0,c8.default)(e,function(m,w){var x=(0,So.addPath)(n,w,void 0);return fp(m,i,r,x)});return o!=null?o:[fp(e,i,r,n)]}if((0,cp.isInputObjectType)(t)){if(!(0,l8.default)(e)){r((0,So.pathToArray)(n),e,new Cs.GraphQLError('Expected type "'.concat(t.name,'" to be an object.')));return}for(var s={},l=t.getFields(),d=0,h=(0,o8.default)(l);d{"use strict";Object.defineProperty(dp,"__esModule",{value:!0});dp.getVariableValues=T8;dp.getArgumentValues=lR;dp.getDirectiveValues=E8;var v8=cm(nc()),g8=cm(vu()),bc=cm(jt()),m8=cm(WS()),ko=Je(),oR=Jt(),uR=hi(),Tc=bt(),y8=Qa(),sR=lp(),b8=XS();function cm(e){return e&&e.__esModule?e:{default:e}}function T8(e,t,r,n){var i=[],o=n==null?void 0:n.maxErrors;try{var s=_8(e,t,r,function(l){if(o!=null&&i.length>=o)throw new ko.GraphQLError("Too many errors processing variables, error limit reached. Execution aborted.");i.push(l)});if(i.length===0)return{coerced:s}}catch(l){i.push(l)}return{errors:i}}function _8(e,t,r,n){for(var i={},o=function(h){var v=t[h],y=v.variable.name.value,b=(0,y8.typeFromAST)(e,v.type);if(!(0,Tc.isInputType)(b)){var D=(0,uR.print)(v.type);return n(new ko.GraphQLError('Variable "$'.concat(y,'" expected value of type "').concat(D,'" which cannot be used as an input type.'),v.type)),"continue"}if(!cR(r,y)){if(v.defaultValue)i[y]=(0,sR.valueFromAST)(v.defaultValue,b);else if((0,Tc.isNonNullType)(b)){var _=(0,bc.default)(b);n(new ko.GraphQLError('Variable "$'.concat(y,'" of required type "').concat(_,'" was not provided.'),v))}return"continue"}var k=r[y];if(k===null&&(0,Tc.isNonNullType)(b)){var T=(0,bc.default)(b);return n(new ko.GraphQLError('Variable "$'.concat(y,'" of non-null type "').concat(T,'" must not be null.'),v)),"continue"}i[y]=(0,b8.coerceInputValue)(k,b,function(S,m,w){var x='Variable "$'.concat(y,'" got invalid value ')+(0,bc.default)(m);S.length>0&&(x+=' at "'.concat(y).concat((0,m8.default)(S),'"')),n(new ko.GraphQLError(x+"; "+w.message,v,void 0,void 0,void 0,w.originalError))})},s=0;s{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.execute=L8;xi.executeSync=I8;xi.assertValidExecutionArguments=hR;xi.buildExecutionContext=vR;xi.collectFields=vp;xi.buildResolveInfo=bR;xi.getFieldDef=OR;xi.defaultFieldResolver=xi.defaultTypeResolver=void 0;var _c=wo(jt()),S8=wo(rR()),k8=wo(_n()),fR=wo(Hi()),Yi=wo(rg()),ZS=wo(Ma()),O8=wo(Mg()),w8=wo(nR()),N8=wo(iR()),Ls=up(),Ka=Je(),fm=qd(),hp=Jt(),D8=rp(),Ec=vi(),dR=gi(),Oo=bt(),x8=Qa(),C8=um(),dm=pp();function wo(e){return e&&e.__esModule?e:{default:e}}function L8(e,t,r,n,i,o,s,l){return arguments.length===1?$S(e):$S({schema:e,document:t,rootValue:r,contextValue:n,variableValues:i,operationName:o,fieldResolver:s,typeResolver:l})}function I8(e){var t=$S(e);if((0,Yi.default)(t))throw new Error("GraphQL execution failed to complete synchronously.");return t}function $S(e){var t=e.schema,r=e.document,n=e.rootValue,i=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.typeResolver;hR(t,r,o);var h=vR(t,r,n,i,o,s,l,d);if(Array.isArray(h))return{errors:h};var v=A8(h,h.operation,n);return pR(h,v)}function pR(e,t){return(0,Yi.default)(t)?t.then(function(r){return pR(e,r)}):e.errors.length===0?{data:t}:{errors:e.errors,data:t}}function hR(e,t,r){t||(0,fR.default)(0,"Must provide document."),(0,D8.assertValidSchema)(e),r==null||(0,ZS.default)(r)||(0,fR.default)(0,"Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.")}function vR(e,t,r,n,i,o,s,l){for(var d,h,v,y=Object.create(null),b=0,D=t.definitions;b{"use strict";Object.defineProperty(vm,"__esModule",{value:!0});vm.graphql=z8;vm.graphqlSync=W8;var U8=H8(rg()),G8=tc(),Q8=mc(),B8=rp(),K8=mp();function H8(e){return e&&e.__esModule?e:{default:e}}function z8(e,t,r,n,i,o,s,l){var d=arguments;return new Promise(function(h){return h(d.length===1?hm(e):hm({schema:e,source:t,rootValue:r,contextValue:n,variableValues:i,operationName:o,fieldResolver:s,typeResolver:l}))})}function W8(e,t,r,n,i,o,s,l){var d=arguments.length===1?hm(e):hm({schema:e,source:t,rootValue:r,contextValue:n,variableValues:i,operationName:o,fieldResolver:s,typeResolver:l});if((0,U8.default)(d))throw new Error("GraphQL execution failed to complete synchronously.");return d}function hm(e){var t=e.schema,r=e.source,n=e.rootValue,i=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.typeResolver,h=(0,B8.validateSchema)(t);if(h.length>0)return{errors:h};var v;try{v=(0,G8.parse)(r)}catch(b){return{errors:[b]}}var y=(0,Q8.validate)(t,v);return y.length>0?{errors:y}:(0,K8.execute)({schema:t,document:v,rootValue:n,contextValue:i,variableValues:o,operationName:s,fieldResolver:l,typeResolver:d})}});var DR=G(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});Object.defineProperty(Se,"isSchema",{enumerable:!0,get:function(){return rk.isSchema}});Object.defineProperty(Se,"assertSchema",{enumerable:!0,get:function(){return rk.assertSchema}});Object.defineProperty(Se,"GraphQLSchema",{enumerable:!0,get:function(){return rk.GraphQLSchema}});Object.defineProperty(Se,"isType",{enumerable:!0,get:function(){return rt.isType}});Object.defineProperty(Se,"isScalarType",{enumerable:!0,get:function(){return rt.isScalarType}});Object.defineProperty(Se,"isObjectType",{enumerable:!0,get:function(){return rt.isObjectType}});Object.defineProperty(Se,"isInterfaceType",{enumerable:!0,get:function(){return rt.isInterfaceType}});Object.defineProperty(Se,"isUnionType",{enumerable:!0,get:function(){return rt.isUnionType}});Object.defineProperty(Se,"isEnumType",{enumerable:!0,get:function(){return rt.isEnumType}});Object.defineProperty(Se,"isInputObjectType",{enumerable:!0,get:function(){return rt.isInputObjectType}});Object.defineProperty(Se,"isListType",{enumerable:!0,get:function(){return rt.isListType}});Object.defineProperty(Se,"isNonNullType",{enumerable:!0,get:function(){return rt.isNonNullType}});Object.defineProperty(Se,"isInputType",{enumerable:!0,get:function(){return rt.isInputType}});Object.defineProperty(Se,"isOutputType",{enumerable:!0,get:function(){return rt.isOutputType}});Object.defineProperty(Se,"isLeafType",{enumerable:!0,get:function(){return rt.isLeafType}});Object.defineProperty(Se,"isCompositeType",{enumerable:!0,get:function(){return rt.isCompositeType}});Object.defineProperty(Se,"isAbstractType",{enumerable:!0,get:function(){return rt.isAbstractType}});Object.defineProperty(Se,"isWrappingType",{enumerable:!0,get:function(){return rt.isWrappingType}});Object.defineProperty(Se,"isNullableType",{enumerable:!0,get:function(){return rt.isNullableType}});Object.defineProperty(Se,"isNamedType",{enumerable:!0,get:function(){return rt.isNamedType}});Object.defineProperty(Se,"isRequiredArgument",{enumerable:!0,get:function(){return rt.isRequiredArgument}});Object.defineProperty(Se,"isRequiredInputField",{enumerable:!0,get:function(){return rt.isRequiredInputField}});Object.defineProperty(Se,"assertType",{enumerable:!0,get:function(){return rt.assertType}});Object.defineProperty(Se,"assertScalarType",{enumerable:!0,get:function(){return rt.assertScalarType}});Object.defineProperty(Se,"assertObjectType",{enumerable:!0,get:function(){return rt.assertObjectType}});Object.defineProperty(Se,"assertInterfaceType",{enumerable:!0,get:function(){return rt.assertInterfaceType}});Object.defineProperty(Se,"assertUnionType",{enumerable:!0,get:function(){return rt.assertUnionType}});Object.defineProperty(Se,"assertEnumType",{enumerable:!0,get:function(){return rt.assertEnumType}});Object.defineProperty(Se,"assertInputObjectType",{enumerable:!0,get:function(){return rt.assertInputObjectType}});Object.defineProperty(Se,"assertListType",{enumerable:!0,get:function(){return rt.assertListType}});Object.defineProperty(Se,"assertNonNullType",{enumerable:!0,get:function(){return rt.assertNonNullType}});Object.defineProperty(Se,"assertInputType",{enumerable:!0,get:function(){return rt.assertInputType}});Object.defineProperty(Se,"assertOutputType",{enumerable:!0,get:function(){return rt.assertOutputType}});Object.defineProperty(Se,"assertLeafType",{enumerable:!0,get:function(){return rt.assertLeafType}});Object.defineProperty(Se,"assertCompositeType",{enumerable:!0,get:function(){return rt.assertCompositeType}});Object.defineProperty(Se,"assertAbstractType",{enumerable:!0,get:function(){return rt.assertAbstractType}});Object.defineProperty(Se,"assertWrappingType",{enumerable:!0,get:function(){return rt.assertWrappingType}});Object.defineProperty(Se,"assertNullableType",{enumerable:!0,get:function(){return rt.assertNullableType}});Object.defineProperty(Se,"assertNamedType",{enumerable:!0,get:function(){return rt.assertNamedType}});Object.defineProperty(Se,"getNullableType",{enumerable:!0,get:function(){return rt.getNullableType}});Object.defineProperty(Se,"getNamedType",{enumerable:!0,get:function(){return rt.getNamedType}});Object.defineProperty(Se,"GraphQLScalarType",{enumerable:!0,get:function(){return rt.GraphQLScalarType}});Object.defineProperty(Se,"GraphQLObjectType",{enumerable:!0,get:function(){return rt.GraphQLObjectType}});Object.defineProperty(Se,"GraphQLInterfaceType",{enumerable:!0,get:function(){return rt.GraphQLInterfaceType}});Object.defineProperty(Se,"GraphQLUnionType",{enumerable:!0,get:function(){return rt.GraphQLUnionType}});Object.defineProperty(Se,"GraphQLEnumType",{enumerable:!0,get:function(){return rt.GraphQLEnumType}});Object.defineProperty(Se,"GraphQLInputObjectType",{enumerable:!0,get:function(){return rt.GraphQLInputObjectType}});Object.defineProperty(Se,"GraphQLList",{enumerable:!0,get:function(){return rt.GraphQLList}});Object.defineProperty(Se,"GraphQLNonNull",{enumerable:!0,get:function(){return rt.GraphQLNonNull}});Object.defineProperty(Se,"isDirective",{enumerable:!0,get:function(){return Ha.isDirective}});Object.defineProperty(Se,"assertDirective",{enumerable:!0,get:function(){return Ha.assertDirective}});Object.defineProperty(Se,"GraphQLDirective",{enumerable:!0,get:function(){return Ha.GraphQLDirective}});Object.defineProperty(Se,"isSpecifiedDirective",{enumerable:!0,get:function(){return Ha.isSpecifiedDirective}});Object.defineProperty(Se,"specifiedDirectives",{enumerable:!0,get:function(){return Ha.specifiedDirectives}});Object.defineProperty(Se,"GraphQLIncludeDirective",{enumerable:!0,get:function(){return Ha.GraphQLIncludeDirective}});Object.defineProperty(Se,"GraphQLSkipDirective",{enumerable:!0,get:function(){return Ha.GraphQLSkipDirective}});Object.defineProperty(Se,"GraphQLDeprecatedDirective",{enumerable:!0,get:function(){return Ha.GraphQLDeprecatedDirective}});Object.defineProperty(Se,"GraphQLSpecifiedByDirective",{enumerable:!0,get:function(){return Ha.GraphQLSpecifiedByDirective}});Object.defineProperty(Se,"DEFAULT_DEPRECATION_REASON",{enumerable:!0,get:function(){return Ha.DEFAULT_DEPRECATION_REASON}});Object.defineProperty(Se,"isSpecifiedScalarType",{enumerable:!0,get:function(){return Is.isSpecifiedScalarType}});Object.defineProperty(Se,"specifiedScalarTypes",{enumerable:!0,get:function(){return Is.specifiedScalarTypes}});Object.defineProperty(Se,"GraphQLInt",{enumerable:!0,get:function(){return Is.GraphQLInt}});Object.defineProperty(Se,"GraphQLFloat",{enumerable:!0,get:function(){return Is.GraphQLFloat}});Object.defineProperty(Se,"GraphQLString",{enumerable:!0,get:function(){return Is.GraphQLString}});Object.defineProperty(Se,"GraphQLBoolean",{enumerable:!0,get:function(){return Is.GraphQLBoolean}});Object.defineProperty(Se,"GraphQLID",{enumerable:!0,get:function(){return Is.GraphQLID}});Object.defineProperty(Se,"isIntrospectionType",{enumerable:!0,get:function(){return yi.isIntrospectionType}});Object.defineProperty(Se,"introspectionTypes",{enumerable:!0,get:function(){return yi.introspectionTypes}});Object.defineProperty(Se,"__Schema",{enumerable:!0,get:function(){return yi.__Schema}});Object.defineProperty(Se,"__Directive",{enumerable:!0,get:function(){return yi.__Directive}});Object.defineProperty(Se,"__DirectiveLocation",{enumerable:!0,get:function(){return yi.__DirectiveLocation}});Object.defineProperty(Se,"__Type",{enumerable:!0,get:function(){return yi.__Type}});Object.defineProperty(Se,"__Field",{enumerable:!0,get:function(){return yi.__Field}});Object.defineProperty(Se,"__InputValue",{enumerable:!0,get:function(){return yi.__InputValue}});Object.defineProperty(Se,"__EnumValue",{enumerable:!0,get:function(){return yi.__EnumValue}});Object.defineProperty(Se,"__TypeKind",{enumerable:!0,get:function(){return yi.__TypeKind}});Object.defineProperty(Se,"TypeKind",{enumerable:!0,get:function(){return yi.TypeKind}});Object.defineProperty(Se,"SchemaMetaFieldDef",{enumerable:!0,get:function(){return yi.SchemaMetaFieldDef}});Object.defineProperty(Se,"TypeMetaFieldDef",{enumerable:!0,get:function(){return yi.TypeMetaFieldDef}});Object.defineProperty(Se,"TypeNameMetaFieldDef",{enumerable:!0,get:function(){return yi.TypeNameMetaFieldDef}});Object.defineProperty(Se,"validateSchema",{enumerable:!0,get:function(){return NR.validateSchema}});Object.defineProperty(Se,"assertValidSchema",{enumerable:!0,get:function(){return NR.assertValidSchema}});var rk=ks(),rt=bt(),Ha=gi(),Is=Ga(),yi=vi(),NR=rp()});var LR=G(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Object.defineProperty(Qt,"Source",{enumerable:!0,get:function(){return Y8.Source}});Object.defineProperty(Qt,"getLocation",{enumerable:!0,get:function(){return J8.getLocation}});Object.defineProperty(Qt,"printLocation",{enumerable:!0,get:function(){return xR.printLocation}});Object.defineProperty(Qt,"printSourceLocation",{enumerable:!0,get:function(){return xR.printSourceLocation}});Object.defineProperty(Qt,"Kind",{enumerable:!0,get:function(){return X8.Kind}});Object.defineProperty(Qt,"TokenKind",{enumerable:!0,get:function(){return Z8.TokenKind}});Object.defineProperty(Qt,"Lexer",{enumerable:!0,get:function(){return $8.Lexer}});Object.defineProperty(Qt,"parse",{enumerable:!0,get:function(){return nk.parse}});Object.defineProperty(Qt,"parseValue",{enumerable:!0,get:function(){return nk.parseValue}});Object.defineProperty(Qt,"parseType",{enumerable:!0,get:function(){return nk.parseType}});Object.defineProperty(Qt,"print",{enumerable:!0,get:function(){return eY.print}});Object.defineProperty(Qt,"visit",{enumerable:!0,get:function(){return gm.visit}});Object.defineProperty(Qt,"visitInParallel",{enumerable:!0,get:function(){return gm.visitInParallel}});Object.defineProperty(Qt,"getVisitFn",{enumerable:!0,get:function(){return gm.getVisitFn}});Object.defineProperty(Qt,"BREAK",{enumerable:!0,get:function(){return gm.BREAK}});Object.defineProperty(Qt,"Location",{enumerable:!0,get:function(){return CR.Location}});Object.defineProperty(Qt,"Token",{enumerable:!0,get:function(){return CR.Token}});Object.defineProperty(Qt,"isDefinitionNode",{enumerable:!0,get:function(){return No.isDefinitionNode}});Object.defineProperty(Qt,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return No.isExecutableDefinitionNode}});Object.defineProperty(Qt,"isSelectionNode",{enumerable:!0,get:function(){return No.isSelectionNode}});Object.defineProperty(Qt,"isValueNode",{enumerable:!0,get:function(){return No.isValueNode}});Object.defineProperty(Qt,"isTypeNode",{enumerable:!0,get:function(){return No.isTypeNode}});Object.defineProperty(Qt,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return No.isTypeSystemDefinitionNode}});Object.defineProperty(Qt,"isTypeDefinitionNode",{enumerable:!0,get:function(){return No.isTypeDefinitionNode}});Object.defineProperty(Qt,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return No.isTypeSystemExtensionNode}});Object.defineProperty(Qt,"isTypeExtensionNode",{enumerable:!0,get:function(){return No.isTypeExtensionNode}});Object.defineProperty(Qt,"DirectiveLocation",{enumerable:!0,get:function(){return tY.DirectiveLocation}});var Y8=mg(),J8=ig(),xR=l_(),X8=Jt(),Z8=Zl(),$8=Tg(),nk=tc(),eY=hi(),gm=hu(),CR=Xl(),No=ws(),tY=$l()});var IR=G(Du=>{"use strict";Object.defineProperty(Du,"__esModule",{value:!0});Object.defineProperty(Du,"responsePathAsArray",{enumerable:!0,get:function(){return rY.pathToArray}});Object.defineProperty(Du,"execute",{enumerable:!0,get:function(){return mm.execute}});Object.defineProperty(Du,"executeSync",{enumerable:!0,get:function(){return mm.executeSync}});Object.defineProperty(Du,"defaultFieldResolver",{enumerable:!0,get:function(){return mm.defaultFieldResolver}});Object.defineProperty(Du,"defaultTypeResolver",{enumerable:!0,get:function(){return mm.defaultTypeResolver}});Object.defineProperty(Du,"getDirectiveValues",{enumerable:!0,get:function(){return nY.getDirectiveValues}});var rY=up(),mm=mp(),nY=pp()});var AR=G(ik=>{"use strict";Object.defineProperty(ik,"__esModule",{value:!0});ik.default=aY;var iY=qa();function aY(e){return typeof(e==null?void 0:e[iY.SYMBOL_ASYNC_ITERATOR])=="function"}});var FR=G(ak=>{"use strict";Object.defineProperty(ak,"__esModule",{value:!0});ak.default=uY;var RR=qa();function oY(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function uY(e,t,r){var n=e[RR.SYMBOL_ASYNC_ITERATOR],i=n.call(e),o,s;typeof i.return=="function"&&(o=i.return,s=function(y){var b=function(){return Promise.reject(y)};return o.call(i).then(b,b)});function l(v){return v.done?v:jR(v.value,t).then(PR,s)}var d;if(r){var h=r;d=function(y){return jR(y,h).then(PR,s)}}return oY({next:function(){return i.next().then(l,d)},return:function(){return o?o.call(i).then(l,d):Promise.resolve({value:void 0,done:!0})},throw:function(y){return typeof i.throw=="function"?i.throw(y).then(l,d):Promise.reject(y).catch(s)}},RR.SYMBOL_ASYNC_ITERATOR,function(){return this})}function jR(e,t){return new Promise(function(r){return r(t(e))})}function PR(e){return{value:e,done:!1}}});var BR=G(ym=>{"use strict";Object.defineProperty(ym,"__esModule",{value:!0});ym.subscribe=dY;ym.createSourceEventStream=QR;var sY=uk(jt()),MR=uk(AR()),ok=up(),qR=Je(),VR=qd(),lY=pp(),Sc=mp(),cY=um(),fY=uk(FR());function uk(e){return e&&e.__esModule?e:{default:e}}function dY(e,t,r,n,i,o,s,l){return arguments.length===1?GR(e):GR({schema:e,document:t,rootValue:r,contextValue:n,variableValues:i,operationName:o,fieldResolver:s,subscribeFieldResolver:l})}function UR(e){if(e instanceof qR.GraphQLError)return{errors:[e]};throw e}function GR(e){var t=e.schema,r=e.document,n=e.rootValue,i=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.subscribeFieldResolver,h=QR(t,r,n,i,o,s,d),v=function(b){return(0,Sc.execute)({schema:t,document:r,rootValue:b,contextValue:i,variableValues:o,operationName:s,fieldResolver:l})};return h.then(function(y){return(0,MR.default)(y)?(0,fY.default)(y,v,UR):y})}function QR(e,t,r,n,i,o,s){return(0,Sc.assertValidExecutionArguments)(e,t,i),new Promise(function(l){var d=(0,Sc.buildExecutionContext)(e,t,r,n,i,o,s);l(Array.isArray(d)?{errors:d}:pY(d))}).catch(UR)}function pY(e){var t=e.schema,r=e.operation,n=e.variableValues,i=e.rootValue,o=(0,cY.getOperationRootType)(t,r),s=(0,Sc.collectFields)(e,o,r.selectionSet,Object.create(null),Object.create(null)),l=Object.keys(s),d=l[0],h=s[d],v=h[0],y=v.name.value,b=(0,Sc.getFieldDef)(t,o,y);if(!b)throw new qR.GraphQLError('The subscription field "'.concat(y,'" is not defined.'),h);var D=(0,ok.addPath)(void 0,d,o.name),_=(0,Sc.buildResolveInfo)(e,b,h,o,D);return new Promise(function(k){var T,S=(0,lY.getArgumentValues)(b,h[0],n),m=e.contextValue,w=(T=b.subscribe)!==null&&T!==void 0?T:e.fieldResolver;k(w(i,S,m,_))}).then(function(k){if(k instanceof Error)throw(0,VR.locatedError)(k,h,(0,ok.pathToArray)(D));if(!(0,MR.default)(k))throw new Error("Subscription field must return Async Iterable. "+"Received: ".concat((0,sY.default)(k),"."));return k},function(k){throw(0,VR.locatedError)(k,h,(0,ok.pathToArray)(D))})}});var HR=G(bm=>{"use strict";Object.defineProperty(bm,"__esModule",{value:!0});Object.defineProperty(bm,"subscribe",{enumerable:!0,get:function(){return KR.subscribe}});Object.defineProperty(bm,"createSourceEventStream",{enumerable:!0,get:function(){return KR.createSourceEventStream}});var KR=BR()});var fk=G(ck=>{"use strict";Object.defineProperty(ck,"__esModule",{value:!0});ck.NoDeprecatedCustomRule=vY;var sk=hY(_n()),yp=Je(),lk=bt();function hY(e){return e&&e.__esModule?e:{default:e}}function vY(e){return{Field:function(r){var n=e.getFieldDef(),i=n==null?void 0:n.deprecationReason;if(n&&i!=null){var o=e.getParentType();o!=null||(0,sk.default)(0),e.reportError(new yp.GraphQLError("The field ".concat(o.name,".").concat(n.name," is deprecated. ").concat(i),r))}},Argument:function(r){var n=e.getArgument(),i=n==null?void 0:n.deprecationReason;if(n&&i!=null){var o=e.getDirective();if(o!=null)e.reportError(new yp.GraphQLError('Directive "@'.concat(o.name,'" argument "').concat(n.name,'" is deprecated. ').concat(i),r));else{var s=e.getParentType(),l=e.getFieldDef();s!=null&&l!=null||(0,sk.default)(0),e.reportError(new yp.GraphQLError('Field "'.concat(s.name,".").concat(l.name,'" argument "').concat(n.name,'" is deprecated. ').concat(i),r))}}},ObjectField:function(r){var n=(0,lk.getNamedType)(e.getParentInputType());if((0,lk.isInputObjectType)(n)){var i=n.getFields()[r.name.value],o=i==null?void 0:i.deprecationReason;o!=null&&e.reportError(new yp.GraphQLError("The input field ".concat(n.name,".").concat(i.name," is deprecated. ").concat(o),r))}},EnumValue:function(r){var n=e.getEnumValue(),i=n==null?void 0:n.deprecationReason;if(n&&i!=null){var o=(0,lk.getNamedType)(e.getInputType());o!=null||(0,sk.default)(0),e.reportError(new yp.GraphQLError('The enum value "'.concat(o.name,".").concat(n.name,'" is deprecated. ').concat(i),r))}}}}});var zR=G(dk=>{"use strict";Object.defineProperty(dk,"__esModule",{value:!0});dk.NoSchemaIntrospectionCustomRule=bY;var gY=Je(),mY=bt(),yY=vi();function bY(e){return{Field:function(r){var n=(0,mY.getNamedType)(e.getType());n&&(0,yY.isIntrospectionType)(n)&&e.reportError(new gY.GraphQLError('GraphQL introspection has been disabled, but the requested query contained the field "'.concat(r.name.value,'".'),r))}}}});var WR=G(ft=>{"use strict";Object.defineProperty(ft,"__esModule",{value:!0});Object.defineProperty(ft,"validate",{enumerable:!0,get:function(){return TY.validate}});Object.defineProperty(ft,"ValidationContext",{enumerable:!0,get:function(){return _Y.ValidationContext}});Object.defineProperty(ft,"specifiedRules",{enumerable:!0,get:function(){return EY.specifiedRules}});Object.defineProperty(ft,"ExecutableDefinitionsRule",{enumerable:!0,get:function(){return SY.ExecutableDefinitionsRule}});Object.defineProperty(ft,"FieldsOnCorrectTypeRule",{enumerable:!0,get:function(){return kY.FieldsOnCorrectTypeRule}});Object.defineProperty(ft,"FragmentsOnCompositeTypesRule",{enumerable:!0,get:function(){return OY.FragmentsOnCompositeTypesRule}});Object.defineProperty(ft,"KnownArgumentNamesRule",{enumerable:!0,get:function(){return wY.KnownArgumentNamesRule}});Object.defineProperty(ft,"KnownDirectivesRule",{enumerable:!0,get:function(){return NY.KnownDirectivesRule}});Object.defineProperty(ft,"KnownFragmentNamesRule",{enumerable:!0,get:function(){return DY.KnownFragmentNamesRule}});Object.defineProperty(ft,"KnownTypeNamesRule",{enumerable:!0,get:function(){return xY.KnownTypeNamesRule}});Object.defineProperty(ft,"LoneAnonymousOperationRule",{enumerable:!0,get:function(){return CY.LoneAnonymousOperationRule}});Object.defineProperty(ft,"NoFragmentCyclesRule",{enumerable:!0,get:function(){return LY.NoFragmentCyclesRule}});Object.defineProperty(ft,"NoUndefinedVariablesRule",{enumerable:!0,get:function(){return IY.NoUndefinedVariablesRule}});Object.defineProperty(ft,"NoUnusedFragmentsRule",{enumerable:!0,get:function(){return AY.NoUnusedFragmentsRule}});Object.defineProperty(ft,"NoUnusedVariablesRule",{enumerable:!0,get:function(){return RY.NoUnusedVariablesRule}});Object.defineProperty(ft,"OverlappingFieldsCanBeMergedRule",{enumerable:!0,get:function(){return jY.OverlappingFieldsCanBeMergedRule}});Object.defineProperty(ft,"PossibleFragmentSpreadsRule",{enumerable:!0,get:function(){return PY.PossibleFragmentSpreadsRule}});Object.defineProperty(ft,"ProvidedRequiredArgumentsRule",{enumerable:!0,get:function(){return FY.ProvidedRequiredArgumentsRule}});Object.defineProperty(ft,"ScalarLeafsRule",{enumerable:!0,get:function(){return MY.ScalarLeafsRule}});Object.defineProperty(ft,"SingleFieldSubscriptionsRule",{enumerable:!0,get:function(){return qY.SingleFieldSubscriptionsRule}});Object.defineProperty(ft,"UniqueArgumentNamesRule",{enumerable:!0,get:function(){return VY.UniqueArgumentNamesRule}});Object.defineProperty(ft,"UniqueDirectivesPerLocationRule",{enumerable:!0,get:function(){return UY.UniqueDirectivesPerLocationRule}});Object.defineProperty(ft,"UniqueFragmentNamesRule",{enumerable:!0,get:function(){return GY.UniqueFragmentNamesRule}});Object.defineProperty(ft,"UniqueInputFieldNamesRule",{enumerable:!0,get:function(){return QY.UniqueInputFieldNamesRule}});Object.defineProperty(ft,"UniqueOperationNamesRule",{enumerable:!0,get:function(){return BY.UniqueOperationNamesRule}});Object.defineProperty(ft,"UniqueVariableNamesRule",{enumerable:!0,get:function(){return KY.UniqueVariableNamesRule}});Object.defineProperty(ft,"ValuesOfCorrectTypeRule",{enumerable:!0,get:function(){return HY.ValuesOfCorrectTypeRule}});Object.defineProperty(ft,"VariablesAreInputTypesRule",{enumerable:!0,get:function(){return zY.VariablesAreInputTypesRule}});Object.defineProperty(ft,"VariablesInAllowedPositionRule",{enumerable:!0,get:function(){return WY.VariablesInAllowedPositionRule}});Object.defineProperty(ft,"LoneSchemaDefinitionRule",{enumerable:!0,get:function(){return YY.LoneSchemaDefinitionRule}});Object.defineProperty(ft,"UniqueOperationTypesRule",{enumerable:!0,get:function(){return JY.UniqueOperationTypesRule}});Object.defineProperty(ft,"UniqueTypeNamesRule",{enumerable:!0,get:function(){return XY.UniqueTypeNamesRule}});Object.defineProperty(ft,"UniqueEnumValueNamesRule",{enumerable:!0,get:function(){return ZY.UniqueEnumValueNamesRule}});Object.defineProperty(ft,"UniqueFieldDefinitionNamesRule",{enumerable:!0,get:function(){return $Y.UniqueFieldDefinitionNamesRule}});Object.defineProperty(ft,"UniqueDirectiveNamesRule",{enumerable:!0,get:function(){return e7.UniqueDirectiveNamesRule}});Object.defineProperty(ft,"PossibleTypeExtensionsRule",{enumerable:!0,get:function(){return t7.PossibleTypeExtensionsRule}});Object.defineProperty(ft,"NoDeprecatedCustomRule",{enumerable:!0,get:function(){return r7.NoDeprecatedCustomRule}});Object.defineProperty(ft,"NoSchemaIntrospectionCustomRule",{enumerable:!0,get:function(){return n7.NoSchemaIntrospectionCustomRule}});var TY=mc(),_Y=US(),EY=qS(),SY=TE(),kY=FE(),OY=LE(),wY=oS(),NY=rS(),DY=UE(),xY=xE(),CY=kE(),LY=WE(),IY=ZE(),AY=QE(),RY=eS(),jY=_S(),PY=HE(),FY=dS(),MY=jE(),qY=wE(),VY=sS(),UY=aS(),GY=qE(),QY=SS(),BY=EE(),KY=JE(),HY=cS(),zY=AE(),WY=hS(),YY=OS(),JY=NS(),XY=xS(),ZY=LS(),$Y=RS(),e7=PS(),t7=MS(),r7=fk(),n7=zR()});var YR=G(pk=>{"use strict";Object.defineProperty(pk,"__esModule",{value:!0});pk.formatError=o7;var i7=a7(Hi());function a7(e){return e&&e.__esModule?e:{default:e}}function o7(e){var t;e||(0,i7.default)(0,"Received null or undefined error.");var r=(t=e.message)!==null&&t!==void 0?t:"An unknown error occurred.",n=e.locations,i=e.path,o=e.extensions;return o?{message:r,locations:n,path:i,extensions:o}:{message:r,locations:n,path:i}}});var XR=G(As=>{"use strict";Object.defineProperty(As,"__esModule",{value:!0});Object.defineProperty(As,"GraphQLError",{enumerable:!0,get:function(){return JR.GraphQLError}});Object.defineProperty(As,"printError",{enumerable:!0,get:function(){return JR.printError}});Object.defineProperty(As,"syntaxError",{enumerable:!0,get:function(){return u7.syntaxError}});Object.defineProperty(As,"locatedError",{enumerable:!0,get:function(){return s7.locatedError}});Object.defineProperty(As,"formatError",{enumerable:!0,get:function(){return l7.formatError}});var JR=Je(),u7=lg(),s7=qd(),l7=YR()});var vk=G(hk=>{"use strict";Object.defineProperty(hk,"__esModule",{value:!0});hk.getIntrospectionQuery=d7;function ZR(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function c7(e){for(var t=1;t{"use strict";Object.defineProperty(gk,"__esModule",{value:!0});gk.getOperationAST=h7;var p7=Jt();function h7(e,t){for(var r=null,n=0,i=e.definitions;n{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});yk.introspectionFromSchema=E7;var v7=b7(_n()),g7=tc(),m7=mp(),y7=vk();function b7(e){return e&&e.__esModule?e:{default:e}}function $R(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function T7(e){for(var t=1;t{"use strict";Object.defineProperty(bk,"__esModule",{value:!0});bk.buildClientSchema=C7;var S7=bp(Ni()),Ci=bp(jt()),k7=bp(Hi()),Tm=bp(Vd()),tj=bp(Ma()),O7=tc(),w7=ks(),N7=gi(),D7=Ga(),za=vi(),Li=bt(),x7=lp();function bp(e){return e&&e.__esModule?e:{default:e}}function C7(e,t){(0,tj.default)(e)&&(0,tj.default)(e.__schema)||(0,k7.default)(0,'Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: '.concat((0,Ci.default)(e),"."));for(var r=e.__schema,n=(0,Tm.default)(r.types,function(Q){return Q.name},function(Q){return k(Q)}),i=0,o=[].concat(D7.specifiedScalarTypes,za.introspectionTypes);i{"use strict";Object.defineProperty(_p,"__esModule",{value:!0});_p.extendSchema=M7;_p.extendSchemaImpl=dj;_p.getDescription=Rs;var L7=kc(Ni()),I7=kc(vu()),nj=kc(jt()),Tp=kc(w_()),ij=kc(_n()),A7=kc(Hi()),Ji=Jt(),R7=Zl(),j7=ec(),aj=ws(),P7=mc(),oj=pp(),uj=ks(),sj=Ga(),lj=vi(),_m=gi(),pr=bt(),cj=lp();function kc(e){return e&&e.__esModule?e:{default:e}}function fj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function xt(e){for(var t=1;t0?r.reverse().join(` -`):void 0}}});var mj=G(Sm=>{"use strict";Object.defineProperty(Sm,"__esModule",{value:!0});Sm.buildASTSchema=gj;Sm.buildSchema=z7;var V7=H7(Hi()),U7=Jt(),G7=tc(),Q7=mc(),B7=ks(),vj=gi(),K7=Tk();function H7(e){return e&&e.__esModule?e:{default:e}}function gj(e,t){e!=null&&e.kind===U7.Kind.DOCUMENT||(0,V7.default)(0,"Must provide valid Document AST."),(t==null?void 0:t.assumeValid)!==!0&&(t==null?void 0:t.assumeValidSDL)!==!0&&(0,Q7.assertValidSDL)(e);var r={description:void 0,types:[],directives:[],extensions:void 0,extensionASTNodes:[],assumeValid:!1},n=(0,K7.extendSchemaImpl)(r,e,t);if(n.astNode==null)for(var i=0,o=n.types;i{"use strict";Object.defineProperty(Sk,"__esModule",{value:!0});Sk.lexicographicSortSchema=nJ;var W7=Ep(Ni()),Y7=Ep(jt()),J7=Ep(_n()),X7=Ep(Vd()),Z7=Ep(Ud()),$7=ks(),eJ=gi(),tJ=vi(),ri=bt();function Ep(e){return e&&e.__esModule?e:{default:e}}function yj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Mr(e){for(var t=1;t{"use strict";Object.defineProperty(Sp,"__esModule",{value:!0});Sp.printSchema=oJ;Sp.printIntrospectionSchema=uJ;Sp.printType=Sj;var kk=xk(Ni()),iJ=xk(jt()),Tj=xk(_n()),Ok=hi(),aJ=ec(),_j=vi(),wk=Ga(),Nk=gi(),Oc=bt(),Dk=Zd();function xk(e){return e&&e.__esModule?e:{default:e}}function oJ(e,t){return Ej(e,function(r){return!(0,Nk.isSpecifiedDirective)(r)},sJ,t)}function uJ(e,t){return Ej(e,Nk.isSpecifiedDirective,_j.isIntrospectionType,t)}function sJ(e){return!(0,wk.isSpecifiedScalarType)(e)&&!(0,_j.isIntrospectionType)(e)}function Ej(e,t,r,n){var i=e.getDirectives().filter(t),o=(0,kk.default)(e.getTypeMap()).filter(r);return[lJ(e)].concat(i.map(function(s){return mJ(s,n)}),o.map(function(s){return Sj(s,n)})).filter(Boolean).join(` - -`)+` -`}function lJ(e){if(!(e.description==null&&cJ(e))){var t=[],r=e.getQueryType();r&&t.push(" query: ".concat(r.name));var n=e.getMutationType();n&&t.push(" mutation: ".concat(n.name));var i=e.getSubscriptionType();return i&&t.push(" subscription: ".concat(i.name)),Xi({},e)+`schema { -`.concat(t.join(` -`),` -}`)}}function cJ(e){var t=e.getQueryType();if(t&&t.name!=="Query")return!1;var r=e.getMutationType();if(r&&r.name!=="Mutation")return!1;var n=e.getSubscriptionType();return!(n&&n.name!=="Subscription")}function Sj(e,t){if((0,Oc.isScalarType)(e))return fJ(e,t);if((0,Oc.isObjectType)(e))return dJ(e,t);if((0,Oc.isInterfaceType)(e))return pJ(e,t);if((0,Oc.isUnionType)(e))return hJ(e,t);if((0,Oc.isEnumType)(e))return vJ(e,t);if((0,Oc.isInputObjectType)(e))return gJ(e,t);(0,Tj.default)(0,"Unexpected type: "+(0,iJ.default)(e))}function fJ(e,t){return Xi(t,e)+"scalar ".concat(e.name)+yJ(e)}function kj(e){var t=e.getInterfaces();return t.length?" implements "+t.map(function(r){return r.name}).join(" & "):""}function dJ(e,t){return Xi(t,e)+"type ".concat(e.name)+kj(e)+Oj(t,e)}function pJ(e,t){return Xi(t,e)+"interface ".concat(e.name)+kj(e)+Oj(t,e)}function hJ(e,t){var r=e.getTypes(),n=r.length?" = "+r.join(" | "):"";return Xi(t,e)+"union "+e.name+n}function vJ(e,t){var r=e.getValues().map(function(n,i){return Xi(t,n," ",!i)+" "+n.name+Ik(n.deprecationReason)});return Xi(t,e)+"enum ".concat(e.name)+Ck(r)}function gJ(e,t){var r=(0,kk.default)(e.getFields()).map(function(n,i){return Xi(t,n," ",!i)+" "+Lk(n)});return Xi(t,e)+"input ".concat(e.name)+Ck(r)}function Oj(e,t){var r=(0,kk.default)(t.getFields()).map(function(n,i){return Xi(e,n," ",!i)+" "+n.name+wj(e,n.args," ")+": "+String(n.type)+Ik(n.deprecationReason)});return Ck(r)}function Ck(e){return e.length!==0?` { -`+e.join(` -`)+` -}`:""}function wj(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";return t.length===0?"":t.every(function(n){return!n.description})?"("+t.map(Lk).join(", ")+")":`( -`+t.map(function(n,i){return Xi(e,n," "+r,!i)+" "+r+Lk(n)}).join(` -`)+` -`+r+")"}function Lk(e){var t=(0,Dk.astFromValue)(e.defaultValue,e.type),r=e.name+": "+String(e.type);return t&&(r+=" = ".concat((0,Ok.print)(t))),r+Ik(e.deprecationReason)}function mJ(e,t){return Xi(t,e)+"directive @"+e.name+wj(t,e.args)+(e.isRepeatable?" repeatable":"")+" on "+e.locations.join(" | ")}function Ik(e){if(e==null)return"";var t=(0,Dk.astFromValue)(e,wk.GraphQLString);return t&&e!==Nk.DEFAULT_DEPRECATION_REASON?" @deprecated(reason: "+(0,Ok.print)(t)+")":" @deprecated"}function yJ(e){if(e.specifiedByUrl==null)return"";var t=e.specifiedByUrl,r=(0,Dk.astFromValue)(t,wk.GraphQLString);return r||(0,Tj.default)(0,"Unexpected null value returned from `astFromValue` for specifiedByUrl")," @specifiedBy(url: "+(0,Ok.print)(r)+")"}function Xi(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"",n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=t.description;if(i==null)return"";if((e==null?void 0:e.commentDescriptions)===!0)return bJ(i,r,n);var o=i.length>70,s=(0,aJ.printBlockString)(i,"",o),l=r&&!n?` -`+r:r;return l+s.replace(/\n/g,` -`+r)+` -`}function bJ(e,t,r){var n=t&&!r?` -`:"",i=e.split(` -`).map(function(o){return t+(o!==""?"# "+o:"#")}).join(` -`);return n+i+` -`}});var Dj=G(Ak=>{"use strict";Object.defineProperty(Ak,"__esModule",{value:!0});Ak.concatAST=TJ;function TJ(e){for(var t=[],r=0;r{"use strict";Object.defineProperty(Rk,"__esModule",{value:!0});Rk.separateOperations=EJ;var Om=Jt(),_J=hu();function EJ(e){for(var t=[],r=Object.create(null),n=0,i=e.definitions;n{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});Pk.stripIgnoredCharacters=SJ;var Ij=mg(),jk=Zl(),Aj=Tg(),Rj=ec();function SJ(e){for(var t=(0,Ij.isSource)(e)?e:new Ij.Source(e),r=t.body,n=new Aj.Lexer(t),i="",o=!1;n.advance().kind!==jk.TokenKind.EOF;){var s=n.token,l=s.kind,d=!(0,Aj.isPunctuatorTokenKind)(s.kind);o&&(d||s.kind===jk.TokenKind.SPREAD)&&(i+=" ");var h=r.slice(s.start,s.end);l===jk.TokenKind.BLOCK_STRING?i+=kJ(h):i+=h,o=d}return i}function kJ(e){var t=e.slice(3,-3),r=(0,Rj.dedentBlockStringValue)(t);(0,Rj.getBlockStringIndentation)(r)>0&&(r=` -`+r);var n=r[r.length-1],i=n==='"'&&r.slice(-4)!=='\\"""';return(i||n==="\\")&&(r+=` -`),'"""'+r+'"""'}});var Kj=G(xu=>{"use strict";Object.defineProperty(xu,"__esModule",{value:!0});xu.findBreakingChanges=IJ;xu.findDangerousChanges=AJ;xu.DangerousChangeType=xu.BreakingChangeType=void 0;var wc=kp(Ni()),Pj=kp(vu()),OJ=kp(jt()),Fj=kp(_n()),wJ=kp(Ud()),NJ=hi(),DJ=hu(),xJ=Ga(),Ct=bt(),CJ=Zd();function kp(e){return e&&e.__esModule?e:{default:e}}function Mj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function qj(e){for(var t=1;t{"use strict";Object.defineProperty(Fk,"__esModule",{value:!0});Fk.findDeprecatedUsages=GJ;var VJ=mc(),UJ=fk();function GJ(e,t){return(0,VJ.validate)(e,t,[UJ.NoDeprecatedCustomRule])}});var Xj=G(yt=>{"use strict";Object.defineProperty(yt,"__esModule",{value:!0});Object.defineProperty(yt,"getIntrospectionQuery",{enumerable:!0,get:function(){return QJ.getIntrospectionQuery}});Object.defineProperty(yt,"getOperationAST",{enumerable:!0,get:function(){return BJ.getOperationAST}});Object.defineProperty(yt,"getOperationRootType",{enumerable:!0,get:function(){return KJ.getOperationRootType}});Object.defineProperty(yt,"introspectionFromSchema",{enumerable:!0,get:function(){return HJ.introspectionFromSchema}});Object.defineProperty(yt,"buildClientSchema",{enumerable:!0,get:function(){return zJ.buildClientSchema}});Object.defineProperty(yt,"buildASTSchema",{enumerable:!0,get:function(){return zj.buildASTSchema}});Object.defineProperty(yt,"buildSchema",{enumerable:!0,get:function(){return zj.buildSchema}});Object.defineProperty(yt,"extendSchema",{enumerable:!0,get:function(){return Wj.extendSchema}});Object.defineProperty(yt,"getDescription",{enumerable:!0,get:function(){return Wj.getDescription}});Object.defineProperty(yt,"lexicographicSortSchema",{enumerable:!0,get:function(){return WJ.lexicographicSortSchema}});Object.defineProperty(yt,"printSchema",{enumerable:!0,get:function(){return Mk.printSchema}});Object.defineProperty(yt,"printType",{enumerable:!0,get:function(){return Mk.printType}});Object.defineProperty(yt,"printIntrospectionSchema",{enumerable:!0,get:function(){return Mk.printIntrospectionSchema}});Object.defineProperty(yt,"typeFromAST",{enumerable:!0,get:function(){return YJ.typeFromAST}});Object.defineProperty(yt,"valueFromAST",{enumerable:!0,get:function(){return JJ.valueFromAST}});Object.defineProperty(yt,"valueFromASTUntyped",{enumerable:!0,get:function(){return XJ.valueFromASTUntyped}});Object.defineProperty(yt,"astFromValue",{enumerable:!0,get:function(){return ZJ.astFromValue}});Object.defineProperty(yt,"TypeInfo",{enumerable:!0,get:function(){return Yj.TypeInfo}});Object.defineProperty(yt,"visitWithTypeInfo",{enumerable:!0,get:function(){return Yj.visitWithTypeInfo}});Object.defineProperty(yt,"coerceInputValue",{enumerable:!0,get:function(){return $J.coerceInputValue}});Object.defineProperty(yt,"concatAST",{enumerable:!0,get:function(){return eX.concatAST}});Object.defineProperty(yt,"separateOperations",{enumerable:!0,get:function(){return tX.separateOperations}});Object.defineProperty(yt,"stripIgnoredCharacters",{enumerable:!0,get:function(){return rX.stripIgnoredCharacters}});Object.defineProperty(yt,"isEqualType",{enumerable:!0,get:function(){return qk.isEqualType}});Object.defineProperty(yt,"isTypeSubTypeOf",{enumerable:!0,get:function(){return qk.isTypeSubTypeOf}});Object.defineProperty(yt,"doTypesOverlap",{enumerable:!0,get:function(){return qk.doTypesOverlap}});Object.defineProperty(yt,"assertValidName",{enumerable:!0,get:function(){return Jj.assertValidName}});Object.defineProperty(yt,"isValidNameError",{enumerable:!0,get:function(){return Jj.isValidNameError}});Object.defineProperty(yt,"BreakingChangeType",{enumerable:!0,get:function(){return wm.BreakingChangeType}});Object.defineProperty(yt,"DangerousChangeType",{enumerable:!0,get:function(){return wm.DangerousChangeType}});Object.defineProperty(yt,"findBreakingChanges",{enumerable:!0,get:function(){return wm.findBreakingChanges}});Object.defineProperty(yt,"findDangerousChanges",{enumerable:!0,get:function(){return wm.findDangerousChanges}});Object.defineProperty(yt,"findDeprecatedUsages",{enumerable:!0,get:function(){return nX.findDeprecatedUsages}});var QJ=vk(),BJ=mk(),KJ=um(),HJ=ej(),zJ=rj(),zj=mj(),Wj=Tk(),WJ=bj(),Mk=Nj(),YJ=Qa(),JJ=lp(),XJ=M_(),ZJ=Zd(),Yj=zg(),$J=XS(),eX=Dj(),tX=Lj(),rX=jj(),qk=Hd(),Jj=S_(),wm=Kj(),nX=Hj()});var ht=G(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Object.defineProperty(Z,"version",{enumerable:!0,get:function(){return Zj.version}});Object.defineProperty(Z,"versionInfo",{enumerable:!0,get:function(){return Zj.versionInfo}});Object.defineProperty(Z,"graphql",{enumerable:!0,get:function(){return $j.graphql}});Object.defineProperty(Z,"graphqlSync",{enumerable:!0,get:function(){return $j.graphqlSync}});Object.defineProperty(Z,"GraphQLSchema",{enumerable:!0,get:function(){return Oe.GraphQLSchema}});Object.defineProperty(Z,"GraphQLDirective",{enumerable:!0,get:function(){return Oe.GraphQLDirective}});Object.defineProperty(Z,"GraphQLScalarType",{enumerable:!0,get:function(){return Oe.GraphQLScalarType}});Object.defineProperty(Z,"GraphQLObjectType",{enumerable:!0,get:function(){return Oe.GraphQLObjectType}});Object.defineProperty(Z,"GraphQLInterfaceType",{enumerable:!0,get:function(){return Oe.GraphQLInterfaceType}});Object.defineProperty(Z,"GraphQLUnionType",{enumerable:!0,get:function(){return Oe.GraphQLUnionType}});Object.defineProperty(Z,"GraphQLEnumType",{enumerable:!0,get:function(){return Oe.GraphQLEnumType}});Object.defineProperty(Z,"GraphQLInputObjectType",{enumerable:!0,get:function(){return Oe.GraphQLInputObjectType}});Object.defineProperty(Z,"GraphQLList",{enumerable:!0,get:function(){return Oe.GraphQLList}});Object.defineProperty(Z,"GraphQLNonNull",{enumerable:!0,get:function(){return Oe.GraphQLNonNull}});Object.defineProperty(Z,"specifiedScalarTypes",{enumerable:!0,get:function(){return Oe.specifiedScalarTypes}});Object.defineProperty(Z,"GraphQLInt",{enumerable:!0,get:function(){return Oe.GraphQLInt}});Object.defineProperty(Z,"GraphQLFloat",{enumerable:!0,get:function(){return Oe.GraphQLFloat}});Object.defineProperty(Z,"GraphQLString",{enumerable:!0,get:function(){return Oe.GraphQLString}});Object.defineProperty(Z,"GraphQLBoolean",{enumerable:!0,get:function(){return Oe.GraphQLBoolean}});Object.defineProperty(Z,"GraphQLID",{enumerable:!0,get:function(){return Oe.GraphQLID}});Object.defineProperty(Z,"specifiedDirectives",{enumerable:!0,get:function(){return Oe.specifiedDirectives}});Object.defineProperty(Z,"GraphQLIncludeDirective",{enumerable:!0,get:function(){return Oe.GraphQLIncludeDirective}});Object.defineProperty(Z,"GraphQLSkipDirective",{enumerable:!0,get:function(){return Oe.GraphQLSkipDirective}});Object.defineProperty(Z,"GraphQLDeprecatedDirective",{enumerable:!0,get:function(){return Oe.GraphQLDeprecatedDirective}});Object.defineProperty(Z,"GraphQLSpecifiedByDirective",{enumerable:!0,get:function(){return Oe.GraphQLSpecifiedByDirective}});Object.defineProperty(Z,"TypeKind",{enumerable:!0,get:function(){return Oe.TypeKind}});Object.defineProperty(Z,"DEFAULT_DEPRECATION_REASON",{enumerable:!0,get:function(){return Oe.DEFAULT_DEPRECATION_REASON}});Object.defineProperty(Z,"introspectionTypes",{enumerable:!0,get:function(){return Oe.introspectionTypes}});Object.defineProperty(Z,"__Schema",{enumerable:!0,get:function(){return Oe.__Schema}});Object.defineProperty(Z,"__Directive",{enumerable:!0,get:function(){return Oe.__Directive}});Object.defineProperty(Z,"__DirectiveLocation",{enumerable:!0,get:function(){return Oe.__DirectiveLocation}});Object.defineProperty(Z,"__Type",{enumerable:!0,get:function(){return Oe.__Type}});Object.defineProperty(Z,"__Field",{enumerable:!0,get:function(){return Oe.__Field}});Object.defineProperty(Z,"__InputValue",{enumerable:!0,get:function(){return Oe.__InputValue}});Object.defineProperty(Z,"__EnumValue",{enumerable:!0,get:function(){return Oe.__EnumValue}});Object.defineProperty(Z,"__TypeKind",{enumerable:!0,get:function(){return Oe.__TypeKind}});Object.defineProperty(Z,"SchemaMetaFieldDef",{enumerable:!0,get:function(){return Oe.SchemaMetaFieldDef}});Object.defineProperty(Z,"TypeMetaFieldDef",{enumerable:!0,get:function(){return Oe.TypeMetaFieldDef}});Object.defineProperty(Z,"TypeNameMetaFieldDef",{enumerable:!0,get:function(){return Oe.TypeNameMetaFieldDef}});Object.defineProperty(Z,"isSchema",{enumerable:!0,get:function(){return Oe.isSchema}});Object.defineProperty(Z,"isDirective",{enumerable:!0,get:function(){return Oe.isDirective}});Object.defineProperty(Z,"isType",{enumerable:!0,get:function(){return Oe.isType}});Object.defineProperty(Z,"isScalarType",{enumerable:!0,get:function(){return Oe.isScalarType}});Object.defineProperty(Z,"isObjectType",{enumerable:!0,get:function(){return Oe.isObjectType}});Object.defineProperty(Z,"isInterfaceType",{enumerable:!0,get:function(){return Oe.isInterfaceType}});Object.defineProperty(Z,"isUnionType",{enumerable:!0,get:function(){return Oe.isUnionType}});Object.defineProperty(Z,"isEnumType",{enumerable:!0,get:function(){return Oe.isEnumType}});Object.defineProperty(Z,"isInputObjectType",{enumerable:!0,get:function(){return Oe.isInputObjectType}});Object.defineProperty(Z,"isListType",{enumerable:!0,get:function(){return Oe.isListType}});Object.defineProperty(Z,"isNonNullType",{enumerable:!0,get:function(){return Oe.isNonNullType}});Object.defineProperty(Z,"isInputType",{enumerable:!0,get:function(){return Oe.isInputType}});Object.defineProperty(Z,"isOutputType",{enumerable:!0,get:function(){return Oe.isOutputType}});Object.defineProperty(Z,"isLeafType",{enumerable:!0,get:function(){return Oe.isLeafType}});Object.defineProperty(Z,"isCompositeType",{enumerable:!0,get:function(){return Oe.isCompositeType}});Object.defineProperty(Z,"isAbstractType",{enumerable:!0,get:function(){return Oe.isAbstractType}});Object.defineProperty(Z,"isWrappingType",{enumerable:!0,get:function(){return Oe.isWrappingType}});Object.defineProperty(Z,"isNullableType",{enumerable:!0,get:function(){return Oe.isNullableType}});Object.defineProperty(Z,"isNamedType",{enumerable:!0,get:function(){return Oe.isNamedType}});Object.defineProperty(Z,"isRequiredArgument",{enumerable:!0,get:function(){return Oe.isRequiredArgument}});Object.defineProperty(Z,"isRequiredInputField",{enumerable:!0,get:function(){return Oe.isRequiredInputField}});Object.defineProperty(Z,"isSpecifiedScalarType",{enumerable:!0,get:function(){return Oe.isSpecifiedScalarType}});Object.defineProperty(Z,"isIntrospectionType",{enumerable:!0,get:function(){return Oe.isIntrospectionType}});Object.defineProperty(Z,"isSpecifiedDirective",{enumerable:!0,get:function(){return Oe.isSpecifiedDirective}});Object.defineProperty(Z,"assertSchema",{enumerable:!0,get:function(){return Oe.assertSchema}});Object.defineProperty(Z,"assertDirective",{enumerable:!0,get:function(){return Oe.assertDirective}});Object.defineProperty(Z,"assertType",{enumerable:!0,get:function(){return Oe.assertType}});Object.defineProperty(Z,"assertScalarType",{enumerable:!0,get:function(){return Oe.assertScalarType}});Object.defineProperty(Z,"assertObjectType",{enumerable:!0,get:function(){return Oe.assertObjectType}});Object.defineProperty(Z,"assertInterfaceType",{enumerable:!0,get:function(){return Oe.assertInterfaceType}});Object.defineProperty(Z,"assertUnionType",{enumerable:!0,get:function(){return Oe.assertUnionType}});Object.defineProperty(Z,"assertEnumType",{enumerable:!0,get:function(){return Oe.assertEnumType}});Object.defineProperty(Z,"assertInputObjectType",{enumerable:!0,get:function(){return Oe.assertInputObjectType}});Object.defineProperty(Z,"assertListType",{enumerable:!0,get:function(){return Oe.assertListType}});Object.defineProperty(Z,"assertNonNullType",{enumerable:!0,get:function(){return Oe.assertNonNullType}});Object.defineProperty(Z,"assertInputType",{enumerable:!0,get:function(){return Oe.assertInputType}});Object.defineProperty(Z,"assertOutputType",{enumerable:!0,get:function(){return Oe.assertOutputType}});Object.defineProperty(Z,"assertLeafType",{enumerable:!0,get:function(){return Oe.assertLeafType}});Object.defineProperty(Z,"assertCompositeType",{enumerable:!0,get:function(){return Oe.assertCompositeType}});Object.defineProperty(Z,"assertAbstractType",{enumerable:!0,get:function(){return Oe.assertAbstractType}});Object.defineProperty(Z,"assertWrappingType",{enumerable:!0,get:function(){return Oe.assertWrappingType}});Object.defineProperty(Z,"assertNullableType",{enumerable:!0,get:function(){return Oe.assertNullableType}});Object.defineProperty(Z,"assertNamedType",{enumerable:!0,get:function(){return Oe.assertNamedType}});Object.defineProperty(Z,"getNullableType",{enumerable:!0,get:function(){return Oe.getNullableType}});Object.defineProperty(Z,"getNamedType",{enumerable:!0,get:function(){return Oe.getNamedType}});Object.defineProperty(Z,"validateSchema",{enumerable:!0,get:function(){return Oe.validateSchema}});Object.defineProperty(Z,"assertValidSchema",{enumerable:!0,get:function(){return Oe.assertValidSchema}});Object.defineProperty(Z,"Token",{enumerable:!0,get:function(){return Xt.Token}});Object.defineProperty(Z,"Source",{enumerable:!0,get:function(){return Xt.Source}});Object.defineProperty(Z,"Location",{enumerable:!0,get:function(){return Xt.Location}});Object.defineProperty(Z,"getLocation",{enumerable:!0,get:function(){return Xt.getLocation}});Object.defineProperty(Z,"printLocation",{enumerable:!0,get:function(){return Xt.printLocation}});Object.defineProperty(Z,"printSourceLocation",{enumerable:!0,get:function(){return Xt.printSourceLocation}});Object.defineProperty(Z,"Lexer",{enumerable:!0,get:function(){return Xt.Lexer}});Object.defineProperty(Z,"TokenKind",{enumerable:!0,get:function(){return Xt.TokenKind}});Object.defineProperty(Z,"parse",{enumerable:!0,get:function(){return Xt.parse}});Object.defineProperty(Z,"parseValue",{enumerable:!0,get:function(){return Xt.parseValue}});Object.defineProperty(Z,"parseType",{enumerable:!0,get:function(){return Xt.parseType}});Object.defineProperty(Z,"print",{enumerable:!0,get:function(){return Xt.print}});Object.defineProperty(Z,"visit",{enumerable:!0,get:function(){return Xt.visit}});Object.defineProperty(Z,"visitInParallel",{enumerable:!0,get:function(){return Xt.visitInParallel}});Object.defineProperty(Z,"getVisitFn",{enumerable:!0,get:function(){return Xt.getVisitFn}});Object.defineProperty(Z,"BREAK",{enumerable:!0,get:function(){return Xt.BREAK}});Object.defineProperty(Z,"Kind",{enumerable:!0,get:function(){return Xt.Kind}});Object.defineProperty(Z,"DirectiveLocation",{enumerable:!0,get:function(){return Xt.DirectiveLocation}});Object.defineProperty(Z,"isDefinitionNode",{enumerable:!0,get:function(){return Xt.isDefinitionNode}});Object.defineProperty(Z,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return Xt.isExecutableDefinitionNode}});Object.defineProperty(Z,"isSelectionNode",{enumerable:!0,get:function(){return Xt.isSelectionNode}});Object.defineProperty(Z,"isValueNode",{enumerable:!0,get:function(){return Xt.isValueNode}});Object.defineProperty(Z,"isTypeNode",{enumerable:!0,get:function(){return Xt.isTypeNode}});Object.defineProperty(Z,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return Xt.isTypeSystemDefinitionNode}});Object.defineProperty(Z,"isTypeDefinitionNode",{enumerable:!0,get:function(){return Xt.isTypeDefinitionNode}});Object.defineProperty(Z,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return Xt.isTypeSystemExtensionNode}});Object.defineProperty(Z,"isTypeExtensionNode",{enumerable:!0,get:function(){return Xt.isTypeExtensionNode}});Object.defineProperty(Z,"execute",{enumerable:!0,get:function(){return Nc.execute}});Object.defineProperty(Z,"executeSync",{enumerable:!0,get:function(){return Nc.executeSync}});Object.defineProperty(Z,"defaultFieldResolver",{enumerable:!0,get:function(){return Nc.defaultFieldResolver}});Object.defineProperty(Z,"defaultTypeResolver",{enumerable:!0,get:function(){return Nc.defaultTypeResolver}});Object.defineProperty(Z,"responsePathAsArray",{enumerable:!0,get:function(){return Nc.responsePathAsArray}});Object.defineProperty(Z,"getDirectiveValues",{enumerable:!0,get:function(){return Nc.getDirectiveValues}});Object.defineProperty(Z,"subscribe",{enumerable:!0,get:function(){return eP.subscribe}});Object.defineProperty(Z,"createSourceEventStream",{enumerable:!0,get:function(){return eP.createSourceEventStream}});Object.defineProperty(Z,"validate",{enumerable:!0,get:function(){return pt.validate}});Object.defineProperty(Z,"ValidationContext",{enumerable:!0,get:function(){return pt.ValidationContext}});Object.defineProperty(Z,"specifiedRules",{enumerable:!0,get:function(){return pt.specifiedRules}});Object.defineProperty(Z,"ExecutableDefinitionsRule",{enumerable:!0,get:function(){return pt.ExecutableDefinitionsRule}});Object.defineProperty(Z,"FieldsOnCorrectTypeRule",{enumerable:!0,get:function(){return pt.FieldsOnCorrectTypeRule}});Object.defineProperty(Z,"FragmentsOnCompositeTypesRule",{enumerable:!0,get:function(){return pt.FragmentsOnCompositeTypesRule}});Object.defineProperty(Z,"KnownArgumentNamesRule",{enumerable:!0,get:function(){return pt.KnownArgumentNamesRule}});Object.defineProperty(Z,"KnownDirectivesRule",{enumerable:!0,get:function(){return pt.KnownDirectivesRule}});Object.defineProperty(Z,"KnownFragmentNamesRule",{enumerable:!0,get:function(){return pt.KnownFragmentNamesRule}});Object.defineProperty(Z,"KnownTypeNamesRule",{enumerable:!0,get:function(){return pt.KnownTypeNamesRule}});Object.defineProperty(Z,"LoneAnonymousOperationRule",{enumerable:!0,get:function(){return pt.LoneAnonymousOperationRule}});Object.defineProperty(Z,"NoFragmentCyclesRule",{enumerable:!0,get:function(){return pt.NoFragmentCyclesRule}});Object.defineProperty(Z,"NoUndefinedVariablesRule",{enumerable:!0,get:function(){return pt.NoUndefinedVariablesRule}});Object.defineProperty(Z,"NoUnusedFragmentsRule",{enumerable:!0,get:function(){return pt.NoUnusedFragmentsRule}});Object.defineProperty(Z,"NoUnusedVariablesRule",{enumerable:!0,get:function(){return pt.NoUnusedVariablesRule}});Object.defineProperty(Z,"OverlappingFieldsCanBeMergedRule",{enumerable:!0,get:function(){return pt.OverlappingFieldsCanBeMergedRule}});Object.defineProperty(Z,"PossibleFragmentSpreadsRule",{enumerable:!0,get:function(){return pt.PossibleFragmentSpreadsRule}});Object.defineProperty(Z,"ProvidedRequiredArgumentsRule",{enumerable:!0,get:function(){return pt.ProvidedRequiredArgumentsRule}});Object.defineProperty(Z,"ScalarLeafsRule",{enumerable:!0,get:function(){return pt.ScalarLeafsRule}});Object.defineProperty(Z,"SingleFieldSubscriptionsRule",{enumerable:!0,get:function(){return pt.SingleFieldSubscriptionsRule}});Object.defineProperty(Z,"UniqueArgumentNamesRule",{enumerable:!0,get:function(){return pt.UniqueArgumentNamesRule}});Object.defineProperty(Z,"UniqueDirectivesPerLocationRule",{enumerable:!0,get:function(){return pt.UniqueDirectivesPerLocationRule}});Object.defineProperty(Z,"UniqueFragmentNamesRule",{enumerable:!0,get:function(){return pt.UniqueFragmentNamesRule}});Object.defineProperty(Z,"UniqueInputFieldNamesRule",{enumerable:!0,get:function(){return pt.UniqueInputFieldNamesRule}});Object.defineProperty(Z,"UniqueOperationNamesRule",{enumerable:!0,get:function(){return pt.UniqueOperationNamesRule}});Object.defineProperty(Z,"UniqueVariableNamesRule",{enumerable:!0,get:function(){return pt.UniqueVariableNamesRule}});Object.defineProperty(Z,"ValuesOfCorrectTypeRule",{enumerable:!0,get:function(){return pt.ValuesOfCorrectTypeRule}});Object.defineProperty(Z,"VariablesAreInputTypesRule",{enumerable:!0,get:function(){return pt.VariablesAreInputTypesRule}});Object.defineProperty(Z,"VariablesInAllowedPositionRule",{enumerable:!0,get:function(){return pt.VariablesInAllowedPositionRule}});Object.defineProperty(Z,"LoneSchemaDefinitionRule",{enumerable:!0,get:function(){return pt.LoneSchemaDefinitionRule}});Object.defineProperty(Z,"UniqueOperationTypesRule",{enumerable:!0,get:function(){return pt.UniqueOperationTypesRule}});Object.defineProperty(Z,"UniqueTypeNamesRule",{enumerable:!0,get:function(){return pt.UniqueTypeNamesRule}});Object.defineProperty(Z,"UniqueEnumValueNamesRule",{enumerable:!0,get:function(){return pt.UniqueEnumValueNamesRule}});Object.defineProperty(Z,"UniqueFieldDefinitionNamesRule",{enumerable:!0,get:function(){return pt.UniqueFieldDefinitionNamesRule}});Object.defineProperty(Z,"UniqueDirectiveNamesRule",{enumerable:!0,get:function(){return pt.UniqueDirectiveNamesRule}});Object.defineProperty(Z,"PossibleTypeExtensionsRule",{enumerable:!0,get:function(){return pt.PossibleTypeExtensionsRule}});Object.defineProperty(Z,"NoDeprecatedCustomRule",{enumerable:!0,get:function(){return pt.NoDeprecatedCustomRule}});Object.defineProperty(Z,"NoSchemaIntrospectionCustomRule",{enumerable:!0,get:function(){return pt.NoSchemaIntrospectionCustomRule}});Object.defineProperty(Z,"GraphQLError",{enumerable:!0,get:function(){return Np.GraphQLError}});Object.defineProperty(Z,"syntaxError",{enumerable:!0,get:function(){return Np.syntaxError}});Object.defineProperty(Z,"locatedError",{enumerable:!0,get:function(){return Np.locatedError}});Object.defineProperty(Z,"printError",{enumerable:!0,get:function(){return Np.printError}});Object.defineProperty(Z,"formatError",{enumerable:!0,get:function(){return Np.formatError}});Object.defineProperty(Z,"getIntrospectionQuery",{enumerable:!0,get:function(){return St.getIntrospectionQuery}});Object.defineProperty(Z,"getOperationAST",{enumerable:!0,get:function(){return St.getOperationAST}});Object.defineProperty(Z,"getOperationRootType",{enumerable:!0,get:function(){return St.getOperationRootType}});Object.defineProperty(Z,"introspectionFromSchema",{enumerable:!0,get:function(){return St.introspectionFromSchema}});Object.defineProperty(Z,"buildClientSchema",{enumerable:!0,get:function(){return St.buildClientSchema}});Object.defineProperty(Z,"buildASTSchema",{enumerable:!0,get:function(){return St.buildASTSchema}});Object.defineProperty(Z,"buildSchema",{enumerable:!0,get:function(){return St.buildSchema}});Object.defineProperty(Z,"getDescription",{enumerable:!0,get:function(){return St.getDescription}});Object.defineProperty(Z,"extendSchema",{enumerable:!0,get:function(){return St.extendSchema}});Object.defineProperty(Z,"lexicographicSortSchema",{enumerable:!0,get:function(){return St.lexicographicSortSchema}});Object.defineProperty(Z,"printSchema",{enumerable:!0,get:function(){return St.printSchema}});Object.defineProperty(Z,"printType",{enumerable:!0,get:function(){return St.printType}});Object.defineProperty(Z,"printIntrospectionSchema",{enumerable:!0,get:function(){return St.printIntrospectionSchema}});Object.defineProperty(Z,"typeFromAST",{enumerable:!0,get:function(){return St.typeFromAST}});Object.defineProperty(Z,"valueFromAST",{enumerable:!0,get:function(){return St.valueFromAST}});Object.defineProperty(Z,"valueFromASTUntyped",{enumerable:!0,get:function(){return St.valueFromASTUntyped}});Object.defineProperty(Z,"astFromValue",{enumerable:!0,get:function(){return St.astFromValue}});Object.defineProperty(Z,"TypeInfo",{enumerable:!0,get:function(){return St.TypeInfo}});Object.defineProperty(Z,"visitWithTypeInfo",{enumerable:!0,get:function(){return St.visitWithTypeInfo}});Object.defineProperty(Z,"coerceInputValue",{enumerable:!0,get:function(){return St.coerceInputValue}});Object.defineProperty(Z,"concatAST",{enumerable:!0,get:function(){return St.concatAST}});Object.defineProperty(Z,"separateOperations",{enumerable:!0,get:function(){return St.separateOperations}});Object.defineProperty(Z,"stripIgnoredCharacters",{enumerable:!0,get:function(){return St.stripIgnoredCharacters}});Object.defineProperty(Z,"isEqualType",{enumerable:!0,get:function(){return St.isEqualType}});Object.defineProperty(Z,"isTypeSubTypeOf",{enumerable:!0,get:function(){return St.isTypeSubTypeOf}});Object.defineProperty(Z,"doTypesOverlap",{enumerable:!0,get:function(){return St.doTypesOverlap}});Object.defineProperty(Z,"assertValidName",{enumerable:!0,get:function(){return St.assertValidName}});Object.defineProperty(Z,"isValidNameError",{enumerable:!0,get:function(){return St.isValidNameError}});Object.defineProperty(Z,"BreakingChangeType",{enumerable:!0,get:function(){return St.BreakingChangeType}});Object.defineProperty(Z,"DangerousChangeType",{enumerable:!0,get:function(){return St.DangerousChangeType}});Object.defineProperty(Z,"findBreakingChanges",{enumerable:!0,get:function(){return St.findBreakingChanges}});Object.defineProperty(Z,"findDangerousChanges",{enumerable:!0,get:function(){return St.findDangerousChanges}});Object.defineProperty(Z,"findDeprecatedUsages",{enumerable:!0,get:function(){return St.findDeprecatedUsages}});var Zj=m1(),$j=wR(),Oe=DR(),Xt=LR(),Nc=IR(),eP=HR(),pt=WR(),Np=XR(),St=Xj()});var rP=G((Xoe,tP)=>{tP.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n{"use strict";var iX=rP(),nP={"text/plain":"Text","text/html":"Url",default:"Text"},aX="Copy to clipboard: #{key}, Enter";function oX(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}function uX(e,t){var r,n,i,o,s,l,d=!1;t||(t={}),r=t.debug||!1;try{i=iX(),o=document.createRange(),s=document.getSelection(),l=document.createElement("span"),l.textContent=e,l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(v){if(v.stopPropagation(),t.format)if(v.preventDefault(),typeof v.clipboardData=="undefined"){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var y=nP[t.format]||nP.default;window.clipboardData.setData(y,e)}else v.clipboardData.clearData(),v.clipboardData.setData(t.format,e);t.onCopy&&(v.preventDefault(),t.onCopy(v.clipboardData))}),document.body.appendChild(l),o.selectNodeContents(l),s.addRange(o);var h=document.execCommand("copy");if(!h)throw new Error("copy command was unsuccessful");d=!0}catch(v){r&&console.error("unable to copy using execCommand: ",v),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(y){r&&console.error("unable to copy using clipboardData: ",y),r&&console.error("falling back to prompt"),n=oX("message"in t?t.message:aX),window.prompt(n,e)}}finally{s&&(typeof s.removeRange=="function"?s.removeRange(o):s.removeAllRanges()),l&&document.body.removeChild(l),i()}return d}iP.exports=uX});var Xk=G((Oue,Fm)=>{"use strict";function aF(e,t){if(e!=null)return e;var r=new Error(t!==void 0?t:"Got unexpected "+e);throw r.framesToPop=1,r}Fm.exports=aF;Fm.exports.default=aF;Object.defineProperty(Fm.exports,"__esModule",{value:!0})});var pF=G((Nse,xX)=>{xX.exports={Aacute:"\xC1",aacute:"\xE1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",Acirc:"\xC2",acirc:"\xE2",acute:"\xB4",Acy:"\u0410",acy:"\u0430",AElig:"\xC6",aelig:"\xE6",af:"\u2061",Afr:"\u{1D504}",afr:"\u{1D51E}",Agrave:"\xC0",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03B1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2A3F",amp:"&",AMP:"&",andand:"\u2A55",And:"\u2A53",and:"\u2227",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angmsd:"\u2221",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",Aogon:"\u0104",aogon:"\u0105",Aopf:"\u{1D538}",aopf:"\u{1D552}",apacir:"\u2A6F",ap:"\u2248",apE:"\u2A70",ape:"\u224A",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",Aring:"\xC5",aring:"\xE5",Ascr:"\u{1D49C}",ascr:"\u{1D4B6}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",Beta:"\u0392",beta:"\u03B2",beth:"\u2136",between:"\u226C",Bfr:"\u{1D505}",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bNot:"\u2AED",bnot:"\u2310",Bopf:"\u{1D539}",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250C",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252C",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxul:"\u2518",boxuL:"\u255B",boxUl:"\u255C",boxUL:"\u255D",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255A",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253C",boxvH:"\u256A",boxVh:"\u256B",boxVH:"\u256C",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251C",boxvR:"\u255E",boxVr:"\u255F",boxVR:"\u2560",bprime:"\u2035",breve:"\u02D8",Breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",Bscr:"\u212C",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsolb:"\u29C5",bsol:"\\",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",Bumpeq:"\u224E",bumpeq:"\u224F",Cacute:"\u0106",cacute:"\u0107",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",cap:"\u2229",Cap:"\u22D2",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",Ccaron:"\u010C",ccaron:"\u010D",Ccedil:"\xC7",ccedil:"\xE7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",Cdot:"\u010A",cdot:"\u010B",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",CenterDot:"\xB7",cfr:"\u{1D520}",Cfr:"\u212D",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03A7",chi:"\u03C7",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cir:"\u25CB",cirE:"\u29C3",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2A74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",conint:"\u222E",Conint:"\u222F",ContourIntegral:"\u222E",copf:"\u{1D554}",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xA9",COPY:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",cross:"\u2717",Cross:"\u2A2F",Cscr:"\u{1D49E}",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cupbrcap:"\u2A48",cupcap:"\u2A46",CupCap:"\u224D",cup:"\u222A",Cup:"\u22D3",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21A1",dArr:"\u21D3",dash:"\u2010",Dashv:"\u2AE4",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",Dcaron:"\u010E",dcaron:"\u010F",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21CA",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",Delta:"\u0394",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",Dfr:"\u{1D507}",dfr:"\u{1D521}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",diamond:"\u22C4",Diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",Dopf:"\u{1D53B}",dopf:"\u{1D555}",Dot:"\xA8",dot:"\u02D9",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21D3",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21BD",DownRightTeeVector:"\u295F",DownRightVectorBar:"\u2957",DownRightVector:"\u21C1",DownTeeArrow:"\u21A7",DownTee:"\u22A4",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",Dscr:"\u{1D49F}",dscr:"\u{1D4B9}",DScy:"\u0405",dscy:"\u0455",dsol:"\u29F6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",DZcy:"\u040F",dzcy:"\u045F",dzigrarr:"\u27FF",Eacute:"\xC9",eacute:"\xE9",easter:"\u2A6E",Ecaron:"\u011A",ecaron:"\u011B",Ecirc:"\xCA",ecirc:"\xEA",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042D",ecy:"\u044D",eDDot:"\u2A77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\u{1D508}",efr:"\u{1D522}",eg:"\u2A9A",Egrave:"\xC8",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",ENG:"\u014A",eng:"\u014B",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\u{1D53C}",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",Epsilon:"\u0395",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",escr:"\u212F",Escr:"\u2130",esdot:"\u2250",Esim:"\u2A73",esim:"\u2242",Eta:"\u0397",eta:"\u03B7",ETH:"\xD0",eth:"\xF0",Euml:"\xCB",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",Ffr:"\u{1D509}",ffr:"\u{1D523}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",Fopf:"\u{1D53D}",fopf:"\u{1D557}",forall:"\u2200",ForAll:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",Fscr:"\u2131",gacute:"\u01F5",Gamma:"\u0393",gamma:"\u03B3",Gammad:"\u03DC",gammad:"\u03DD",gap:"\u2A86",Gbreve:"\u011E",gbreve:"\u011F",Gcedil:"\u0122",Gcirc:"\u011C",gcirc:"\u011D",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",ge:"\u2265",gE:"\u2267",gEl:"\u2A8C",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",gescc:"\u2AA9",ges:"\u2A7E",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",Gfr:"\u{1D50A}",gfr:"\u{1D524}",gg:"\u226B",Gg:"\u22D9",ggg:"\u22D9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2AA5",gl:"\u2277",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gnE:"\u2269",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",Gopf:"\u{1D53E}",gopf:"\u{1D558}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gtcc:"\u2AA7",gtcir:"\u2A7A",gt:">",GT:">",Gt:"\u226B",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",HARDcy:"\u042A",hardcy:"\u044A",harrcir:"\u2948",harr:"\u2194",hArr:"\u21D4",harrw:"\u21AD",Hat:"^",hbar:"\u210F",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",Hfr:"\u210C",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",Hopf:"\u210D",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\u{1D4BD}",Hscr:"\u210B",hslash:"\u210F",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xCD",iacute:"\xED",ic:"\u2063",Icirc:"\xCE",icirc:"\xEE",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",Ifr:"\u2111",Igrave:"\xCC",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012A",imacr:"\u012B",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",incare:"\u2105",in:"\u2208",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",intcal:"\u22BA",int:"\u222B",Int:"\u222C",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012E",iogon:"\u012F",Iopf:"\u{1D540}",iopf:"\u{1D55A}",Iota:"\u0399",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",Iscr:"\u2110",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xCF",iuml:"\xEF",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\u{1D50D}",jfr:"\u{1D527}",jmath:"\u0237",Jopf:"\u{1D541}",jopf:"\u{1D55B}",Jscr:"\u{1D4A5}",jscr:"\u{1D4BF}",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039A",kappa:"\u03BA",kappav:"\u03F0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041A",kcy:"\u043A",Kfr:"\u{1D50E}",kfr:"\u{1D528}",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040C",kjcy:"\u045C",Kopf:"\u{1D542}",kopf:"\u{1D55C}",Kscr:"\u{1D4A6}",kscr:"\u{1D4C0}",lAarr:"\u21DA",Lacute:"\u0139",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",Lambda:"\u039B",lambda:"\u03BB",lang:"\u27E8",Lang:"\u27EA",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",larrb:"\u21E4",larrbfs:"\u291F",larr:"\u2190",Larr:"\u219E",lArr:"\u21D0",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",latail:"\u2919",lAtail:"\u291B",lat:"\u2AAB",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lBarr:"\u290E",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",Lcaron:"\u013D",lcaron:"\u013E",Lcedil:"\u013B",lcedil:"\u013C",lceil:"\u2308",lcub:"{",Lcy:"\u041B",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27E8",LeftArrowBar:"\u21E4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21D0",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21C3",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21D4",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTeeArrow:"\u21A4",LeftTee:"\u22A3",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangleBar:"\u29CF",LeftTriangle:"\u22B2",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21BF",LeftVectorBar:"\u2952",LeftVector:"\u21BC",lEg:"\u2A8B",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",lescc:"\u2AA8",les:"\u2A7D",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",Lfr:"\u{1D50F}",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21C7",ll:"\u226A",Ll:"\u22D8",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",Lmidot:"\u013F",lmidot:"\u0140",lmoustache:"\u23B0",lmoust:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lnE:"\u2268",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",LongLeftArrow:"\u27F5",Longleftarrow:"\u27F8",longleftrightarrow:"\u27F7",LongLeftRightArrow:"\u27F7",Longleftrightarrow:"\u27FA",longmapsto:"\u27FC",longrightarrow:"\u27F6",LongRightArrow:"\u27F6",Longrightarrow:"\u27F9",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",Lopf:"\u{1D543}",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",Lscr:"\u2112",lsh:"\u21B0",Lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2AA6",ltcir:"\u2A79",lt:"<",LT:"<",Lt:"\u226A",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",Mcy:"\u041C",mcy:"\u043C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",midast:"*",midcir:"\u2AF0",mid:"\u2223",middot:"\xB7",minusb:"\u229F",minus:"\u2212",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",Mopf:"\u{1D544}",mopf:"\u{1D55E}",mp:"\u2213",mscr:"\u{1D4C2}",Mscr:"\u2133",mstpos:"\u223E",Mu:"\u039C",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266E",naturals:"\u2115",natur:"\u266E",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",Ncy:"\u041D",ncy:"\u043D",ndash:"\u2013",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21D7",nearrow:"\u2197",ne:"\u2260",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` -`,nexist:"\u2204",nexists:"\u2204",Nfr:"\u{1D511}",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",nGt:"\u226B\u20D2",ngt:"\u226F",ngtr:"\u226F",nGtv:"\u226B\u0338",nharr:"\u21AE",nhArr:"\u21CE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",NJcy:"\u040A",njcy:"\u045A",nlarr:"\u219A",nlArr:"\u21CD",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219A",nLeftarrow:"\u21CD",nleftrightarrow:"\u21AE",nLeftrightarrow:"\u21CE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nLt:"\u226A\u20D2",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",nopf:"\u{1D55F}",Nopf:"\u2115",Not:"\u2AEC",not:"\xAC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangle:"\u22EB",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",nprec:"\u2280",npreceq:"\u2AAF\u0338",npre:"\u2AAF\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219B",nrArr:"\u21CF",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nRightarrow:"\u21CF",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",Nscr:"\u{1D4A9}",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",Ntilde:"\xD1",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",Nu:"\u039D",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvDash:"\u22AD",nVdash:"\u22AE",nVDash:"\u22AF",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21D6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xD3",oacute:"\xF3",oast:"\u229B",Ocirc:"\xD4",ocirc:"\xF4",ocir:"\u229A",Ocy:"\u041E",ocy:"\u043E",odash:"\u229D",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29BF",Ofr:"\u{1D512}",ofr:"\u{1D52C}",ogon:"\u02DB",Ograve:"\xD2",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",Omacr:"\u014C",omacr:"\u014D",Omega:"\u03A9",omega:"\u03C9",Omicron:"\u039F",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",Oopf:"\u{1D546}",oopf:"\u{1D560}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",orarr:"\u21BB",Or:"\u2A54",or:"\u2228",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",Oscr:"\u{1D4AA}",oscr:"\u2134",Oslash:"\xD8",oslash:"\xF8",osol:"\u2298",Otilde:"\xD5",otilde:"\xF5",otimesas:"\u2A36",Otimes:"\u2A37",otimes:"\u2297",Ouml:"\xD6",ouml:"\xF6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",para:"\xB6",parallel:"\u2225",par:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",Pcy:"\u041F",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",Pfr:"\u{1D513}",pfr:"\u{1D52D}",Phi:"\u03A6",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",Pi:"\u03A0",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plus:"+",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",popf:"\u{1D561}",Popf:"\u2119",pound:"\xA3",prap:"\u2AB7",Pr:"\u2ABB",pr:"\u227A",prcue:"\u227C",precapprox:"\u2AB7",prec:"\u227A",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",pre:"\u2AAF",prE:"\u2AB3",precsim:"\u227E",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportional:"\u221D",Proportion:"\u2237",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",Pscr:"\u{1D4AB}",pscr:"\u{1D4C5}",Psi:"\u03A8",psi:"\u03C8",puncsp:"\u2008",Qfr:"\u{1D514}",qfr:"\u{1D52E}",qint:"\u2A0C",qopf:"\u{1D562}",Qopf:"\u211A",qprime:"\u2057",Qscr:"\u{1D4AC}",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',QUOT:'"',rAarr:"\u21DB",race:"\u223D\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",Rang:"\u27EB",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21A0",rArr:"\u21D2",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",rAtail:"\u291C",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rBarr:"\u290F",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",Re:"\u211C",rect:"\u25AD",reg:"\xAE",REG:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",Rfr:"\u211C",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",Rho:"\u03A1",rho:"\u03C1",rhov:"\u03F1",RightAngleBracket:"\u27E9",RightArrowBar:"\u21E5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21D2",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVectorBar:"\u2955",RightDownVector:"\u21C2",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTeeArrow:"\u21A6",RightTee:"\u22A2",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangleBar:"\u29D0",RightTriangle:"\u22B3",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVectorBar:"\u2954",RightUpVector:"\u21BE",RightVectorBar:"\u2953",RightVector:"\u21C0",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoustache:"\u23B1",rmoust:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",Ropf:"\u211D",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",rscr:"\u{1D4C7}",Rscr:"\u211B",rsh:"\u21B1",Rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",Sacute:"\u015A",sacute:"\u015B",sbquo:"\u201A",scap:"\u2AB8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2ABC",sc:"\u227B",sccue:"\u227D",sce:"\u2AB0",scE:"\u2AB4",Scedil:"\u015E",scedil:"\u015F",Scirc:"\u015C",scirc:"\u015D",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",Scy:"\u0421",scy:"\u0441",sdotb:"\u22A1",sdot:"\u22C5",sdote:"\u2A66",searhk:"\u2925",searr:"\u2198",seArr:"\u21D8",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\u{1D516}",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",Sigma:"\u03A3",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",SOFTcy:"\u042C",softcy:"\u044C",solbar:"\u233F",solb:"\u29C4",sol:"/",Sopf:"\u{1D54A}",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",square:"\u25A1",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squ:"\u25A1",squf:"\u25AA",srarr:"\u2192",Sscr:"\u{1D4AE}",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",Star:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",Sub:"\u22D0",subdot:"\u2ABD",subE:"\u2AC5",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",Subset:"\u22D0",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succapprox:"\u2AB8",succ:"\u227B",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",sum:"\u2211",Sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",Sup:"\u22D1",supdot:"\u2ABE",supdsub:"\u2AD8",supE:"\u2AC6",supe:"\u2287",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",Supset:"\u22D1",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21D9",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",Tau:"\u03A4",tau:"\u03C4",tbrk:"\u23B4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",Tfr:"\u{1D517}",tfr:"\u{1D531}",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",THORN:"\xDE",thorn:"\xFE",tilde:"\u02DC",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2A31",timesb:"\u22A0",times:"\xD7",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",topbot:"\u2336",topcir:"\u2AF1",top:"\u22A4",Topf:"\u{1D54B}",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",Tscr:"\u{1D4AF}",tscr:"\u{1D4C9}",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040B",tshcy:"\u045B",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",Uacute:"\xDA",uacute:"\xFA",uarr:"\u2191",Uarr:"\u219F",uArr:"\u21D1",Uarrocir:"\u2949",Ubrcy:"\u040E",ubrcy:"\u045E",Ubreve:"\u016C",ubreve:"\u016D",Ucirc:"\xDB",ucirc:"\xFB",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21C5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",Ufr:"\u{1D518}",ufr:"\u{1D532}",Ugrave:"\xD9",ugrave:"\xF9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",Umacr:"\u016A",umacr:"\u016B",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",uogon:"\u0173",Uopf:"\u{1D54C}",uopf:"\u{1D566}",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21D1",UpArrowDownArrow:"\u21C5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21D5",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03C5",Upsi:"\u03D2",upsih:"\u03D2",Upsilon:"\u03A5",upsilon:"\u03C5",UpTeeArrow:"\u21A5",UpTee:"\u22A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",Uring:"\u016E",uring:"\u016F",urtri:"\u25F9",Uscr:"\u{1D4B0}",uscr:"\u{1D4CA}",utdot:"\u22F0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",Uuml:"\xDC",uuml:"\xFC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",vArr:"\u21D5",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vBar:"\u2AE8",Vbar:"\u2AEB",vBarv:"\u2AE9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22A2",vDash:"\u22A8",Vdash:"\u22A9",VDash:"\u22AB",Vdashl:"\u2AE6",veebar:"\u22BB",vee:"\u2228",Vee:"\u22C1",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",Vopf:"\u{1D54D}",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",Vscr:"\u{1D4B1}",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",Wedge:"\u22C0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\u{1D51A}",wfr:"\u{1D534}",Wopf:"\u{1D54E}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\u{1D4B2}",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",Xfr:"\u{1D51B}",xfr:"\u{1D535}",xharr:"\u27F7",xhArr:"\u27FA",Xi:"\u039E",xi:"\u03BE",xlarr:"\u27F5",xlArr:"\u27F8",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",Xopf:"\u{1D54F}",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrarr:"\u27F6",xrArr:"\u27F9",Xscr:"\u{1D4B3}",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",Yacute:"\xDD",yacute:"\xFD",YAcy:"\u042F",yacy:"\u044F",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042B",ycy:"\u044B",yen:"\xA5",Yfr:"\u{1D51C}",yfr:"\u{1D536}",YIcy:"\u0407",yicy:"\u0457",Yopf:"\u{1D550}",yopf:"\u{1D56A}",Yscr:"\u{1D4B4}",yscr:"\u{1D4CE}",YUcy:"\u042E",yucy:"\u044E",yuml:"\xFF",Yuml:"\u0178",Zacute:"\u0179",zacute:"\u017A",Zcaron:"\u017D",zcaron:"\u017E",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017B",zdot:"\u017C",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zeta:"\u03B6",zfr:"\u{1D537}",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\u{1D56B}",Zopf:"\u2124",Zscr:"\u{1D4B5}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"}});var oO=G((Dse,hF)=>{"use strict";hF.exports=pF()});var Gm=G((xse,vF)=>{vF.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/});var yF=G((Cse,mF)=>{"use strict";var gF={};function CX(e){var t,r,n=gF[e];if(n)return n;for(n=gF[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),/^[0-9a-z]$/i.test(r)?n.push(r):n.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t=55296&&o<=57343){if(o>=55296&&o<=56319&&n+1=56320&&s<=57343)){d+=encodeURIComponent(e[n]+e[n+1]),n++;continue}d+="%EF%BF%BD";continue}d+=encodeURIComponent(e[n])}return d}Qm.defaultChars=";/?:@&=+$,-_.!~*'()#";Qm.componentChars="-_.!~*'()";mF.exports=Qm});var _F=G((Lse,TF)=>{"use strict";var bF={};function LX(e){var t,r,n=bF[e];if(n)return n;for(n=bF[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),n.push(r);for(t=0;t=55296&&v<=57343?y+="\uFFFD\uFFFD\uFFFD":y+=String.fromCharCode(v),i+=6;continue}if((s&248)==240&&i+91114111?y+="\uFFFD\uFFFD\uFFFD\uFFFD":(v-=65536,y+=String.fromCharCode(55296+(v>>10),56320+(v&1023))),i+=9;continue}y+="\uFFFD"}return y})}Bm.defaultChars=";/?:@&=+$,#";Bm.componentChars="";TF.exports=Bm});var SF=G((Ise,EF)=>{"use strict";EF.exports=function(t){var r="";return r+=t.protocol||"",r+=t.slashes?"//":"",r+=t.auth?t.auth+"@":"",t.hostname&&t.hostname.indexOf(":")!==-1?r+="["+t.hostname+"]":r+=t.hostname||"",r+=t.port?":"+t.port:"",r+=t.pathname||"",r+=t.search||"",r+=t.hash||"",r}});var CF=G((Ase,xF)=>{"use strict";function Km(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var IX=/^([a-z0-9.+-]+:)/i,AX=/:[0-9]*$/,RX=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,jX=["<",">",'"',"`"," ","\r",` -`," "],PX=["{","}","|","\\","^","`"].concat(jX),FX=["'"].concat(PX),kF=["%","/","?",";","#"].concat(FX),OF=["/","?","#"],MX=255,wF=/^[+a-z0-9A-Z_-]{0,63}$/,qX=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,NF={javascript:!0,"javascript:":!0},DF={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function VX(e,t){if(e&&e instanceof Km)return e;var r=new Km;return r.parse(e,t),r}Km.prototype.parse=function(e,t){var r,n,i,o,s,l=e;if(l=l.trim(),!t&&e.split("#").length===1){var d=RX.exec(l);if(d)return this.pathname=d[1],d[2]&&(this.search=d[2]),this}var h=IX.exec(l);if(h&&(h=h[0],i=h.toLowerCase(),this.protocol=h,l=l.substr(h.length)),(t||h||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(s=l.substr(0,2)==="//",s&&!(h&&NF[h])&&(l=l.substr(2),this.slashes=!0)),!NF[h]&&(s||h&&!DF[h])){var v=-1;for(r=0;r127?S+="x":S+=T[m];if(!S.match(wF)){var x=k.slice(0,r),L=k.slice(r+1),O=T.match(qX);O&&(x.push(O[1]),L.unshift(O[2])),L.length&&(l=L.join(".")+l),this.hostname=x.join(".");break}}}}this.hostname.length>MX&&(this.hostname=""),_&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var R=l.indexOf("#");R!==-1&&(this.hash=l.substr(R),l=l.slice(0,R));var M=l.indexOf("?");return M!==-1&&(this.search=l.substr(M),l=l.slice(0,M)),l&&(this.pathname=l),DF[i]&&this.hostname&&!this.pathname&&(this.pathname=""),this};Km.prototype.parseHost=function(e){var t=AX.exec(e);t&&(t=t[0],t!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};xF.exports=VX});var uO=G((Rse,Rp)=>{"use strict";Rp.exports.encode=yF();Rp.exports.decode=_F();Rp.exports.format=SF();Rp.exports.parse=CF()});var sO=G((jse,LF)=>{LF.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/});var lO=G((Pse,IF)=>{IF.exports=/[\0-\x1F\x7F-\x9F]/});var RF=G((Fse,AF)=>{AF.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/});var cO=G((Mse,jF)=>{jF.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/});var PF=G(Ic=>{"use strict";Ic.Any=sO();Ic.Cc=lO();Ic.Cf=RF();Ic.P=Gm();Ic.Z=cO()});var Pt=G(en=>{"use strict";function UX(e){return Object.prototype.toString.call(e)}function GX(e){return UX(e)==="[object String]"}var QX=Object.prototype.hasOwnProperty;function FF(e,t){return QX.call(e,t)}function BX(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach(function(r){if(!!r){if(typeof r!="object")throw new TypeError(r+"must be object");Object.keys(r).forEach(function(n){e[n]=r[n]})}}),e}function KX(e,t,r){return[].concat(e.slice(0,t),r,e.slice(t+1))}function MF(e){return!(e>=55296&&e<=57343||e>=64976&&e<=65007||(e&65535)==65535||(e&65535)==65534||e>=0&&e<=8||e===11||e>=14&&e<=31||e>=127&&e<=159||e>1114111)}function qF(e){if(e>65535){e-=65536;var t=55296+(e>>10),r=56320+(e&1023);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var VF=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,HX=/&([a-z#][a-z0-9]{1,31});/gi,zX=new RegExp(VF.source+"|"+HX.source,"gi"),WX=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,UF=oO();function YX(e,t){var r=0;return FF(UF,t)?UF[t]:t.charCodeAt(0)===35&&WX.test(t)&&(r=t[1].toLowerCase()==="x"?parseInt(t.slice(2),16):parseInt(t.slice(1),10),MF(r))?qF(r):e}function JX(e){return e.indexOf("\\")<0?e:e.replace(VF,"$1")}function XX(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(zX,function(t,r,n){return r||YX(t,n)})}var ZX=/[&<>"]/,$X=/[&<>"]/g,eZ={"&":"&","<":"<",">":">",'"':"""};function tZ(e){return eZ[e]}function rZ(e){return ZX.test(e)?e.replace($X,tZ):e}var nZ=/[.?*+^$[\]\\(){}|-]/g;function iZ(e){return e.replace(nZ,"\\$&")}function aZ(e){switch(e){case 9:case 32:return!0}return!1}function oZ(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}var uZ=Gm();function sZ(e){return uZ.test(e)}function lZ(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function cZ(e){return e=e.trim().replace(/\s+/g," "),"\u1E9E".toLowerCase()==="\u1E7E"&&(e=e.replace(/ẞ/g,"\xDF")),e.toLowerCase().toUpperCase()}en.lib={};en.lib.mdurl=uO();en.lib.ucmicro=PF();en.assign=BX;en.isString=GX;en.has=FF;en.unescapeMd=JX;en.unescapeAll=XX;en.isValidEntityCode=MF;en.fromCodePoint=qF;en.escapeHtml=rZ;en.arrayReplaceAt=KX;en.isSpace=aZ;en.isWhiteSpace=oZ;en.isMdAsciiPunct=lZ;en.isPunctChar=sZ;en.escapeRE=iZ;en.normalizeReference=cZ});var QF=G((Use,GF)=>{"use strict";GF.exports=function(t,r,n){var i,o,s,l,d=-1,h=t.posMax,v=t.pos;for(t.pos=r+1,i=1;t.pos{"use strict";var BF=Pt().unescapeAll;KF.exports=function(t,r,n){var i,o,s=0,l=r,d={ok:!1,pos:0,lines:0,str:""};if(t.charCodeAt(r)===60){for(r++;r32))return d;if(i===41){if(o===0)break;o--}r++}return l===r||o!==0||(d.str=BF(t.slice(l,r)),d.lines=s,d.pos=r,d.ok=!0),d}});var WF=G((Qse,zF)=>{"use strict";var fZ=Pt().unescapeAll;zF.exports=function(t,r,n){var i,o,s=0,l=r,d={ok:!1,pos:0,lines:0,str:""};if(r>=n||(o=t.charCodeAt(r),o!==34&&o!==39&&o!==40))return d;for(r++,o===40&&(o=41);r{"use strict";Hm.parseLinkLabel=QF();Hm.parseLinkDestination=HF();Hm.parseLinkTitle=WF()});var XF=G((Kse,JF)=>{"use strict";var dZ=Pt().assign,pZ=Pt().unescapeAll,Fs=Pt().escapeHtml,Wa={};Wa.code_inline=function(e,t,r,n,i){var o=e[t];return""+Fs(e[t].content)+""};Wa.code_block=function(e,t,r,n,i){var o=e[t];return""+Fs(e[t].content)+` -`};Wa.fence=function(e,t,r,n,i){var o=e[t],s=o.info?pZ(o.info).trim():"",l="",d="",h,v,y,b,D;return s&&(y=s.split(/(\s+)/g),l=y[0],d=y.slice(2).join("")),r.highlight?h=r.highlight(o.content,l,d)||Fs(o.content):h=Fs(o.content),h.indexOf(""+h+` -`):"
"+h+`
-`};Wa.image=function(e,t,r,n,i){var o=e[t];return o.attrs[o.attrIndex("alt")][1]=i.renderInlineAsText(o.children,r,n),i.renderToken(e,t,r)};Wa.hardbreak=function(e,t,r){return r.xhtmlOut?`
-`:`
-`};Wa.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?`
-`:`
-`:` -`};Wa.text=function(e,t){return Fs(e[t].content)};Wa.html_block=function(e,t){return e[t].content};Wa.html_inline=function(e,t){return e[t].content};function Ac(){this.rules=dZ({},Wa)}Ac.prototype.renderAttrs=function(t){var r,n,i;if(!t.attrs)return"";for(i="",r=0,n=t.attrs.length;r -`:">",o)};Ac.prototype.renderInline=function(e,t,r){for(var n,i="",o=this.rules,s=0,l=e.length;s{"use strict";function Oa(){this.__rules__=[],this.__cache__=null}Oa.prototype.__find__=function(e){for(var t=0;t{"use strict";var hZ=/\r\n?|\n/g,vZ=/\0/g;$F.exports=function(t){var r;r=t.src.replace(hZ,` -`),r=r.replace(vZ,"\uFFFD"),t.src=r}});var rM=G((Wse,tM)=>{"use strict";tM.exports=function(t){var r;t.inlineMode?(r=new t.Token("inline","",0),r.content=t.src,r.map=[0,1],r.children=[],t.tokens.push(r)):t.md.block.parse(t.src,t.md,t.env,t.tokens)}});var iM=G((Yse,nM)=>{"use strict";nM.exports=function(t){var r=t.tokens,n,i,o;for(i=0,o=r.length;i{"use strict";var gZ=Pt().arrayReplaceAt;function mZ(e){return/^\s]/i.test(e)}function yZ(e){return/^<\/a\s*>/i.test(e)}aM.exports=function(t){var r,n,i,o,s,l,d,h,v,y,b,D,_,k,T,S,m=t.tokens,w;if(!!t.md.options.linkify){for(n=0,i=m.length;n=0;r--){if(l=o[r],l.type==="link_close"){for(r--;o[r].level!==l.level&&o[r].type!=="link_open";)r--;continue}if(l.type==="html_inline"&&(mZ(l.content)&&_>0&&_--,yZ(l.content)&&_++),!(_>0)&&l.type==="text"&&t.md.linkify.test(l.content)){for(v=l.content,w=t.md.linkify.match(v),d=[],D=l.level,b=0,h=0;hb&&(s=new t.Token("text","",0),s.content=v.slice(b,y),s.level=D,d.push(s)),s=new t.Token("link_open","a",1),s.attrs=[["href",T]],s.level=D++,s.markup="linkify",s.info="auto",d.push(s),s=new t.Token("text","",0),s.content=S,s.level=D,d.push(s),s=new t.Token("link_close","a",-1),s.level=--D,s.markup="linkify",s.info="auto",d.push(s),b=w[h].lastIndex);b{"use strict";var uM=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,bZ=/\((c|tm|r|p)\)/i,TZ=/\((c|tm|r|p)\)/ig,_Z={c:"\xA9",r:"\xAE",p:"\xA7",tm:"\u2122"};function EZ(e,t){return _Z[t.toLowerCase()]}function SZ(e){var t,r,n=0;for(t=e.length-1;t>=0;t--)r=e[t],r.type==="text"&&!n&&(r.content=r.content.replace(TZ,EZ)),r.type==="link_open"&&r.info==="auto"&&n--,r.type==="link_close"&&r.info==="auto"&&n++}function kZ(e){var t,r,n=0;for(t=e.length-1;t>=0;t--)r=e[t],r.type==="text"&&!n&&uM.test(r.content)&&(r.content=r.content.replace(/\+-/g,"\xB1").replace(/\.{2,}/g,"\u2026").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/mg,"$1\u2014").replace(/(^|\s)--(?=\s|$)/mg,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg,"$1\u2013")),r.type==="link_open"&&r.info==="auto"&&n--,r.type==="link_close"&&r.info==="auto"&&n++}sM.exports=function(t){var r;if(!!t.md.options.typographer)for(r=t.tokens.length-1;r>=0;r--)t.tokens[r].type==="inline"&&(bZ.test(t.tokens[r].content)&&SZ(t.tokens[r].children),uM.test(t.tokens[r].content)&&kZ(t.tokens[r].children))}});var gM=G((Zse,vM)=>{"use strict";var cM=Pt().isWhiteSpace,fM=Pt().isPunctChar,dM=Pt().isMdAsciiPunct,OZ=/['"]/,pM=/['"]/g,hM="\u2019";function Wm(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}function wZ(e,t){var r,n,i,o,s,l,d,h,v,y,b,D,_,k,T,S,m,w,x,L,O;for(x=[],r=0;r=0&&!(x[m].level<=d);m--);if(x.length=m+1,n.type!=="text")continue;i=n.content,s=0,l=i.length;e:for(;s=0)v=i.charCodeAt(o.index-1);else for(m=r-1;m>=0&&!(e[m].type==="softbreak"||e[m].type==="hardbreak");m--)if(!!e[m].content){v=e[m].content.charCodeAt(e[m].content.length-1);break}if(y=32,s=48&&v<=57&&(S=T=!1),T&&S&&(T=b,S=D),!T&&!S){w&&(n.content=Wm(n.content,o.index,hM));continue}if(S){for(m=x.length-1;m>=0&&(h=x[m],!(x[m].level=0;r--)t.tokens[r].type!=="inline"||!OZ.test(t.tokens[r].content)||wZ(t.tokens[r].children,t)}});var Ym=G(($se,mM)=>{"use strict";function Rc(e,t,r){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=r,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}Rc.prototype.attrIndex=function(t){var r,n,i;if(!this.attrs)return-1;for(r=this.attrs,n=0,i=r.length;n=0&&(n=this.attrs[r][1]),n};Rc.prototype.attrJoin=function(t,r){var n=this.attrIndex(t);n<0?this.attrPush([t,r]):this.attrs[n][1]=this.attrs[n][1]+" "+r};mM.exports=Rc});var TM=G((ele,bM)=>{"use strict";var NZ=Ym();function yM(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=t}yM.prototype.Token=NZ;bM.exports=yM});var EM=G((tle,_M)=>{"use strict";var DZ=zm(),fO=[["normalize",eM()],["block",rM()],["inline",iM()],["linkify",oM()],["replacements",lM()],["smartquotes",gM()]];function dO(){this.ruler=new DZ;for(var e=0;e{"use strict";var pO=Pt().isSpace;function hO(e,t){var r=e.bMarks[t]+e.tShift[t],n=e.eMarks[t];return e.src.substr(r,n-r)}function SM(e){var t=[],r=0,n=e.length,i,o=!1,s=0,l="";for(i=e.charCodeAt(r);rn||(v=r+1,t.sCount[v]=4||(l=t.bMarks[v]+t.tShift[v],l>=t.eMarks[v])||(L=t.src.charCodeAt(l++),L!==124&&L!==45&&L!==58)||l>=t.eMarks[v]||(O=t.src.charCodeAt(l++),O!==124&&O!==45&&O!==58&&!pO(O))||L===45&&pO(O))return!1;for(;l=4||(y=SM(s),y.length&&y[0]===""&&y.shift(),y.length&&y[y.length-1]===""&&y.pop(),b=y.length,b===0||b!==_.length))return!1;if(i)return!0;for(m=t.parentType,t.parentType="table",x=t.md.block.ruler.getRules("blockquote"),D=t.push("table_open","table",1),D.map=T=[r,0],D=t.push("thead_open","thead",1),D.map=[r,r+1],D=t.push("tr_open","tr",1),D.map=[r,r+1],d=0;d=4)break;for(y=SM(s),y.length&&y[0]===""&&y.shift(),y.length&&y[y.length-1]===""&&y.pop(),v===r+2&&(D=t.push("tbody_open","tbody",1),D.map=S=[r+2,0]),D=t.push("tr_open","tr",1),D.map=[v,v+1],d=0;d{"use strict";wM.exports=function(t,r,n){var i,o,s;if(t.sCount[r]-t.blkIndent<4)return!1;for(o=i=r+1;i=4){i++,o=i;continue}break}return t.line=o,s=t.push("code_block","code",0),s.content=t.getLines(r,o,4+t.blkIndent,!1)+` -`,s.map=[r,t.line],!0}});var xM=G((ile,DM)=>{"use strict";DM.exports=function(t,r,n,i){var o,s,l,d,h,v,y,b=!1,D=t.bMarks[r]+t.tShift[r],_=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||D+3>_||(o=t.src.charCodeAt(D),o!==126&&o!==96)||(h=D,D=t.skipChars(D,o),s=D-h,s<3)||(y=t.src.slice(h,D),l=t.src.slice(D,_),o===96&&l.indexOf(String.fromCharCode(o))>=0))return!1;if(i)return!0;for(d=r;d++,!(d>=n||(D=h=t.bMarks[d]+t.tShift[d],_=t.eMarks[d],D<_&&t.sCount[d]=4)&&(D=t.skipChars(D,o),!(D-h{"use strict";var CM=Pt().isSpace;LM.exports=function(t,r,n,i){var o,s,l,d,h,v,y,b,D,_,k,T,S,m,w,x,L,O,R,M,q=t.lineMax,z=t.bMarks[r]+t.tShift[r],B=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||t.src.charCodeAt(z++)!==62)return!1;if(i)return!0;for(d=D=t.sCount[r]+1,t.src.charCodeAt(z)===32?(z++,d++,D++,o=!1,x=!0):t.src.charCodeAt(z)===9?(x=!0,(t.bsCount[r]+D)%4==3?(z++,d++,D++,o=!1):o=!0):x=!1,_=[t.bMarks[r]],t.bMarks[r]=z;z=B,m=[t.sCount[r]],t.sCount[r]=D-d,w=[t.tShift[r]],t.tShift[r]=z-t.bMarks[r],O=t.md.block.ruler.getRules("blockquote"),S=t.parentType,t.parentType="blockquote",b=r+1;b=B));b++){if(t.src.charCodeAt(z++)===62&&!M){for(d=D=t.sCount[b]+1,t.src.charCodeAt(z)===32?(z++,d++,D++,o=!1,x=!0):t.src.charCodeAt(z)===9?(x=!0,(t.bsCount[b]+D)%4==3?(z++,d++,D++,o=!1):o=!0):x=!1,_.push(t.bMarks[b]),t.bMarks[b]=z;z=B,k.push(t.bsCount[b]),t.bsCount[b]=t.sCount[b]+1+(x?1:0),m.push(t.sCount[b]),t.sCount[b]=D-d,w.push(t.tShift[b]),t.tShift[b]=z-t.bMarks[b];continue}if(v)break;for(L=!1,l=0,h=O.length;l",R.map=y=[r,0],t.md.block.tokenize(t,r,b),R=t.push("blockquote_close","blockquote",-1),R.markup=">",t.lineMax=q,t.parentType=S,y[1]=t.line,l=0;l{"use strict";var xZ=Pt().isSpace;AM.exports=function(t,r,n,i){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||(o=t.src.charCodeAt(h++),o!==42&&o!==45&&o!==95))return!1;for(s=1;h{"use strict";var jM=Pt().isSpace;function PM(e,t){var r,n,i,o;return n=e.bMarks[t]+e.tShift[t],i=e.eMarks[t],r=e.src.charCodeAt(n++),r!==42&&r!==45&&r!==43||n=o||(r=e.src.charCodeAt(i++),r<48||r>57))return-1;for(;;){if(i>=o)return-1;if(r=e.src.charCodeAt(i++),r>=48&&r<=57){if(i-n>=10)return-1;continue}if(r===41||r===46)break;return-1}return i=4||t.listIndent>=0&&t.sCount[r]-t.listIndent>=4&&t.sCount[r]=t.blkIndent&&(Fe=!0),(B=FM(t,r))>=0){if(y=!0,P=t.bMarks[r]+t.tShift[r],S=Number(t.src.slice(P,B-1)),Fe&&S!==1)return!1}else if((B=PM(t,r))>=0)y=!1;else return!1;if(Fe&&t.skipSpaces(B)>=t.eMarks[r])return!1;if(T=t.src.charCodeAt(B-1),i)return!0;for(k=t.tokens.length,y?(ge=t.push("ordered_list_open","ol",1),S!==1&&(ge.attrs=[["start",S]])):ge=t.push("bullet_list_open","ul",1),ge.map=_=[r,0],ge.markup=String.fromCharCode(T),w=r,Q=!1,xe=t.md.block.ruler.getRules("list"),O=t.parentType,t.parentType="list";w=m?h=1:h=x-v,h>4&&(h=1),d=v+h,ge=t.push("list_item_open","li",1),ge.markup=String.fromCharCode(T),ge.map=b=[r,0],y&&(ge.info=t.src.slice(P,B-1)),q=t.tight,M=t.tShift[r],R=t.sCount[r],L=t.listIndent,t.listIndent=t.blkIndent,t.blkIndent=d,t.tight=!0,t.tShift[r]=s-t.bMarks[r],t.sCount[r]=x,s>=m&&t.isEmpty(r+1)?t.line=Math.min(t.line+2,n):t.md.block.tokenize(t,r,n,!0),(!t.tight||Q)&&(Le=!1),Q=t.line-r>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=L,t.tShift[r]=M,t.sCount[r]=R,t.tight=q,ge=t.push("list_item_close","li",-1),ge.markup=String.fromCharCode(T),w=r=t.line,b[1]=w,s=t.bMarks[r],w>=n||t.sCount[w]=4)break;for(he=!1,l=0,D=xe.length;l{"use strict";var LZ=Pt().normalizeReference,Jm=Pt().isSpace;VM.exports=function(t,r,n,i){var o,s,l,d,h,v,y,b,D,_,k,T,S,m,w,x,L=0,O=t.bMarks[r]+t.tShift[r],R=t.eMarks[r],M=r+1;if(t.sCount[r]-t.blkIndent>=4||t.src.charCodeAt(O)!==91)return!1;for(;++O3)&&!(t.sCount[M]<0)){for(m=!1,v=0,y=w.length;v{"use strict";GM.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]});var gO=G((cle,vO)=>{"use strict";var IZ="[a-zA-Z_:][a-zA-Z0-9:._-]*",AZ="[^\"'=<>`\\x00-\\x20]+",RZ="'[^']*'",jZ='"[^"]*"',PZ="(?:"+AZ+"|"+RZ+"|"+jZ+")",FZ="(?:\\s+"+IZ+"(?:\\s*=\\s*"+PZ+")?)",BM="<[A-Za-z][A-Za-z0-9\\-]*"+FZ+"*\\s*\\/?>",KM="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",MZ="|",qZ="<[?][\\s\\S]*?[?]>",VZ="]*>",UZ="",GZ=new RegExp("^(?:"+BM+"|"+KM+"|"+MZ+"|"+qZ+"|"+VZ+"|"+UZ+")"),QZ=new RegExp("^(?:"+BM+"|"+KM+")");vO.exports.HTML_TAG_RE=GZ;vO.exports.HTML_OPEN_CLOSE_TAG_RE=QZ});var zM=G((fle,HM)=>{"use strict";var BZ=QM(),KZ=gO().HTML_OPEN_CLOSE_TAG_RE,jc=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(KZ.source+"\\s*$"),/^$/,!1]];HM.exports=function(t,r,n,i){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||!t.md.options.html||t.src.charCodeAt(h)!==60)return!1;for(d=t.src.slice(h,v),o=0;o{"use strict";var WM=Pt().isSpace;YM.exports=function(t,r,n,i){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||(o=t.src.charCodeAt(h),o!==35||h>=v))return!1;for(s=1,o=t.src.charCodeAt(++h);o===35&&h6||hh&&WM(t.src.charCodeAt(l-1))&&(v=l),t.line=r+1,d=t.push("heading_open","h"+String(s),1),d.markup="########".slice(0,s),d.map=[r,t.line],d=t.push("inline","",0),d.content=t.src.slice(h,v).trim(),d.map=[r,t.line],d.children=[],d=t.push("heading_close","h"+String(s),-1),d.markup="########".slice(0,s)),!0)}});var ZM=G((ple,XM)=>{"use strict";XM.exports=function(t,r,n){var i,o,s,l,d,h,v,y,b,D=r+1,_,k=t.md.block.ruler.getRules("paragraph");if(t.sCount[r]-t.blkIndent>=4)return!1;for(_=t.parentType,t.parentType="paragraph";D3)){if(t.sCount[D]>=t.blkIndent&&(h=t.bMarks[D]+t.tShift[D],v=t.eMarks[D],h=v)))){y=b===61?1:2;break}if(!(t.sCount[D]<0)){for(o=!1,s=0,l=k.length;s{"use strict";$M.exports=function(t,r){var n,i,o,s,l,d,h=r+1,v=t.md.block.ruler.getRules("paragraph"),y=t.lineMax;for(d=t.parentType,t.parentType="paragraph";h3)&&!(t.sCount[h]<0)){for(i=!1,o=0,s=v.length;o{"use strict";var tq=Ym(),Xm=Pt().isSpace;function Ya(e,t,r,n){var i,o,s,l,d,h,v,y;for(this.src=e,this.md=t,this.env=r,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0,this.result="",o=this.src,y=!1,s=l=h=v=0,d=o.length;l0&&this.level++,this.tokens.push(n),n};Ya.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]};Ya.prototype.skipEmptyLines=function(t){for(var r=this.lineMax;tr;)if(!Xm(this.src.charCodeAt(--t)))return t+1;return t};Ya.prototype.skipChars=function(t,r){for(var n=this.src.length;tn;)if(r!==this.src.charCodeAt(--t))return t+1;return t};Ya.prototype.getLines=function(t,r,n,i){var o,s,l,d,h,v,y,b=t;if(t>=r)return"";for(v=new Array(r-t),o=0;bn?v[o]=new Array(s-n+1).join(" ")+this.src.slice(d,h):v[o]=this.src.slice(d,h)}return v.join("")};Ya.prototype.Token=tq;rq.exports=Ya});var aq=G((gle,iq)=>{"use strict";var HZ=zm(),Zm=[["table",OM(),["paragraph","reference"]],["code",NM()],["fence",xM(),["paragraph","reference","blockquote","list"]],["blockquote",IM(),["paragraph","reference","blockquote","list"]],["hr",RM(),["paragraph","reference","blockquote","list"]],["list",qM(),["paragraph","reference","blockquote"]],["reference",UM()],["html_block",zM(),["paragraph","reference","blockquote"]],["heading",JM(),["paragraph","reference","blockquote"]],["lheading",ZM()],["paragraph",eq()]];function $m(){this.ruler=new HZ;for(var e=0;e=r||e.sCount[l]=h){e.line=r;break}for(i=0;i{"use strict";function zZ(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}oq.exports=function(t,r){for(var n=t.pos;n{"use strict";var WZ=Pt().isSpace;sq.exports=function(t,r){var n,i,o,s=t.pos;if(t.src.charCodeAt(s)!==10)return!1;if(n=t.pending.length-1,i=t.posMax,!r)if(n>=0&&t.pending.charCodeAt(n)===32)if(n>=1&&t.pending.charCodeAt(n-1)===32){for(o=n-1;o>=1&&t.pending.charCodeAt(o-1)===32;)o--;t.pending=t.pending.slice(0,o),t.push("hardbreak","br",0)}else t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0);else t.push("softbreak","br",0);for(s++;s{"use strict";var YZ=Pt().isSpace,mO=[];for(yO=0;yO<256;yO++)mO.push(0);var yO;"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e){mO[e.charCodeAt(0)]=1});cq.exports=function(t,r){var n,i=t.pos,o=t.posMax;if(t.src.charCodeAt(i)!==92)return!1;if(i++,i{"use strict";dq.exports=function(t,r){var n,i,o,s,l,d,h,v,y=t.pos,b=t.src.charCodeAt(y);if(b!==96)return!1;for(n=y,y++,i=t.posMax;y{"use strict";bO.exports.tokenize=function(t,r){var n,i,o,s,l,d=t.pos,h=t.src.charCodeAt(d);if(r||h!==126||(i=t.scanDelims(t.pos,!0),s=i.length,l=String.fromCharCode(h),s<2))return!1;for(s%2&&(o=t.push("text","",0),o.content=l,s--),n=0;n{"use strict";_O.exports.tokenize=function(t,r){var n,i,o,s=t.pos,l=t.src.charCodeAt(s);if(r||l!==95&&l!==42)return!1;for(i=t.scanDelims(t.pos,l===42),n=0;n=0;r--)n=t[r],!(n.marker!==95&&n.marker!==42)&&n.end!==-1&&(i=t[n.end],l=r>0&&t[r-1].end===n.end+1&&t[r-1].marker===n.marker&&t[r-1].token===n.token-1&&t[n.end+1].token===i.token+1,s=String.fromCharCode(n.marker),o=e.tokens[n.token],o.type=l?"strong_open":"em_open",o.tag=l?"strong":"em",o.nesting=1,o.markup=l?s+s:s,o.content="",o=e.tokens[i.token],o.type=l?"strong_close":"em_close",o.tag=l?"strong":"em",o.nesting=-1,o.markup=l?s+s:s,o.content="",l&&(e.tokens[t[r-1].token].content="",e.tokens[t[n.end+1].token].content="",r--))}_O.exports.postProcess=function(t){var r,n=t.tokens_meta,i=t.tokens_meta.length;for(vq(t,t.delimiters),r=0;r{"use strict";var JZ=Pt().normalizeReference,SO=Pt().isSpace;gq.exports=function(t,r){var n,i,o,s,l,d,h,v,y,b="",D="",_=t.pos,k=t.posMax,T=t.pos,S=!0;if(t.src.charCodeAt(t.pos)!==91||(l=t.pos+1,s=t.md.helpers.parseLinkLabel(t,t.pos,!0),s<0))return!1;if(d=s+1,d=k)return!1;if(T=d,h=t.md.helpers.parseLinkDestination(t.src,d,t.posMax),h.ok){for(b=t.md.normalizeLink(h.str),t.md.validateLink(b)?d=h.pos:b="",T=d;d=k||t.src.charCodeAt(d)!==41)&&(S=!0),d++}if(S){if(typeof t.env.references=="undefined")return!1;if(d=0?o=t.src.slice(T,d++):d=s+1):d=s+1,o||(o=t.src.slice(l,s)),v=t.env.references[JZ(o)],!v)return t.pos=_,!1;b=v.href,D=v.title}return r||(t.pos=l,t.posMax=s,y=t.push("link_open","a",1),y.attrs=n=[["href",b]],D&&n.push(["title",D]),t.md.inline.tokenize(t),y=t.push("link_close","a",-1)),t.pos=d,t.posMax=k,!0}});var bq=G((kle,yq)=>{"use strict";var XZ=Pt().normalizeReference,kO=Pt().isSpace;yq.exports=function(t,r){var n,i,o,s,l,d,h,v,y,b,D,_,k,T="",S=t.pos,m=t.posMax;if(t.src.charCodeAt(t.pos)!==33||t.src.charCodeAt(t.pos+1)!==91||(d=t.pos+2,l=t.md.helpers.parseLinkLabel(t,t.pos+1,!1),l<0))return!1;if(h=l+1,h=m)return!1;for(k=h,y=t.md.helpers.parseLinkDestination(t.src,h,t.posMax),y.ok&&(T=t.md.normalizeLink(y.str),t.md.validateLink(T)?h=y.pos:T=""),k=h;h=m||t.src.charCodeAt(h)!==41)return t.pos=S,!1;h++}else{if(typeof t.env.references=="undefined")return!1;if(h=0?s=t.src.slice(k,h++):h=l+1):h=l+1,s||(s=t.src.slice(d,l)),v=t.env.references[XZ(s)],!v)return t.pos=S,!1;T=v.href,b=v.title}return r||(o=t.src.slice(d,l),t.md.inline.parse(o,t.md,t.env,_=[]),D=t.push("image","img",0),D.attrs=n=[["src",T],["alt",""]],D.children=_,D.content=o,b&&n.push(["title",b])),t.pos=h,t.posMax=m,!0}});var _q=G((Ole,Tq)=>{"use strict";var ZZ=/^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,$Z=/^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/;Tq.exports=function(t,r){var n,i,o,s,l,d,h=t.pos;if(t.src.charCodeAt(h)!==60)return!1;for(l=t.pos,d=t.posMax;;){if(++h>=d||(s=t.src.charCodeAt(h),s===60))return!1;if(s===62)break}return n=t.src.slice(l+1,h),$Z.test(n)?(i=t.md.normalizeLink(n),t.md.validateLink(i)?(r||(o=t.push("link_open","a",1),o.attrs=[["href",i]],o.markup="autolink",o.info="auto",o=t.push("text","",0),o.content=t.md.normalizeLinkText(n),o=t.push("link_close","a",-1),o.markup="autolink",o.info="auto"),t.pos+=n.length+2,!0):!1):ZZ.test(n)?(i=t.md.normalizeLink("mailto:"+n),t.md.validateLink(i)?(r||(o=t.push("link_open","a",1),o.attrs=[["href",i]],o.markup="autolink",o.info="auto",o=t.push("text","",0),o.content=t.md.normalizeLinkText(n),o=t.push("link_close","a",-1),o.markup="autolink",o.info="auto"),t.pos+=n.length+2,!0):!1):!1}});var Sq=G((wle,Eq)=>{"use strict";var e$=gO().HTML_TAG_RE;function t$(e){var t=e|32;return t>=97&&t<=122}Eq.exports=function(t,r){var n,i,o,s,l=t.pos;return!t.md.options.html||(o=t.posMax,t.src.charCodeAt(l)!==60||l+2>=o)||(n=t.src.charCodeAt(l+1),n!==33&&n!==63&&n!==47&&!t$(n))||(i=t.src.slice(l).match(e$),!i)?!1:(r||(s=t.push("html_inline","",0),s.content=t.src.slice(l,l+i[0].length)),t.pos+=i[0].length,!0)}});var Nq=G((Nle,wq)=>{"use strict";var kq=oO(),r$=Pt().has,n$=Pt().isValidEntityCode,Oq=Pt().fromCodePoint,i$=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,a$=/^&([a-z][a-z0-9]{1,31});/i;wq.exports=function(t,r){var n,i,o,s=t.pos,l=t.posMax;if(t.src.charCodeAt(s)!==38)return!1;if(s+1{"use strict";function Dq(e,t){var r,n,i,o,s,l,d,h,v={},y=t.length;if(!!y){var b=0,D=-2,_=[];for(r=0;rs;n-=_[n]+1)if(o=t[n],o.marker===i.marker&&o.open&&o.end<0&&(d=!1,(o.close||i.open)&&(o.length+i.length)%3==0&&(o.length%3!=0||i.length%3!=0)&&(d=!0),!d)){h=n>0&&!t[n-1].open?_[n-1]+1:0,_[r]=r-n+h,_[n]=h,i.open=!1,o.end=r,o.close=!1,l=-1,D=-2;break}l!==-1&&(v[i.marker][(i.open?3:0)+(i.length||0)%3]=l)}}}xq.exports=function(t){var r,n=t.tokens_meta,i=t.tokens_meta.length;for(Dq(t,t.delimiters),r=0;r{"use strict";Lq.exports=function(t){var r,n,i=0,o=t.tokens,s=t.tokens.length;for(r=n=0;r0&&i++,o[r].type==="text"&&r+1{"use strict";var OO=Ym(),Aq=Pt().isWhiteSpace,Rq=Pt().isPunctChar,jq=Pt().isMdAsciiPunct;function jp(e,t,r,n){this.src=e,this.env=r,this.md=t,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1}jp.prototype.pushPending=function(){var e=new OO("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e};jp.prototype.push=function(e,t,r){this.pending&&this.pushPending();var n=new OO(e,t,r),i=null;return r<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),n.level=this.level,r>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(i),n};jp.prototype.scanDelims=function(e,t){var r=e,n,i,o,s,l,d,h,v,y,b=!0,D=!0,_=this.posMax,k=this.src.charCodeAt(e);for(n=e>0?this.src.charCodeAt(e-1):32;r<_&&this.src.charCodeAt(r)===k;)r++;return o=r-e,i=r<_?this.src.charCodeAt(r):32,h=jq(n)||Rq(String.fromCharCode(n)),y=jq(i)||Rq(String.fromCharCode(i)),d=Aq(n),v=Aq(i),v?b=!1:y&&(d||h||(b=!1)),d?D=!1:h&&(v||y||(D=!1)),t?(s=b,l=D):(s=b&&(!D||h),l=D&&(!b||y)),{can_open:s,can_close:l,length:o}};jp.prototype.Token=OO;Pq.exports=jp});var Vq=G((Lle,qq)=>{"use strict";var Mq=zm(),wO=[["text",uq()],["newline",lq()],["escape",fq()],["backticks",pq()],["strikethrough",TO().tokenize],["emphasis",EO().tokenize],["link",mq()],["image",bq()],["autolink",_q()],["html_inline",Sq()],["entity",Nq()]],NO=[["balance_pairs",Cq()],["strikethrough",TO().postProcess],["emphasis",EO().postProcess],["text_collapse",Iq()]];function Pp(){var e;for(this.ruler=new Mq,e=0;e=o)break;continue}e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()};Pp.prototype.parse=function(e,t,r,n){var i,o,s,l=new this.State(e,t,r,n);for(this.tokenize(l),o=this.ruler2.getRules(""),s=o.length,i=0;i{"use strict";Uq.exports=function(e){var t={};t.src_Any=sO().source,t.src_Cc=lO().source,t.src_Z=cO().source,t.src_P=Gm().source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");var r="[><\uFF5C]";return t.src_pseudo_letter="(?:(?!"+r+"|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|"+r+"|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+r+`|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!`+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+`|["]).)+\\"|\\'(?:(?!`+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]).|"+(e&&e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+").|;(?!"+t.src_ZCc+").|\\!+(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy="(^|"+r+'|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|"+t.src_ZPCc+"))((?![$+<=>^`|\uFF5C])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|"+t.src_ZPCc+"))((?![$+<=>^`|\uFF5C])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}});var Wq=G((Ale,zq)=>{"use strict";function DO(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach(function(r){!r||Object.keys(r).forEach(function(n){e[n]=r[n]})}),e}function ey(e){return Object.prototype.toString.call(e)}function o$(e){return ey(e)==="[object String]"}function u$(e){return ey(e)==="[object Object]"}function s$(e){return ey(e)==="[object RegExp]"}function Qq(e){return ey(e)==="[object Function]"}function l$(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var Bq={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};function c$(e){return Object.keys(e||{}).reduce(function(t,r){return t||Bq.hasOwnProperty(r)},!1)}var f$={"http:":{validate:function(e,t,r){var n=e.slice(t);return r.re.http||(r.re.http=new RegExp("^\\/\\/"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,"i")),r.re.http.test(n)?n.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,t,r){var n=e.slice(t);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+"(?:localhost|(?:(?:"+r.re.src_domain+")\\.)+"+r.re.src_domain_root+")"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),r.re.no_http.test(n)?t>=3&&e[t-3]===":"||t>=3&&e[t-3]==="/"?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,r){var n=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},d$="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",p$="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function h$(e){e.__index__=-1,e.__text_cache__=""}function v$(e){return function(t,r){var n=t.slice(r);return e.test(n)?n.match(e)[0].length:0}}function Kq(){return function(e,t){t.normalize(e)}}function ty(e){var t=e.re=Gq()(e.__opts__),r=e.__tlds__.slice();e.onCompile(),e.__tlds_replaced__||r.push(d$),r.push(t.src_xn),t.src_tlds=r.join("|");function n(l){return l.replace("%TLDS%",t.src_tlds)}t.email_fuzzy=RegExp(n(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(n(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(n(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(n(t.tpl_host_fuzzy_test),"i");var i=[];e.__compiled__={};function o(l,d){throw new Error('(LinkifyIt) Invalid schema "'+l+'": '+d)}Object.keys(e.__schemas__).forEach(function(l){var d=e.__schemas__[l];if(d!==null){var h={validate:null,link:null};if(e.__compiled__[l]=h,u$(d)){s$(d.validate)?h.validate=v$(d.validate):Qq(d.validate)?h.validate=d.validate:o(l,d),Qq(d.normalize)?h.normalize=d.normalize:d.normalize?o(l,d):h.normalize=Kq();return}if(o$(d)){i.push(l);return}o(l,d)}}),i.forEach(function(l){!e.__compiled__[e.__schemas__[l]]||(e.__compiled__[l].validate=e.__compiled__[e.__schemas__[l]].validate,e.__compiled__[l].normalize=e.__compiled__[e.__schemas__[l]].normalize)}),e.__compiled__[""]={validate:null,normalize:Kq()};var s=Object.keys(e.__compiled__).filter(function(l){return l.length>0&&e.__compiled__[l]}).map(l$).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><\uFF5C]|"+t.src_ZPCc+"))("+s+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><\uFF5C]|"+t.src_ZPCc+"))("+s+")","ig"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),h$(e)}function g$(e,t){var r=e.__index__,n=e.__last_index__,i=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=i,this.text=i,this.url=i}function Hq(e,t){var r=new g$(e,t);return e.__compiled__[r.schema].normalize(r,e),r}function Zi(e,t){if(!(this instanceof Zi))return new Zi(e,t);t||c$(e)&&(t=e,e={}),this.__opts__=DO({},Bq,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=DO({},f$,e),this.__compiled__={},this.__tlds__=p$,this.__tlds_replaced__=!1,this.re={},ty(this)}Zi.prototype.add=function(t,r){return this.__schemas__[t]=r,ty(this),this};Zi.prototype.set=function(t){return this.__opts__=DO(this.__opts__,t),this};Zi.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;var r,n,i,o,s,l,d,h,v;if(this.re.schema_test.test(t)){for(d=this.re.schema_search,d.lastIndex=0;(r=d.exec(t))!==null;)if(o=this.testSchemaAt(t,r[2],d.lastIndex),o){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+o;break}}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(h=t.search(this.re.host_fuzzy_test),h>=0&&(this.__index__<0||h=0&&(i=t.match(this.re.email_fuzzy))!==null&&(s=i.index+i[1].length,l=i.index+i[0].length,(this.__index__<0||sthis.__last_index__)&&(this.__schema__="mailto:",this.__index__=s,this.__last_index__=l))),this.__index__>=0};Zi.prototype.pretest=function(t){return this.re.pretest.test(t)};Zi.prototype.testSchemaAt=function(t,r,n){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(t,n,this):0};Zi.prototype.match=function(t){var r=0,n=[];this.__index__>=0&&this.__text_cache__===t&&(n.push(Hq(this,r)),r=this.__last_index__);for(var i=r?t.slice(r):t;this.test(i);)n.push(Hq(this,r)),i=i.slice(this.__last_index__),r+=this.__last_index__;return n.length?n:null};Zi.prototype.tlds=function(t,r){return t=Array.isArray(t)?t:[t],r?(this.__tlds__=this.__tlds__.concat(t).sort().filter(function(n,i,o){return n!==o[i-1]}).reverse(),ty(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,ty(this),this)};Zi.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),t.schema==="mailto:"&&!/^mailto:/i.test(t.url)&&(t.url="mailto:"+t.url)};Zi.prototype.onCompile=function(){};zq.exports=Zi});var aV=G((Rle,iV)=>{"use strict";var Pc=2147483647,Ja=36,xO=1,Fp=26,m$=38,y$=700,Yq=72,Jq=128,Xq="-",b$=/^xn--/,T$=/[^\0-\x7E]/,_$=/[\x2E\u3002\uFF0E\uFF61]/g,E$={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},CO=Ja-xO,Xa=Math.floor,LO=String.fromCharCode;function Ms(e){throw new RangeError(E$[e])}function S$(e,t){let r=[],n=e.length;for(;n--;)r[n]=t(e[n]);return r}function Zq(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]),e=e.replace(_$,".");let i=e.split("."),o=S$(i,t).join(".");return n+o}function $q(e){let t=[],r=0,n=e.length;for(;r=55296&&i<=56319&&rString.fromCodePoint(...e),O$=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:Ja},eV=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},tV=function(e,t,r){let n=0;for(e=r?Xa(e/y$):e>>1,e+=Xa(e/t);e>CO*Fp>>1;n+=Ja)e=Xa(e/CO);return Xa(n+(CO+1)*e/(e+m$))},rV=function(e){let t=[],r=e.length,n=0,i=Jq,o=Yq,s=e.lastIndexOf(Xq);s<0&&(s=0);for(let l=0;l=128&&Ms("not-basic"),t.push(e.charCodeAt(l));for(let l=s>0?s+1:0;l=r&&Ms("invalid-input");let b=O$(e.charCodeAt(l++));(b>=Ja||b>Xa((Pc-n)/v))&&Ms("overflow"),n+=b*v;let D=y<=o?xO:y>=o+Fp?Fp:y-o;if(bXa(Pc/_)&&Ms("overflow"),v*=_}let h=t.length+1;o=tV(n-d,h,d==0),Xa(n/h)>Pc-i&&Ms("overflow"),i+=Xa(n/h),n%=h,t.splice(n++,0,i)}return String.fromCodePoint(...t)},nV=function(e){let t=[];e=$q(e);let r=e.length,n=Jq,i=0,o=Yq;for(let d of e)d<128&&t.push(LO(d));let s=t.length,l=s;for(s&&t.push(Xq);l=n&&vXa((Pc-i)/h)&&Ms("overflow"),i+=(d-n)*h,n=d;for(let v of e)if(vPc&&Ms("overflow"),v==n){let y=i;for(let b=Ja;;b+=Ja){let D=b<=o?xO:b>=o+Fp?Fp:b-o;if(y{"use strict";oV.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}});var lV=G((Ple,sV)=>{"use strict";sV.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}});var fV=G((Fle,cV)=>{"use strict";cV.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}});var vV=G((Mle,hV)=>{"use strict";var Mp=Pt(),x$=YF(),C$=XF(),L$=EM(),I$=aq(),A$=Vq(),R$=Wq(),qs=uO(),dV=aV(),j$={default:uV(),zero:lV(),commonmark:fV()},P$=/^(vbscript|javascript|file|data):/,F$=/^data:image\/(gif|png|jpeg|webp);/;function M$(e){var t=e.trim().toLowerCase();return P$.test(t)?!!F$.test(t):!0}var pV=["http:","https:","mailto:"];function q$(e){var t=qs.parse(e,!0);if(t.hostname&&(!t.protocol||pV.indexOf(t.protocol)>=0))try{t.hostname=dV.toASCII(t.hostname)}catch(r){}return qs.encode(qs.format(t))}function V$(e){var t=qs.parse(e,!0);if(t.hostname&&(!t.protocol||pV.indexOf(t.protocol)>=0))try{t.hostname=dV.toUnicode(t.hostname)}catch(r){}return qs.decode(qs.format(t),qs.decode.defaultChars+"%")}function $i(e,t){if(!(this instanceof $i))return new $i(e,t);t||Mp.isString(e)||(t=e||{},e="default"),this.inline=new A$,this.block=new I$,this.core=new L$,this.renderer=new C$,this.linkify=new R$,this.validateLink=M$,this.normalizeLink=q$,this.normalizeLinkText=V$,this.utils=Mp,this.helpers=Mp.assign({},x$),this.options={},this.configure(e),t&&this.set(t)}$i.prototype.set=function(e){return Mp.assign(this.options,e),this};$i.prototype.configure=function(e){var t=this,r;if(Mp.isString(e)&&(r=e,e=j$[r],!e))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(n){e.components[n].rules&&t[n].ruler.enableOnly(e.components[n].rules),e.components[n].rules2&&t[n].ruler2.enableOnly(e.components[n].rules2)}),this};$i.prototype.enable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(i){r=r.concat(this[i].ruler.enable(e,!0))},this),r=r.concat(this.inline.ruler2.enable(e,!0));var n=e.filter(function(i){return r.indexOf(i)<0});if(n.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this};$i.prototype.disable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(i){r=r.concat(this[i].ruler.disable(e,!0))},this),r=r.concat(this.inline.ruler2.disable(e,!0));var n=e.filter(function(i){return r.indexOf(i)<0});if(n.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this};$i.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this};$i.prototype.parse=function(e,t){if(typeof e!="string")throw new Error("Input data should be a String");var r=new this.core.State(e,this,t);return this.core.process(r),r.tokens};$i.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)};$i.prototype.parseInline=function(e,t){var r=new this.core.State(e,this,t);return r.inlineMode=!0,this.core.process(r),r.tokens};$i.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};hV.exports=$i});var ry=G((qle,gV)=>{"use strict";gV.exports=vV()});var bV=G((Ule,yV)=>{"use strict";var Q$=/["'&<>]/;yV.exports=B$;function B$(e){var t=""+e,r=Q$.exec(t);if(!r)return t;var n,i="",o=0,s=0;for(o=r.index;o{(function(e,t){typeof IO=="object"&&typeof AO!="undefined"?AO.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self,e.CodeMirror=t())})(IO,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),s=n||i||o,l=s&&(n?document.documentMode||6:+(o||i)[1]),d=!o&&/WebKit\//.test(e),h=d&&/Qt\/\d+\.\d+/.test(e),v=!o&&/Chrome\/(\d+)/.exec(e),y=v&&+v[1],b=/Opera\//.test(e),D=/Apple Computer/.test(navigator.vendor),_=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),k=/PhantomJS/.test(e),T=D&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),S=/Android/.test(e),m=T||S||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),w=T||/Mac/.test(t),x=/\bCrOS\b/.test(e),L=/win/i.test(t),O=b&&e.match(/Version\/(\d*\.\d*)/);O&&(O=Number(O[1])),O&&O>=15&&(b=!1,d=!0);var R=w&&(h||b&&(O==null||O<12.11)),M=r||s&&l>=9;function q(a){return new RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}var z=function(a,u){var f=a.className,c=q(u).exec(f);if(c){var p=f.slice(c.index+c[0].length);a.className=f.slice(0,c.index)+(p?c[1]+p:"")}};function B(a){for(var u=a.childNodes.length;u>0;--u)a.removeChild(a.firstChild);return a}function Q(a,u){return B(a).appendChild(u)}function P(a,u,f,c){var p=document.createElement(a);if(f&&(p.className=f),c&&(p.style.cssText=c),typeof u=="string")p.appendChild(document.createTextNode(u));else if(u)for(var g=0;g=u)return E+(u-g);E+=N-g,E+=f-E%f,g=N+1}}var ce=function(){this.id=null,this.f=null,this.time=0,this.handler=Ot(this.onTimeout,this)};ce.prototype.onTimeout=function(a){a.id=0,a.time<=+new Date?a.f():setTimeout(a.handler,a.time-+new Date)},ce.prototype.set=function(a,u){this.f=u;var f=+new Date+a;(!this.id||f=u)return c+Math.min(E,u-p);if(p+=g-c,p+=f-p%f,c=g+1,p>=u)return c}}var me=[""];function fe(a){for(;me.length<=a;)me.push(se(me)+" ");return me[a]}function se(a){return a[a.length-1]}function Ue(a,u){for(var f=[],c=0;c"\x80"&&(a.toUpperCase()!=a.toLowerCase()||Dn.test(a))}function dn(a,u){return u?u.source.indexOf("\\w")>-1&&Ei(a)?!0:u.test(a):Ei(a)}function Hn(a){for(var u in a)if(a.hasOwnProperty(u)&&a[u])return!1;return!0}var pn=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function Pi(a){return a.charCodeAt(0)>=768&&pn.test(a)}function Qr(a,u,f){for(;(f<0?u>0:uf?-1:1;;){if(u==f)return u;var p=(u+f)/2,g=c<0?Math.ceil(p):Math.floor(p);if(g==u)return a(g)?u:f;a(g)?f=g:u=g+c}}function hn(a,u,f,c){if(!a)return c(u,f,"ltr",0);for(var p=!1,g=0;gu||u==f&&E.to==u)&&(c(Math.max(E.from,u),Math.min(E.to,f),E.level==1?"rtl":"ltr",g),p=!0)}p||c(u,f,"ltr")}var zn=null;function vr(a,u,f){var c;zn=null;for(var p=0;pu)return p;g.to==u&&(g.from!=g.to&&f=="before"?c=p:zn=p),g.from==u&&(g.from!=g.to&&f!="before"?c=p:zn=p)}return c!=null?c:zn}var Ro=function(){var a="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",u="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function f(I){return I<=247?a.charAt(I):1424<=I&&I<=1524?"R":1536<=I&&I<=1785?u.charAt(I-1536):1774<=I&&I<=2220?"r":8192<=I&&I<=8203?"w":I==8204?"b":"L"}var c=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,p=/[stwN]/,g=/[LRr]/,E=/[Lb1n]/,N=/[1n]/;function C(I,U,K){this.level=I,this.from=U,this.to=K}return function(I,U){var K=U=="ltr"?"L":"R";if(I.length==0||U=="ltr"&&!c.test(I))return!1;for(var $=I.length,X=[],ae=0;ae<$;++ae)X.push(f(I.charCodeAt(ae)));for(var le=0,pe=K;le<$;++le){var be=X[le];be=="m"?X[le]=pe:pe=be}for(var Ne=0,Te=K;Ne<$;++Ne){var Ce=X[Ne];Ce=="1"&&Te=="r"?X[Ne]="n":g.test(Ce)&&(Te=Ce,Ce=="r"&&(X[Ne]="R"))}for(var Ge=1,qe=X[0];Ge<$-1;++Ge){var lt=X[Ge];lt=="+"&&qe=="1"&&X[Ge+1]=="1"?X[Ge]="1":lt==","&&qe==X[Ge+1]&&(qe=="1"||qe=="n")&&(X[Ge]=qe),qe=lt}for(var Ht=0;Ht<$;++Ht){var zr=X[Ht];if(zr==",")X[Ht]="N";else if(zr=="%"){var lr=void 0;for(lr=Ht+1;lr<$&&X[lr]=="%";++lr);for(var li=Ht&&X[Ht-1]=="!"||lr<$&&X[lr]=="1"?"1":"N",Jn=Ht;Jn-1&&(c[u]=p.slice(0,g).concat(p.slice(g+1)))}}}function Ft(a,u){var f=Gu(a,u);if(!!f.length)for(var c=Array.prototype.slice.call(arguments,2),p=0;p0}function un(a){a.prototype.on=function(u,f){_e(this,u,f)},a.prototype.off=function(u,f){Ar(this,u,f)}}function ee(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function F(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function Y(a){return a.defaultPrevented!=null?a.defaultPrevented:a.returnValue==!1}function J(a){ee(a),F(a)}function V(a){return a.target||a.srcElement}function A(a){var u=a.which;return u==null&&(a.button&1?u=1:a.button&2?u=3:a.button&4&&(u=2)),w&&a.ctrlKey&&u==1&&(u=3),u}var re=function(){if(s&&l<9)return!1;var a=P("div");return"draggable"in a||"dragDrop"in a}(),ue;function Ze(a){if(ue==null){var u=P("span","\u200B");Q(a,P("span",[u,document.createTextNode("x")])),a.firstChild.offsetHeight!=0&&(ue=u.offsetWidth<=1&&u.offsetHeight>2&&!(s&&l<8))}var f=ue?P("span","\u200B"):P("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return f.setAttribute("cm-text",""),f}var Ut;function Rt(a){if(Ut!=null)return Ut;var u=Q(a,document.createTextNode("A\u062EA")),f=xe(u,0,1).getBoundingClientRect(),c=xe(u,1,2).getBoundingClientRect();return B(a),!f||f.left==f.right?!1:Ut=c.right-f.right<3}var vn=` - -b`.split(/\n/).length!=3?function(a){for(var u=0,f=[],c=a.length;u<=c;){var p=a.indexOf(` -`,u);p==-1&&(p=a.length);var g=a.slice(u,a.charAt(p-1)=="\r"?p-1:p),E=g.indexOf("\r");E!=-1?(f.push(g.slice(0,E)),u+=E+1):(f.push(g),u=p+1)}return f}:function(a){return a.split(/\r\n?|\n/)},Rr=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(u){return!1}}:function(a){var u;try{u=a.ownerDocument.selection.createRange()}catch(f){}return!u||u.parentElement()!=a?!1:u.compareEndPoints("StartToEnd",u)!=0},jr=function(){var a=P("div");return"oncopy"in a?!0:(a.setAttribute("oncopy","return;"),typeof a.oncopy=="function")}(),et=null;function sa(a){if(et!=null)return et;var u=Q(a,P("span","x")),f=u.getBoundingClientRect(),c=xe(u,0,1).getBoundingClientRect();return et=Math.abs(f.left-c.left)>1}var Cn={},la={};function ch(a,u){arguments.length>2&&(u.dependencies=Array.prototype.slice.call(arguments,2)),Cn[a]=u}function Js(a,u){la[a]=u}function ui(a){if(typeof a=="string"&&la.hasOwnProperty(a))a=la[a];else if(a&&typeof a.name=="string"&&la.hasOwnProperty(a.name)){var u=la[a.name];typeof u=="string"&&(u={name:u}),a=st(u,a),a.name=u.name}else{if(typeof a=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return ui("application/xml");if(typeof a=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(a))return ui("application/json")}return typeof a=="string"?{name:a}:a||{name:"null"}}function io(a,u){u=ui(u);var f=Cn[u.name];if(!f)return io(a,"text/plain");var c=f(a,u);if(jo.hasOwnProperty(u.name)){var p=jo[u.name];for(var g in p)!p.hasOwnProperty(g)||(c.hasOwnProperty(g)&&(c["_"+g]=c[g]),c[g]=p[g])}if(c.name=u.name,u.helperType&&(c.helperType=u.helperType),u.modeProps)for(var E in u.modeProps)c[E]=u.modeProps[E];return c}var jo={};function fh(a,u){var f=jo.hasOwnProperty(a)?jo[a]:jo[a]={};Ie(u,f)}function ao(a,u){if(u===!0)return u;if(a.copyState)return a.copyState(u);var f={};for(var c in u){var p=u[c];p instanceof Array&&(p=p.concat([])),f[c]=p}return f}function Po(a,u){for(var f;a.innerMode&&(f=a.innerMode(u),!(!f||f.mode==a));)u=f.state,a=f.mode;return f||{mode:a,state:u}}function nf(a,u,f){return a.startState?a.startState(u,f):!0}var gr=function(a,u,f){this.pos=this.start=0,this.string=a,this.tabSize=u||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=f};gr.prototype.eol=function(){return this.pos>=this.string.length},gr.prototype.sol=function(){return this.pos==this.lineStart},gr.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},gr.prototype.next=function(){if(this.posu},gr.prototype.eatSpace=function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},gr.prototype.skipToEnd=function(){this.pos=this.string.length},gr.prototype.skipTo=function(a){var u=this.string.indexOf(a,this.pos);if(u>-1)return this.pos=u,!0},gr.prototype.backUp=function(a){this.pos-=a},gr.prototype.column=function(){return this.lastColumnPos0?null:(g&&u!==!1&&(this.pos+=g[0].length),g)}},gr.prototype.current=function(){return this.string.slice(this.start,this.pos)},gr.prototype.hideFirstChars=function(a,u){this.lineStart+=a;try{return u()}finally{this.lineStart-=a}},gr.prototype.lookAhead=function(a){var u=this.lineOracle;return u&&u.lookAhead(a)},gr.prototype.baseToken=function(){var a=this.lineOracle;return a&&a.baseToken(this.pos)};function Ae(a,u){if(u-=a.first,u<0||u>=a.size)throw new Error("There is no line "+(u+a.first)+" in the document.");for(var f=a;!f.lines;)for(var c=0;;++c){var p=f.children[c],g=p.chunkSize();if(u=a.first&&uf?W(f,Ae(a,f).text.length):zQ(u,Ae(a,u.line).text.length)}function zQ(a,u){var f=a.ch;return f==null||f>u?W(a.line,u):f<0?W(a.line,0):a}function nN(a,u){for(var f=[],c=0;cthis.maxLookAhead&&(this.maxLookAhead=a),u},Na.prototype.baseToken=function(a){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=a;)this.baseTokenPos+=2;var u=this.baseTokens[this.baseTokenPos+1];return{type:u&&u.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-a}},Na.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Na.fromSaved=function(a,u,f){return u instanceof dh?new Na(a,ao(a.mode,u.state),f,u.lookAhead):new Na(a,ao(a.mode,u),f)},Na.prototype.save=function(a){var u=a!==!1?ao(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new dh(u,this.maxLookAhead):u};function iN(a,u,f,c){var p=[a.state.modeGen],g={};cN(a,u.text,a.doc.mode,f,function(I,U){return p.push(I,U)},g,c);for(var E=f.state,N=function(I){f.baseTokens=p;var U=a.state.overlays[I],K=1,$=0;f.state=!0,cN(a,u.text,U.mode,f,function(X,ae){for(var le=K;$X&&p.splice(K,1,X,p[K+1],pe),K+=2,$=Math.min(X,pe)}if(!!ae)if(U.opaque)p.splice(le,K-le,X,"overlay "+ae),K=le+2;else for(;lea.options.maxHighlightLength&&ao(a.doc.mode,c.state),g=iN(a,u,c);p&&(c.state=p),u.stateAfter=c.save(!p),u.styles=g.styles,g.classes?u.styleClasses=g.classes:u.styleClasses&&(u.styleClasses=null),f===a.doc.highlightFrontier&&(a.doc.modeFrontier=Math.max(a.doc.modeFrontier,++a.doc.highlightFrontier))}return u.styles}function af(a,u,f){var c=a.doc,p=a.display;if(!c.mode.startState)return new Na(c,!0,u);var g=WQ(a,u,f),E=g>c.first&&Ae(c,g-1).stateAfter,N=E?Na.fromSaved(c,E,g):new Na(c,nf(c.mode),g);return c.iter(g,u,function(C){Wy(a,C.text,N);var I=N.line;C.stateAfter=I==u-1||I%5==0||I>=p.viewFrom&&Iu.start)return g}throw new Error("Mode "+a.name+" failed to advance stream.")}var uN=function(a,u,f){this.start=a.start,this.end=a.pos,this.string=a.current(),this.type=u||null,this.state=f};function sN(a,u,f,c){var p=a.doc,g=p.mode,E;u=Ye(p,u);var N=Ae(p,u.line),C=af(a,u.line,f),I=new gr(N.text,a.options.tabSize,C),U;for(c&&(U=[]);(c||I.posa.options.maxHighlightLength?(N=!1,E&&Wy(a,u,c,U.pos),U.pos=u.length,K=null):K=lN(Yy(f,U,c.state,$),g),$){var X=$[0].name;X&&(K="m-"+(K?X+" "+K:X))}if(!N||I!=K){for(;CE;--N){if(N<=g.first)return g.first;var C=Ae(g,N-1),I=C.stateAfter;if(I&&(!f||N+(I instanceof dh?I.lookAhead:0)<=g.modeFrontier))return N;var U=te(C.text,null,a.options.tabSize);(p==null||c>U)&&(p=N-1,c=U)}return p}function YQ(a,u){if(a.modeFrontier=Math.min(a.modeFrontier,u),!(a.highlightFrontierf;c--){var p=Ae(a,c).stateAfter;if(p&&(!(p instanceof dh)||c+p.lookAhead=u:g.to>u);(c||(c=[])).push(new ph(E,g.from,C?null:g.to))}}return c}function t2(a,u,f){var c;if(a)for(var p=0;p=u:g.to>u);if(N||g.from==u&&E.type=="bookmark"&&(!f||g.marker.insertLeft)){var C=g.from==null||(E.inclusiveLeft?g.from<=u:g.from0&&N)for(var Ce=0;Ce0)){var U=[C,1],K=ie(I.from,N.from),$=ie(I.to,N.to);(K<0||!E.inclusiveLeft&&!K)&&U.push({from:I.from,to:N.from}),($>0||!E.inclusiveRight&&!$)&&U.push({from:N.to,to:I.to}),p.splice.apply(p,U),C+=U.length-3}}return p}function pN(a){var u=a.markedSpans;if(!!u){for(var f=0;fu)&&(!c||Xy(c,g.marker)<0)&&(c=g.marker)}return c}function mN(a,u,f,c,p){var g=Ae(a,u),E=uo&&g.markedSpans;if(E)for(var N=0;N=0&&K<=0||U<=0&&K>=0)&&(U<=0&&(C.marker.inclusiveRight&&p.inclusiveLeft?ie(I.to,f)>=0:ie(I.to,f)>0)||U>=0&&(C.marker.inclusiveRight&&p.inclusiveLeft?ie(I.from,c)<=0:ie(I.from,c)<0)))return!0}}}function ca(a){for(var u;u=gN(a);)a=u.find(-1,!0).line;return a}function i2(a){for(var u;u=gh(a);)a=u.find(1,!0).line;return a}function a2(a){for(var u,f;u=gh(a);)a=u.find(1,!0).line,(f||(f=[])).push(a);return f}function Zy(a,u){var f=Ae(a,u),c=ca(f);return f==c?u:wt(c)}function yN(a,u){if(u>a.lastLine())return u;var f=Ae(a,u),c;if(!Fo(a,f))return u;for(;c=gh(f);)f=c.find(1,!0).line;return wt(f)+1}function Fo(a,u){var f=uo&&u.markedSpans;if(f){for(var c=void 0,p=0;pu.maxLineLength&&(u.maxLineLength=p,u.maxLine=c)})}var Zs=function(a,u,f){this.text=a,hN(this,u),this.height=f?f(this):1};Zs.prototype.lineNo=function(){return wt(this)},un(Zs);function o2(a,u,f,c){a.text=u,a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null),a.order!=null&&(a.order=null),pN(a),hN(a,f);var p=c?c(a):1;p!=a.height&&Fi(a,p)}function u2(a){a.parent=null,pN(a)}var s2={},l2={};function bN(a,u){if(!a||/^\s*$/.test(a))return null;var f=u.addModeClass?l2:s2;return f[a]||(f[a]=a.replace(/\S+/g,"cm-$&"))}function TN(a,u){var f=he("span",null,null,d?"padding-right: .1px":null),c={pre:he("pre",[f],"CodeMirror-line"),content:f,col:0,pos:0,cm:a,trailingSpace:!1,splitSpaces:a.getOption("lineWrapping")};u.measure={};for(var p=0;p<=(u.rest?u.rest.length:0);p++){var g=p?u.rest[p-1]:u.line,E=void 0;c.pos=0,c.addToken=f2,Rt(a.display.measure)&&(E=xn(g,a.doc.direction))&&(c.addToken=p2(c.addToken,E)),c.map=[];var N=u!=a.display.externalMeasured&&wt(g);h2(g,c,aN(a,g,N)),g.styleClasses&&(g.styleClasses.bgClass&&(c.bgClass=He(g.styleClasses.bgClass,c.bgClass||"")),g.styleClasses.textClass&&(c.textClass=He(g.styleClasses.textClass,c.textClass||""))),c.map.length==0&&c.map.push(0,0,c.content.appendChild(Ze(a.display.measure))),p==0?(u.measure.map=c.map,u.measure.cache={}):((u.measure.maps||(u.measure.maps=[])).push(c.map),(u.measure.caches||(u.measure.caches=[])).push({}))}if(d){var C=c.content.lastChild;(/\bcm-tab\b/.test(C.className)||C.querySelector&&C.querySelector(".cm-tab"))&&(c.content.className="cm-tab-wrap-hack")}return Ft(a,"renderLine",a,u.line,c.pre),c.pre.className&&(c.textClass=He(c.pre.className,c.textClass||"")),c}function c2(a){var u=P("span","\u2022","cm-invalidchar");return u.title="\\u"+a.charCodeAt(0).toString(16),u.setAttribute("aria-label",u.title),u}function f2(a,u,f,c,p,g,E){if(!!u){var N=a.splitSpaces?d2(u,a.trailingSpace):u,C=a.cm.state.specialChars,I=!1,U;if(!C.test(u))a.col+=u.length,U=document.createTextNode(N),a.map.push(a.pos,a.pos+u.length,U),s&&l<9&&(I=!0),a.pos+=u.length;else{U=document.createDocumentFragment();for(var K=0;;){C.lastIndex=K;var $=C.exec(u),X=$?$.index-K:u.length-K;if(X){var ae=document.createTextNode(N.slice(K,K+X));s&&l<9?U.appendChild(P("span",[ae])):U.appendChild(ae),a.map.push(a.pos,a.pos+X,ae),a.col+=X,a.pos+=X}if(!$)break;K+=X+1;var le=void 0;if($[0]==" "){var pe=a.cm.options.tabSize,be=pe-a.col%pe;le=U.appendChild(P("span",fe(be),"cm-tab")),le.setAttribute("role","presentation"),le.setAttribute("cm-text"," "),a.col+=be}else $[0]=="\r"||$[0]==` -`?(le=U.appendChild(P("span",$[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),le.setAttribute("cm-text",$[0]),a.col+=1):(le=a.cm.options.specialCharPlaceholder($[0]),le.setAttribute("cm-text",$[0]),s&&l<9?U.appendChild(P("span",[le])):U.appendChild(le),a.col+=1);a.map.push(a.pos,a.pos+1,le),a.pos++}}if(a.trailingSpace=N.charCodeAt(u.length-1)==32,f||c||p||I||g||E){var Ne=f||"";c&&(Ne+=c),p&&(Ne+=p);var Te=P("span",[U],Ne,g);if(E)for(var Ce in E)E.hasOwnProperty(Ce)&&Ce!="style"&&Ce!="class"&&Te.setAttribute(Ce,E[Ce]);return a.content.appendChild(Te)}a.content.appendChild(U)}}function d2(a,u){if(a.length>1&&!/ /.test(a))return a;for(var f=u,c="",p=0;pI&&K.from<=I));$++);if(K.to>=U)return a(f,c,p,g,E,N,C);a(f,c.slice(0,K.to-I),p,g,null,N,C),g=null,c=c.slice(K.to-I),I=K.to}}}function _N(a,u,f,c){var p=!c&&f.widgetNode;p&&a.map.push(a.pos,a.pos+u,p),!c&&a.cm.display.input.needsContentAttribute&&(p||(p=a.content.appendChild(document.createElement("span"))),p.setAttribute("cm-marker",f.id)),p&&(a.cm.display.input.setUneditable(p),a.content.appendChild(p)),a.pos+=u,a.trailingSpace=!1}function h2(a,u,f){var c=a.markedSpans,p=a.text,g=0;if(!c){for(var E=1;EC||lt.collapsed&&qe.to==C&&qe.from==C)){if(qe.to!=null&&qe.to!=C&&X>qe.to&&(X=qe.to,le=""),lt.className&&(ae+=" "+lt.className),lt.css&&($=($?$+";":"")+lt.css),lt.startStyle&&qe.from==C&&(pe+=" "+lt.startStyle),lt.endStyle&&qe.to==X&&(Ce||(Ce=[])).push(lt.endStyle,qe.to),lt.title&&((Ne||(Ne={})).title=lt.title),lt.attributes)for(var Ht in lt.attributes)(Ne||(Ne={}))[Ht]=lt.attributes[Ht];lt.collapsed&&(!be||Xy(be.marker,lt)<0)&&(be=qe)}else qe.from>C&&X>qe.from&&(X=qe.from)}if(Ce)for(var zr=0;zr=N)break;for(var li=Math.min(N,X);;){if(U){var Jn=C+U.length;if(!be){var wr=Jn>li?U.slice(0,li-C):U;u.addToken(u,wr,K?K+ae:ae,pe,C+wr.length==X?le:"",$,Ne)}if(Jn>=li){U=U.slice(li-C),C=li;break}C=Jn,pe=""}U=p.slice(g,g=f[I++]),K=bN(f[I++],u.cm.options)}}}function EN(a,u,f){this.line=u,this.rest=a2(u),this.size=this.rest?wt(se(this.rest))-f+1:1,this.node=this.text=null,this.hidden=Fo(a,u)}function yh(a,u,f){for(var c=[],p,g=u;g2&&g.push((C.bottom+I.top)/2-f.top)}}g.push(f.bottom-f.top)}}function xN(a,u,f){if(a.line==u)return{map:a.measure.map,cache:a.measure.cache};if(a.rest){for(var c=0;cf)return{map:a.measure.maps[p],cache:a.measure.caches[p],before:!0}}}function O2(a,u){u=ca(u);var f=wt(u),c=a.display.externalMeasured=new EN(a.doc,u,f);c.lineN=f;var p=c.built=TN(a,c);return c.text=p.pre,Q(a.display.lineMeasure,p.pre),c}function CN(a,u,f,c){return xa(a,el(a,u),f,c)}function i0(a,u){if(u>=a.display.viewFrom&&u=f.lineN&&uu)&&(g=C-N,p=g-1,u>=C&&(E="right")),p!=null){if(c=a[I+2],N==C&&f==(c.insertLeft?"left":"right")&&(E=f),f=="left"&&p==0)for(;I&&a[I-2]==a[I-3]&&a[I-1].insertLeft;)c=a[(I-=3)+2],E="left";if(f=="right"&&p==C-N)for(;I=0&&(f=a[p]).left==f.right;p--);return f}function N2(a,u,f,c){var p=IN(u.map,f,c),g=p.node,E=p.start,N=p.end,C=p.collapse,I;if(g.nodeType==3){for(var U=0;U<4;U++){for(;E&&Pi(u.line.text.charAt(p.coverStart+E));)--E;for(;p.coverStart+N0&&(C=c="right");var K;a.options.lineWrapping&&(K=g.getClientRects()).length>1?I=K[c=="right"?K.length-1:0]:I=g.getBoundingClientRect()}if(s&&l<9&&!E&&(!I||!I.left&&!I.right)){var $=g.parentNode.getClientRects()[0];$?I={left:$.left,right:$.left+rl(a.display),top:$.top,bottom:$.bottom}:I=LN}for(var X=I.top-u.rect.top,ae=I.bottom-u.rect.top,le=(X+ae)/2,pe=u.view.measure.heights,be=0;be=c.text.length?(C=c.text.length,I="before"):C<=0&&(C=0,I="after"),!N)return E(I=="before"?C-1:C,I=="before");function U(ae,le,pe){var be=N[le],Ne=be.level==1;return E(pe?ae-1:ae,Ne!=pe)}var K=vr(N,C,I),$=zn,X=U(C,K,I=="before");return $!=null&&(X.other=U(C,$,I!="before")),X}function MN(a,u){var f=0;u=Ye(a.doc,u),a.options.lineWrapping||(f=rl(a.display)*u.ch);var c=Ae(a.doc,u.line),p=so(c)+bh(a.display);return{left:f,right:f,top:p,bottom:p+c.height}}function o0(a,u,f,c,p){var g=W(a,u,f);return g.xRel=p,c&&(g.outside=c),g}function u0(a,u,f){var c=a.doc;if(f+=a.display.viewOffset,f<0)return o0(c.first,0,null,-1,-1);var p=wa(c,f),g=c.first+c.size-1;if(p>g)return o0(c.first+c.size-1,Ae(c,g).text.length,null,1,1);u<0&&(u=0);for(var E=Ae(c,p);;){var N=x2(a,E,p,u,f),C=n2(E,N.ch+(N.xRel>0||N.outside>0?1:0));if(!C)return N;var I=C.find(1);if(I.line==p)return I;E=Ae(c,p=I.line)}}function qN(a,u,f,c){c-=a0(u);var p=u.text.length,g=Kt(function(E){return xa(a,f,E-1).bottom<=c},p,0);return p=Kt(function(E){return xa(a,f,E).top>c},g,p),{begin:g,end:p}}function VN(a,u,f,c){f||(f=el(a,u));var p=Th(a,u,xa(a,f,c),"line").top;return qN(a,u,f,p)}function s0(a,u,f,c){return a.bottom<=f?!1:a.top>f?!0:(c?a.left:a.right)>u}function x2(a,u,f,c,p){p-=so(u);var g=el(a,u),E=a0(u),N=0,C=u.text.length,I=!0,U=xn(u,a.doc.direction);if(U){var K=(a.options.lineWrapping?L2:C2)(a,u,f,g,U,c,p);I=K.level!=1,N=I?K.from:K.to-1,C=I?K.to:K.from-1}var $=null,X=null,ae=Kt(function(Ge){var qe=xa(a,g,Ge);return qe.top+=E,qe.bottom+=E,s0(qe,c,p,!1)?(qe.top<=p&&qe.left<=c&&($=Ge,X=qe),!0):!1},N,C),le,pe,be=!1;if(X){var Ne=c-X.left=Ce.bottom?1:0}return ae=Qr(u.text,ae,1),o0(f,ae,pe,be,c-le)}function C2(a,u,f,c,p,g,E){var N=Kt(function(K){var $=p[K],X=$.level!=1;return s0(fa(a,W(f,X?$.to:$.from,X?"before":"after"),"line",u,c),g,E,!0)},0,p.length-1),C=p[N];if(N>0){var I=C.level!=1,U=fa(a,W(f,I?C.from:C.to,I?"after":"before"),"line",u,c);s0(U,g,E,!0)&&U.top>E&&(C=p[N-1])}return C}function L2(a,u,f,c,p,g,E){var N=qN(a,u,c,E),C=N.begin,I=N.end;/\s/.test(u.text.charAt(I-1))&&I--;for(var U=null,K=null,$=0;$=I||X.to<=C)){var ae=X.level!=1,le=xa(a,c,ae?Math.min(I,X.to)-1:Math.max(C,X.from)).right,pe=lepe)&&(U=X,K=pe)}}return U||(U=p[p.length-1]),U.fromI&&(U={from:U.from,to:I,level:U.level}),U}var Bu;function tl(a){if(a.cachedTextHeight!=null)return a.cachedTextHeight;if(Bu==null){Bu=P("pre",null,"CodeMirror-line-like");for(var u=0;u<49;++u)Bu.appendChild(document.createTextNode("x")),Bu.appendChild(P("br"));Bu.appendChild(document.createTextNode("x"))}Q(a.measure,Bu);var f=Bu.offsetHeight/50;return f>3&&(a.cachedTextHeight=f),B(a.measure),f||1}function rl(a){if(a.cachedCharWidth!=null)return a.cachedCharWidth;var u=P("span","xxxxxxxxxx"),f=P("pre",[u],"CodeMirror-line-like");Q(a.measure,f);var c=u.getBoundingClientRect(),p=(c.right-c.left)/10;return p>2&&(a.cachedCharWidth=p),p||10}function l0(a){for(var u=a.display,f={},c={},p=u.gutters.clientLeft,g=u.gutters.firstChild,E=0;g;g=g.nextSibling,++E){var N=a.display.gutterSpecs[E].className;f[N]=g.offsetLeft+g.clientLeft+p,c[N]=g.clientWidth}return{fixedPos:c0(u),gutterTotalWidth:u.gutters.offsetWidth,gutterLeft:f,gutterWidth:c,wrapperWidth:u.wrapper.clientWidth}}function c0(a){return a.scroller.getBoundingClientRect().left-a.sizer.getBoundingClientRect().left}function UN(a){var u=tl(a.display),f=a.options.lineWrapping,c=f&&Math.max(5,a.display.scroller.clientWidth/rl(a.display)-3);return function(p){if(Fo(a.doc,p))return 0;var g=0;if(p.widgets)for(var E=0;E0&&(I=Ae(a.doc,C.line).text).length==C.ch){var U=te(I,I.length,a.options.tabSize)-I.length;C=W(C.line,Math.max(0,Math.round((g-DN(a.display).left)/rl(a.display))-U))}return C}function Hu(a,u){if(u>=a.display.viewTo||(u-=a.display.viewFrom,u<0))return null;for(var f=a.display.view,c=0;cu)&&(p.updateLineNumbers=u),a.curOp.viewChanged=!0,u>=p.viewTo)uo&&Zy(a.doc,u)p.viewFrom?qo(a):(p.viewFrom+=c,p.viewTo+=c);else if(u<=p.viewFrom&&f>=p.viewTo)qo(a);else if(u<=p.viewFrom){var g=Eh(a,f,f+c,1);g?(p.view=p.view.slice(g.index),p.viewFrom=g.lineN,p.viewTo+=c):qo(a)}else if(f>=p.viewTo){var E=Eh(a,u,u,-1);E?(p.view=p.view.slice(0,E.index),p.viewTo=E.lineN):qo(a)}else{var N=Eh(a,u,u,-1),C=Eh(a,f,f+c,1);N&&C?(p.view=p.view.slice(0,N.index).concat(yh(a,N.lineN,C.lineN)).concat(p.view.slice(C.index)),p.viewTo+=c):qo(a)}var I=p.externalMeasured;I&&(f=p.lineN&&u=c.viewTo)){var g=c.view[Hu(a,u)];if(g.node!=null){var E=g.changes||(g.changes=[]);we(E,f)==-1&&E.push(f)}}}function qo(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function Eh(a,u,f,c){var p=Hu(a,u),g,E=a.display.view;if(!uo||f==a.doc.first+a.doc.size)return{index:p,lineN:f};for(var N=a.display.viewFrom,C=0;C0){if(p==E.length-1)return null;g=N+E[p].size-u,p++}else g=N-u;u+=g,f+=g}for(;Zy(a.doc,f)!=f;){if(p==(c<0?0:E.length-1))return null;f+=c*E[p-(c<0?1:0)].size,p+=c}return{index:p,lineN:f}}function I2(a,u,f){var c=a.display,p=c.view;p.length==0||u>=c.viewTo||f<=c.viewFrom?(c.view=yh(a,u,f),c.viewFrom=u):(c.viewFrom>u?c.view=yh(a,u,c.viewFrom).concat(c.view):c.viewFromf&&(c.view=c.view.slice(0,Hu(a,f)))),c.viewTo=f}function GN(a){for(var u=a.display.view,f=0,c=0;c=a.display.viewTo||C.to().line0?E:a.defaultCharWidth())+"px"}if(c.other){var N=f.appendChild(P("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));N.style.display="",N.style.left=c.other.left+"px",N.style.top=c.other.top+"px",N.style.height=(c.other.bottom-c.other.top)*.85+"px"}}function Sh(a,u){return a.top-u.top||a.left-u.left}function A2(a,u,f){var c=a.display,p=a.doc,g=document.createDocumentFragment(),E=DN(a.display),N=E.left,C=Math.max(c.sizerWidth,Qu(a)-c.sizer.offsetLeft)-E.right,I=p.direction=="ltr";function U(Te,Ce,Ge,qe){Ce<0&&(Ce=0),Ce=Math.round(Ce),qe=Math.round(qe),g.appendChild(P("div",null,"CodeMirror-selected","position: absolute; left: "+Te+`px; - top: `+Ce+"px; width: "+(Ge==null?C-Te:Ge)+`px; - height: `+(qe-Ce)+"px"))}function K(Te,Ce,Ge){var qe=Ae(p,Te),lt=qe.text.length,Ht,zr;function lr(wr,Xn){return _h(a,W(Te,wr),"div",qe,Xn)}function li(wr,Xn,sn){var Fr=VN(a,qe,null,wr),Nr=Xn=="ltr"==(sn=="after")?"left":"right",mr=sn=="after"?Fr.begin:Fr.end-(/\s/.test(qe.text.charAt(Fr.end-1))?2:1);return lr(mr,Nr)[Nr]}var Jn=xn(qe,p.direction);return hn(Jn,Ce||0,Ge==null?lt:Ge,function(wr,Xn,sn,Fr){var Nr=sn=="ltr",mr=lr(wr,Nr?"left":"right"),Zn=lr(Xn-1,Nr?"right":"left"),vl=Ce==null&&wr==0,Ko=Ge==null&&Xn==lt,mn=Fr==0,Ca=!Jn||Fr==Jn.length-1;if(Zn.top-mr.top<=3){var Wr=(I?vl:Ko)&&mn,q0=(I?Ko:vl)&&Ca,po=Wr?N:(Nr?mr:Zn).left,Xu=q0?C:(Nr?Zn:mr).right;U(po,mr.top,Xu-po,mr.bottom)}else{var Zu,In,gl,V0;Nr?(Zu=I&&vl&&mn?N:mr.left,In=I?C:li(wr,sn,"before"),gl=I?N:li(Xn,sn,"after"),V0=I&&Ko&&Ca?C:Zn.right):(Zu=I?li(wr,sn,"before"):N,In=!I&&vl&&mn?C:mr.right,gl=!I&&Ko&&Ca?N:Zn.left,V0=I?li(Xn,sn,"after"):C),U(Zu,mr.top,In-Zu,mr.bottom),mr.bottom0?u.blinker=setInterval(function(){a.hasFocus()||nl(a),u.cursorDiv.style.visibility=(f=!f)?"":"hidden"},a.options.cursorBlinkRate):a.options.cursorBlinkRate<0&&(u.cursorDiv.style.visibility="hidden")}}function BN(a){a.hasFocus()||(a.display.input.focus(),a.state.focused||v0(a))}function h0(a){a.state.delayingBlurEvent=!0,setTimeout(function(){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1,a.state.focused&&nl(a))},100)}function v0(a,u){a.state.delayingBlurEvent&&!a.state.draggingText&&(a.state.delayingBlurEvent=!1),a.options.readOnly!="nocursor"&&(a.state.focused||(Ft(a,"focus",a,u),a.state.focused=!0,Le(a.display.wrapper,"CodeMirror-focused"),!a.curOp&&a.display.selForContextMenu!=a.doc.sel&&(a.display.input.reset(),d&&setTimeout(function(){return a.display.input.reset(!0)},20)),a.display.input.receivedFocus()),p0(a))}function nl(a,u){a.state.delayingBlurEvent||(a.state.focused&&(Ft(a,"blur",a,u),a.state.focused=!1,z(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150))}function kh(a){for(var u=a.display,f=u.lineDiv.offsetTop,c=Math.max(0,u.scroller.getBoundingClientRect().top),p=u.lineDiv.getBoundingClientRect().top,g=0,E=0;E.005||X<-.005)&&(pa.display.sizerWidth){var le=Math.ceil(U/rl(a.display));le>a.display.maxLineLength&&(a.display.maxLineLength=le,a.display.maxLine=N.line,a.display.maxLineChanged=!0)}}}Math.abs(g)>2&&(u.scroller.scrollTop+=g)}function KN(a){if(a.widgets)for(var u=0;u=E&&(g=wa(u,so(Ae(u,C))-a.wrapper.clientHeight),E=C)}return{from:g,to:Math.max(E,g+1)}}function R2(a,u){if(!nr(a,"scrollCursorIntoView")){var f=a.display,c=f.sizer.getBoundingClientRect(),p=null,g=f.wrapper.ownerDocument;if(u.top+c.top<0?p=!0:u.bottom+c.top>(g.defaultView.innerHeight||g.documentElement.clientHeight)&&(p=!1),p!=null&&!k){var E=P("div","\u200B",null,`position: absolute; - top: `+(u.top-f.viewOffset-bh(a.display))+`px; - height: `+(u.bottom-u.top+Da(a)+f.barHeight)+`px; - left: `+u.left+"px; width: "+Math.max(2,u.right-u.left)+"px;");a.display.lineSpace.appendChild(E),E.scrollIntoView(p),a.display.lineSpace.removeChild(E)}}}function j2(a,u,f,c){c==null&&(c=0);var p;!a.options.lineWrapping&&u==f&&(f=u.sticky=="before"?W(u.line,u.ch+1,"before"):u,u=u.ch?W(u.line,u.sticky=="before"?u.ch-1:u.ch,"after"):u);for(var g=0;g<5;g++){var E=!1,N=fa(a,u),C=!f||f==u?N:fa(a,f);p={left:Math.min(N.left,C.left),top:Math.min(N.top,C.top)-c,right:Math.max(N.left,C.left),bottom:Math.max(N.bottom,C.bottom)+c};var I=g0(a,p),U=a.doc.scrollTop,K=a.doc.scrollLeft;if(I.scrollTop!=null&&(pf(a,I.scrollTop),Math.abs(a.doc.scrollTop-U)>1&&(E=!0)),I.scrollLeft!=null&&(zu(a,I.scrollLeft),Math.abs(a.doc.scrollLeft-K)>1&&(E=!0)),!E)break}return p}function P2(a,u){var f=g0(a,u);f.scrollTop!=null&&pf(a,f.scrollTop),f.scrollLeft!=null&&zu(a,f.scrollLeft)}function g0(a,u){var f=a.display,c=tl(a.display);u.top<0&&(u.top=0);var p=a.curOp&&a.curOp.scrollTop!=null?a.curOp.scrollTop:f.scroller.scrollTop,g=n0(a),E={};u.bottom-u.top>g&&(u.bottom=u.top+g);var N=a.doc.height+r0(f),C=u.topN-c;if(u.topp+g){var U=Math.min(u.top,(I?N:u.bottom)-g);U!=p&&(E.scrollTop=U)}var K=a.options.fixedGutter?0:f.gutters.offsetWidth,$=a.curOp&&a.curOp.scrollLeft!=null?a.curOp.scrollLeft:f.scroller.scrollLeft-K,X=Qu(a)-f.gutters.offsetWidth,ae=u.right-u.left>X;return ae&&(u.right=u.left+X),u.left<10?E.scrollLeft=0:u.left<$?E.scrollLeft=Math.max(0,u.left+K-(ae?0:10)):u.right>X+$-3&&(E.scrollLeft=u.right+(ae?0:10)-X),E}function m0(a,u){u!=null&&(wh(a),a.curOp.scrollTop=(a.curOp.scrollTop==null?a.doc.scrollTop:a.curOp.scrollTop)+u)}function il(a){wh(a);var u=a.getCursor();a.curOp.scrollToPos={from:u,to:u,margin:a.options.cursorScrollMargin}}function df(a,u,f){(u!=null||f!=null)&&wh(a),u!=null&&(a.curOp.scrollLeft=u),f!=null&&(a.curOp.scrollTop=f)}function F2(a,u){wh(a),a.curOp.scrollToPos=u}function wh(a){var u=a.curOp.scrollToPos;if(u){a.curOp.scrollToPos=null;var f=MN(a,u.from),c=MN(a,u.to);HN(a,f,c,u.margin)}}function HN(a,u,f,c){var p=g0(a,{left:Math.min(u.left,f.left),top:Math.min(u.top,f.top)-c,right:Math.max(u.right,f.right),bottom:Math.max(u.bottom,f.bottom)+c});df(a,p.scrollLeft,p.scrollTop)}function pf(a,u){Math.abs(a.doc.scrollTop-u)<2||(r||b0(a,{top:u}),zN(a,u,!0),r&&b0(a),gf(a,100))}function zN(a,u,f){u=Math.max(0,Math.min(a.display.scroller.scrollHeight-a.display.scroller.clientHeight,u)),!(a.display.scroller.scrollTop==u&&!f)&&(a.doc.scrollTop=u,a.display.scrollbars.setScrollTop(u),a.display.scroller.scrollTop!=u&&(a.display.scroller.scrollTop=u))}function zu(a,u,f,c){u=Math.max(0,Math.min(u,a.display.scroller.scrollWidth-a.display.scroller.clientWidth)),!((f?u==a.doc.scrollLeft:Math.abs(a.doc.scrollLeft-u)<2)&&!c)&&(a.doc.scrollLeft=u,ZN(a),a.display.scroller.scrollLeft!=u&&(a.display.scroller.scrollLeft=u),a.display.scrollbars.setScrollLeft(u))}function hf(a){var u=a.display,f=u.gutters.offsetWidth,c=Math.round(a.doc.height+r0(a.display));return{clientHeight:u.scroller.clientHeight,viewHeight:u.wrapper.clientHeight,scrollWidth:u.scroller.scrollWidth,clientWidth:u.scroller.clientWidth,viewWidth:u.wrapper.clientWidth,barLeft:a.options.fixedGutter?f:0,docHeight:c,scrollHeight:c+Da(a)+u.barHeight,nativeBarWidth:u.nativeBarWidth,gutterWidth:f}}var Wu=function(a,u,f){this.cm=f;var c=this.vert=P("div",[P("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),p=this.horiz=P("div",[P("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");c.tabIndex=p.tabIndex=-1,a(c),a(p),_e(c,"scroll",function(){c.clientHeight&&u(c.scrollTop,"vertical")}),_e(p,"scroll",function(){p.clientWidth&&u(p.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,s&&l<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Wu.prototype.update=function(a){var u=a.scrollWidth>a.clientWidth+1,f=a.scrollHeight>a.clientHeight+1,c=a.nativeBarWidth;if(f){this.vert.style.display="block",this.vert.style.bottom=u?c+"px":"0";var p=a.viewHeight-(u?c:0);this.vert.firstChild.style.height=Math.max(0,a.scrollHeight-a.clientHeight+p)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(u){this.horiz.style.display="block",this.horiz.style.right=f?c+"px":"0",this.horiz.style.left=a.barLeft+"px";var g=a.viewWidth-a.barLeft-(f?c:0);this.horiz.firstChild.style.width=Math.max(0,a.scrollWidth-a.clientWidth+g)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&a.clientHeight>0&&(c==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:f?c:0,bottom:u?c:0}},Wu.prototype.setScrollLeft=function(a){this.horiz.scrollLeft!=a&&(this.horiz.scrollLeft=a),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Wu.prototype.setScrollTop=function(a){this.vert.scrollTop!=a&&(this.vert.scrollTop=a),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Wu.prototype.zeroWidthHack=function(){var a=w&&!_?"12px":"18px";this.horiz.style.height=this.vert.style.width=a,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new ce,this.disableVert=new ce},Wu.prototype.enableZeroWidthBar=function(a,u,f){a.style.visibility="";function c(){var p=a.getBoundingClientRect(),g=f=="vert"?document.elementFromPoint(p.right-1,(p.top+p.bottom)/2):document.elementFromPoint((p.right+p.left)/2,p.bottom-1);g!=a?a.style.visibility="hidden":u.set(1e3,c)}u.set(1e3,c)},Wu.prototype.clear=function(){var a=this.horiz.parentNode;a.removeChild(this.horiz),a.removeChild(this.vert)};var vf=function(){};vf.prototype.update=function(){return{bottom:0,right:0}},vf.prototype.setScrollLeft=function(){},vf.prototype.setScrollTop=function(){},vf.prototype.clear=function(){};function al(a,u){u||(u=hf(a));var f=a.display.barWidth,c=a.display.barHeight;WN(a,u);for(var p=0;p<4&&f!=a.display.barWidth||c!=a.display.barHeight;p++)f!=a.display.barWidth&&a.options.lineWrapping&&kh(a),WN(a,hf(a)),f=a.display.barWidth,c=a.display.barHeight}function WN(a,u){var f=a.display,c=f.scrollbars.update(u);f.sizer.style.paddingRight=(f.barWidth=c.right)+"px",f.sizer.style.paddingBottom=(f.barHeight=c.bottom)+"px",f.heightForcer.style.borderBottom=c.bottom+"px solid transparent",c.right&&c.bottom?(f.scrollbarFiller.style.display="block",f.scrollbarFiller.style.height=c.bottom+"px",f.scrollbarFiller.style.width=c.right+"px"):f.scrollbarFiller.style.display="",c.bottom&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(f.gutterFiller.style.display="block",f.gutterFiller.style.height=c.bottom+"px",f.gutterFiller.style.width=u.gutterWidth+"px"):f.gutterFiller.style.display=""}var YN={native:Wu,null:vf};function JN(a){a.display.scrollbars&&(a.display.scrollbars.clear(),a.display.scrollbars.addClass&&z(a.display.wrapper,a.display.scrollbars.addClass)),a.display.scrollbars=new YN[a.options.scrollbarStyle](function(u){a.display.wrapper.insertBefore(u,a.display.scrollbarFiller),_e(u,"mousedown",function(){a.state.focused&&setTimeout(function(){return a.display.input.focus()},0)}),u.setAttribute("cm-not-content","true")},function(u,f){f=="horizontal"?zu(a,u):pf(a,u)},a),a.display.scrollbars.addClass&&Le(a.display.wrapper,a.display.scrollbars.addClass)}var M2=0;function Yu(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++M2,markArrays:null},v2(a.curOp)}function Ju(a){var u=a.curOp;u&&m2(u,function(f){for(var c=0;c=f.viewTo)||f.maxLineChanged&&u.options.lineWrapping,a.update=a.mustUpdate&&new Nh(u,a.mustUpdate&&{top:a.scrollTop,ensure:a.scrollToPos},a.forceUpdate)}function U2(a){a.updatedDisplay=a.mustUpdate&&y0(a.cm,a.update)}function G2(a){var u=a.cm,f=u.display;a.updatedDisplay&&kh(u),a.barMeasure=hf(u),f.maxLineChanged&&!u.options.lineWrapping&&(a.adjustWidthTo=CN(u,f.maxLine,f.maxLine.text.length).left+3,u.display.sizerWidth=a.adjustWidthTo,a.barMeasure.scrollWidth=Math.max(f.scroller.clientWidth,f.sizer.offsetLeft+a.adjustWidthTo+Da(u)+u.display.barWidth),a.maxScrollLeft=Math.max(0,f.sizer.offsetLeft+a.adjustWidthTo-Qu(u))),(a.updatedDisplay||a.selectionChanged)&&(a.preparedSelection=f.input.prepareSelection())}function Q2(a){var u=a.cm;a.adjustWidthTo!=null&&(u.display.sizer.style.minWidth=a.adjustWidthTo+"px",a.maxScrollLeft=a.display.viewTo)){var f=+new Date+a.options.workTime,c=af(a,u.highlightFrontier),p=[];u.iter(c.line,Math.min(u.first+u.size,a.display.viewTo+500),function(g){if(c.line>=a.display.viewFrom){var E=g.styles,N=g.text.length>a.options.maxHighlightLength?ao(u.mode,c.state):null,C=iN(a,g,c,!0);N&&(c.state=N),g.styles=C.styles;var I=g.styleClasses,U=C.classes;U?g.styleClasses=U:I&&(g.styleClasses=null);for(var K=!E||E.length!=g.styles.length||I!=U&&(!I||!U||I.bgClass!=U.bgClass||I.textClass!=U.textClass),$=0;!K&&$f)return gf(a,a.options.workDelay),!0}),u.highlightFrontier=c.line,u.modeFrontier=Math.max(u.modeFrontier,c.line),p.length&&si(a,function(){for(var g=0;g=f.viewFrom&&u.visible.to<=f.viewTo&&(f.updateLineNumbers==null||f.updateLineNumbers>=f.viewTo)&&f.renderedView==f.view&&GN(a)==0)return!1;$N(a)&&(qo(a),u.dims=l0(a));var p=c.first+c.size,g=Math.max(u.visible.from-a.options.viewportMargin,c.first),E=Math.min(p,u.visible.to+a.options.viewportMargin);f.viewFromE&&f.viewTo-E<20&&(E=Math.min(p,f.viewTo)),uo&&(g=Zy(a.doc,g),E=yN(a.doc,E));var N=g!=f.viewFrom||E!=f.viewTo||f.lastWrapHeight!=u.wrapperHeight||f.lastWrapWidth!=u.wrapperWidth;I2(a,g,E),f.viewOffset=so(Ae(a.doc,f.viewFrom)),a.display.mover.style.top=f.viewOffset+"px";var C=GN(a);if(!N&&C==0&&!u.force&&f.renderedView==f.view&&(f.updateLineNumbers==null||f.updateLineNumbers>=f.viewTo))return!1;var I=z2(a);return C>4&&(f.lineDiv.style.display="none"),Y2(a,f.updateLineNumbers,u.dims),C>4&&(f.lineDiv.style.display=""),f.renderedView=f.view,W2(I),B(f.cursorDiv),B(f.selectionDiv),f.gutters.style.height=f.sizer.style.minHeight=0,N&&(f.lastWrapHeight=u.wrapperHeight,f.lastWrapWidth=u.wrapperWidth,gf(a,400)),f.updateLineNumbers=null,!0}function XN(a,u){for(var f=u.viewport,c=!0;;c=!1){if(!c||!a.options.lineWrapping||u.oldDisplayWidth==Qu(a)){if(f&&f.top!=null&&(f={top:Math.min(a.doc.height+r0(a.display)-n0(a),f.top)}),u.visible=Oh(a.display,a.doc,f),u.visible.from>=a.display.viewFrom&&u.visible.to<=a.display.viewTo)break}else c&&(u.visible=Oh(a.display,a.doc,f));if(!y0(a,u))break;kh(a);var p=hf(a);ff(a),al(a,p),_0(a,p),u.force=!1}u.signal(a,"update",a),(a.display.viewFrom!=a.display.reportedViewFrom||a.display.viewTo!=a.display.reportedViewTo)&&(u.signal(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo),a.display.reportedViewFrom=a.display.viewFrom,a.display.reportedViewTo=a.display.viewTo)}function b0(a,u){var f=new Nh(a,u);if(y0(a,f)){kh(a),XN(a,f);var c=hf(a);ff(a),al(a,c),_0(a,c),f.finish()}}function Y2(a,u,f){var c=a.display,p=a.options.lineNumbers,g=c.lineDiv,E=g.firstChild;function N(ae){var le=ae.nextSibling;return d&&w&&a.display.currentWheelTarget==ae?ae.style.display="none":ae.parentNode.removeChild(ae),le}for(var C=c.view,I=c.viewFrom,U=0;U-1&&(X=!1),SN(a,K,I,f)),X&&(B(K.lineNumber),K.lineNumber.appendChild(document.createTextNode(H(a.options,I)))),E=K.node.nextSibling}I+=K.size}for(;E;)E=N(E)}function T0(a){var u=a.gutters.offsetWidth;a.sizer.style.marginLeft=u+"px",Br(a,"gutterChanged",a)}function _0(a,u){a.display.sizer.style.minHeight=u.docHeight+"px",a.display.heightForcer.style.top=u.docHeight+"px",a.display.gutters.style.height=u.docHeight+a.display.barHeight+Da(a)+"px"}function ZN(a){var u=a.display,f=u.view;if(!(!u.alignWidgets&&(!u.gutters.firstChild||!a.options.fixedGutter))){for(var c=c0(u)-u.scroller.scrollLeft+a.doc.scrollLeft,p=u.gutters.offsetWidth,g=c+"px",E=0;E=105&&(p.wrapper.style.clipPath="inset(0px)"),p.wrapper.setAttribute("translate","no"),s&&l<8&&(p.gutters.style.zIndex=-1,p.scroller.style.paddingRight=0),!d&&!(r&&m)&&(p.scroller.draggable=!0),a&&(a.appendChild?a.appendChild(p.wrapper):a(p.wrapper)),p.viewFrom=p.viewTo=u.first,p.reportedViewFrom=p.reportedViewTo=u.first,p.view=[],p.renderedView=null,p.externalMeasured=null,p.viewOffset=0,p.lastWrapHeight=p.lastWrapWidth=0,p.updateLineNumbers=null,p.nativeBarWidth=p.barHeight=p.barWidth=0,p.scrollbarsClipped=!1,p.lineNumWidth=p.lineNumInnerWidth=p.lineNumChars=null,p.alignWidgets=!1,p.cachedCharWidth=p.cachedTextHeight=p.cachedPaddingH=null,p.maxLine=null,p.maxLineLength=0,p.maxLineChanged=!1,p.wheelDX=p.wheelDY=p.wheelStartX=p.wheelStartY=null,p.shift=!1,p.selForContextMenu=null,p.activeTouch=null,p.gutterSpecs=E0(c.gutters,c.lineNumbers),eD(p),f.init(p)}var Dh=0,co=null;s?co=-.53:r?co=15:v?co=-.7:D&&(co=-1/3);function tD(a){var u=a.wheelDeltaX,f=a.wheelDeltaY;return u==null&&a.detail&&a.axis==a.HORIZONTAL_AXIS&&(u=a.detail),f==null&&a.detail&&a.axis==a.VERTICAL_AXIS?f=a.detail:f==null&&(f=a.wheelDelta),{x:u,y:f}}function X2(a){var u=tD(a);return u.x*=co,u.y*=co,u}function rD(a,u){v&&y==102&&(a.display.chromeScrollHack==null?a.display.sizer.style.pointerEvents="none":clearTimeout(a.display.chromeScrollHack),a.display.chromeScrollHack=setTimeout(function(){a.display.chromeScrollHack=null,a.display.sizer.style.pointerEvents=""},100));var f=tD(u),c=f.x,p=f.y,g=co;u.deltaMode===0&&(c=u.deltaX,p=u.deltaY,g=1);var E=a.display,N=E.scroller,C=N.scrollWidth>N.clientWidth,I=N.scrollHeight>N.clientHeight;if(!!(c&&C||p&&I)){if(p&&w&&d){e:for(var U=u.target,K=E.view;U!=N;U=U.parentNode)for(var $=0;$=0&&ie(a,c.to())<=0)return f}return-1};var Nt=function(a,u){this.anchor=a,this.head=u};Nt.prototype.from=function(){return Pr(this.anchor,this.head)},Nt.prototype.to=function(){return _t(this.anchor,this.head)},Nt.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function da(a,u,f){var c=a&&a.options.selectionsMayTouch,p=u[f];u.sort(function($,X){return ie($.from(),X.from())}),f=we(u,p);for(var g=1;g0:C>=0){var I=Pr(N.from(),E.from()),U=_t(N.to(),E.to()),K=N.empty()?E.from()==E.head:N.from()==N.head;g<=f&&--f,u.splice(--g,2,new Nt(K?U:I,K?I:U))}}return new ki(u,f)}function Vo(a,u){return new ki([new Nt(a,u||a)],0)}function Uo(a){return a.text?W(a.from.line+a.text.length-1,se(a.text).length+(a.text.length==1?a.from.ch:0)):a.to}function nD(a,u){if(ie(a,u.from)<0)return a;if(ie(a,u.to)<=0)return Uo(u);var f=a.line+u.text.length-(u.to.line-u.from.line)-1,c=a.ch;return a.line==u.to.line&&(c+=Uo(u).ch-u.to.ch),W(f,c)}function S0(a,u){for(var f=[],c=0;c1&&a.remove(N.line+1,ae-1),a.insert(N.line+1,be)}Br(a,"change",a,u)}function Go(a,u,f){function c(p,g,E){if(p.linked)for(var N=0;N1&&!a.done[a.done.length-2].ranges)return a.done.pop(),se(a.done)}function lD(a,u,f,c){var p=a.history;p.undone.length=0;var g=+new Date,E,N;if((p.lastOp==c||p.lastOrigin==u.origin&&u.origin&&(u.origin.charAt(0)=="+"&&p.lastModTime>g-(a.cm?a.cm.options.historyEventDelay:500)||u.origin.charAt(0)=="*"))&&(E=eB(p,p.lastOp==c)))N=se(E.changes),ie(u.from,u.to)==0&&ie(u.from,N.to)==0?N.to=Uo(u):E.changes.push(w0(a,u));else{var C=se(p.done);for((!C||!C.ranges)&&Ch(a.sel,p.done),E={changes:[w0(a,u)],generation:p.generation},p.done.push(E);p.done.length>p.undoDepth;)p.done.shift(),p.done[0].ranges||p.done.shift()}p.done.push(f),p.generation=++p.maxGeneration,p.lastModTime=p.lastSelTime=g,p.lastOp=p.lastSelOp=c,p.lastOrigin=p.lastSelOrigin=u.origin,N||Ft(a,"historyAdded")}function tB(a,u,f,c){var p=u.charAt(0);return p=="*"||p=="+"&&f.ranges.length==c.ranges.length&&f.somethingSelected()==c.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function rB(a,u,f,c){var p=a.history,g=c&&c.origin;f==p.lastSelOp||g&&p.lastSelOrigin==g&&(p.lastModTime==p.lastSelTime&&p.lastOrigin==g||tB(a,g,se(p.done),u))?p.done[p.done.length-1]=u:Ch(u,p.done),p.lastSelTime=+new Date,p.lastSelOrigin=g,p.lastSelOp=f,c&&c.clearRedo!==!1&&sD(p.undone)}function Ch(a,u){var f=se(u);f&&f.ranges&&f.equals(a)||u.push(a)}function cD(a,u,f,c){var p=u["spans_"+a.id],g=0;a.iter(Math.max(a.first,f),Math.min(a.first+a.size,c),function(E){E.markedSpans&&((p||(p=u["spans_"+a.id]={}))[g]=E.markedSpans),++g})}function nB(a){if(!a)return null;for(var u,f=0;f-1&&(se(N)[K]=I[K],delete I[K])}}return c}function N0(a,u,f,c){if(c){var p=a.anchor;if(f){var g=ie(u,p)<0;g!=ie(f,p)<0?(p=u,u=f):g!=ie(u,f)<0&&(u=f)}return new Nt(p,u)}else return new Nt(f||u,u)}function Lh(a,u,f,c,p){p==null&&(p=a.cm&&(a.cm.display.shift||a.extend)),gn(a,new ki([N0(a.sel.primary(),u,f,p)],0),c)}function dD(a,u,f){for(var c=[],p=a.cm&&(a.cm.display.shift||a.extend),g=0;g=u.ch:N.to>u.ch))){if(p&&(Ft(C,"beforeCursorEnter"),C.explicitlyCleared))if(g.markedSpans){--E;continue}else break;if(!C.atomic)continue;if(f){var K=C.find(c<0?1:-1),$=void 0;if((c<0?U:I)&&(K=yD(a,K,-c,K&&K.line==u.line?g:null)),K&&K.line==u.line&&($=ie(K,f))&&(c<0?$<0:$>0))return ul(a,K,u,c,p)}var X=C.find(c<0?-1:1);return(c<0?I:U)&&(X=yD(a,X,c,X.line==u.line?g:null)),X?ul(a,X,u,c,p):null}}return u}function Ah(a,u,f,c,p){var g=c||1,E=ul(a,u,f,g,p)||!p&&ul(a,u,f,g,!0)||ul(a,u,f,-g,p)||!p&&ul(a,u,f,-g,!0);return E||(a.cantEdit=!0,W(a.first,0))}function yD(a,u,f,c){return f<0&&u.ch==0?u.line>a.first?Ye(a,W(u.line-1)):null:f>0&&u.ch==(c||Ae(a,u.line)).text.length?u.line=0;--p)_D(a,{from:c[p].from,to:c[p].to,text:p?[""]:u.text,origin:u.origin});else _D(a,u)}}function _D(a,u){if(!(u.text.length==1&&u.text[0]==""&&ie(u.from,u.to)==0)){var f=S0(a,u);lD(a,u,f,a.cm?a.cm.curOp.id:NaN),bf(a,u,f,Jy(a,u));var c=[];Go(a,function(p,g){!g&&we(c,p.history)==-1&&(OD(p.history,u),c.push(p.history)),bf(p,u,null,Jy(p,u))})}}function Rh(a,u,f){var c=a.cm&&a.cm.state.suppressEdits;if(!(c&&!f)){for(var p=a.history,g,E=a.sel,N=u=="undo"?p.done:p.undone,C=u=="undo"?p.undone:p.done,I=0;I=0;--X){var ae=$(X);if(ae)return ae.v}}}}function ED(a,u){if(u!=0&&(a.first+=u,a.sel=new ki(Ue(a.sel.ranges,function(p){return new Nt(W(p.anchor.line+u,p.anchor.ch),W(p.head.line+u,p.head.ch))}),a.sel.primIndex),a.cm)){Wn(a.cm,a.first,a.first-u,u);for(var f=a.cm.display,c=f.viewFrom;ca.lastLine())){if(u.from.lineg&&(u={from:u.from,to:W(g,Ae(a,g).text.length),text:[u.text[0]],origin:u.origin}),u.removed=oo(a,u.from,u.to),f||(f=S0(a,u)),a.cm?oB(a.cm,u,c):O0(a,u,c),Ih(a,f,Qe),a.cantEdit&&Ah(a,W(a.firstLine(),0))&&(a.cantEdit=!1)}}function oB(a,u,f){var c=a.doc,p=a.display,g=u.from,E=u.to,N=!1,C=g.line;a.options.lineWrapping||(C=wt(ca(Ae(c,g.line))),c.iter(C,E.line+1,function(X){if(X==p.maxLine)return N=!0,!0})),c.sel.contains(u.from,u.to)>-1&&Ys(a),O0(c,u,f,UN(a)),a.options.lineWrapping||(c.iter(C,g.line+u.text.length,function(X){var ae=mh(X);ae>p.maxLineLength&&(p.maxLine=X,p.maxLineLength=ae,p.maxLineChanged=!0,N=!1)}),N&&(a.curOp.updateMaxLine=!0)),YQ(c,g.line),gf(a,400);var I=u.text.length-(E.line-g.line)-1;u.full?Wn(a):g.line==E.line&&u.text.length==1&&!aD(a.doc,u)?Mo(a,g.line,"text"):Wn(a,g.line,E.line+1,I);var U=on(a,"changes"),K=on(a,"change");if(K||U){var $={from:g,to:E,text:u.text,removed:u.removed,origin:u.origin};K&&Br(a,"change",a,$),U&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push($)}a.display.selForContextMenu=null}function ll(a,u,f,c,p){var g;c||(c=f),ie(c,f)<0&&(g=[c,f],f=g[0],c=g[1]),typeof u=="string"&&(u=a.splitLines(u)),sl(a,{from:f,to:c,text:u,origin:p})}function SD(a,u,f,c){f1||!(this.children[0]instanceof _f))){var N=[];this.collapse(N),this.children=[new _f(N)],this.children[0].parent=this}},collapse:function(a){for(var u=0;u50){for(var E=p.lines.length%25+25,N=E;N10);a.parent.maybeSpill()}},iterN:function(a,u,f){for(var c=0;ca.display.maxLineLength&&(a.display.maxLine=I,a.display.maxLineLength=U,a.display.maxLineChanged=!0)}c!=null&&a&&this.collapsed&&Wn(a,c,p+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&gD(a.doc)),a&&Br(a,"markerCleared",a,this,c,p),u&&Ju(a),this.parent&&this.parent.clear()}},Qo.prototype.find=function(a,u){a==null&&this.type=="bookmark"&&(a=1);for(var f,c,p=0;p0||E==0&&g.clearWhenEmpty!==!1)return g;if(g.replacedWith&&(g.collapsed=!0,g.widgetNode=he("span",[g.replacedWith],"CodeMirror-widget"),c.handleMouseEvents||g.widgetNode.setAttribute("cm-ignore-events","true"),c.insertLeft&&(g.widgetNode.insertLeft=!0)),g.collapsed){if(mN(a,u.line,u,f,g)||u.line!=f.line&&mN(a,f.line,u,f,g))throw new Error("Inserting collapsed marker partially overlapping an existing one");XQ()}g.addToHistory&&lD(a,{from:u,to:f,origin:"markText"},a.sel,NaN);var N=u.line,C=a.cm,I;if(a.iter(N,f.line+1,function(K){C&&g.collapsed&&!C.options.lineWrapping&&ca(K)==C.display.maxLine&&(I=!0),g.collapsed&&N!=u.line&&Fi(K,0),$Q(K,new ph(g,N==u.line?u.ch:null,N==f.line?f.ch:null),a.cm&&a.cm.curOp),++N}),g.collapsed&&a.iter(u.line,f.line+1,function(K){Fo(a,K)&&Fi(K,0)}),g.clearOnEnter&&_e(g,"beforeCursorEnter",function(){return g.clear()}),g.readOnly&&(JQ(),(a.history.done.length||a.history.undone.length)&&a.clearHistory()),g.collapsed&&(g.id=++ND,g.atomic=!0),C){if(I&&(C.curOp.updateMaxLine=!0),g.collapsed)Wn(C,u.line,f.line+1);else if(g.className||g.startStyle||g.endStyle||g.css||g.attributes||g.title)for(var U=u.line;U<=f.line;U++)Mo(C,U,"text");g.atomic&&gD(C.doc),Br(C,"markerAdded",C,g)}return g}var kf=function(a,u){this.markers=a,this.primary=u;for(var f=0;f=0;C--)sl(this,c[C]);N?hD(this,N):this.cm&&il(this.cm)}),undo:Hr(function(){Rh(this,"undo")}),redo:Hr(function(){Rh(this,"redo")}),undoSelection:Hr(function(){Rh(this,"undo",!0)}),redoSelection:Hr(function(){Rh(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,u=0,f=0,c=0;c=a.ch)&&u.push(p.marker.parent||p.marker)}return u},findMarks:function(a,u,f){a=Ye(this,a),u=Ye(this,u);var c=[],p=a.line;return this.iter(a.line,u.line+1,function(g){var E=g.markedSpans;if(E)for(var N=0;N=C.to||C.from==null&&p!=a.line||C.from!=null&&p==u.line&&C.from>=u.ch)&&(!f||f(C.marker))&&c.push(C.marker.parent||C.marker)}++p}),c},getAllMarks:function(){var a=[];return this.iter(function(u){var f=u.markedSpans;if(f)for(var c=0;ca)return u=a,!0;a-=g,++f}),Ye(this,W(f,u))},indexFromPos:function(a){a=Ye(this,a);var u=a.ch;if(a.lineu&&(u=a.from),a.to!=null&&a.to-1){u.state.draggingText(a),setTimeout(function(){return u.display.input.focus()},20);return}try{var U=a.dataTransfer.getData("Text");if(U){var K;if(u.state.draggingText&&!u.state.draggingText.copy&&(K=u.listSelections()),Ih(u.doc,Vo(f,f)),K)for(var $=0;$=0;N--)ll(a.doc,"",c[N].from,c[N].to,"+delete");il(a)})}function x0(a,u,f){var c=Qr(a.text,u+f,f);return c<0||c>a.text.length?null:c}function C0(a,u,f){var c=x0(a,u.ch,f);return c==null?null:new W(u.line,c,f<0?"after":"before")}function L0(a,u,f,c,p){if(a){u.doc.direction=="rtl"&&(p=-p);var g=xn(f,u.doc.direction);if(g){var E=p<0?se(g):g[0],N=p<0==(E.level==1),C=N?"after":"before",I;if(E.level>0||u.doc.direction=="rtl"){var U=el(u,f);I=p<0?f.text.length-1:0;var K=xa(u,U,I).top;I=Kt(function($){return xa(u,U,$).top==K},p<0==(E.level==1)?E.from:E.to-1,I),C=="before"&&(I=x0(f,I,1))}else I=p<0?E.to:E.from;return new W(c,I,C)}}return new W(c,p<0?f.text.length:0,p<0?"before":"after")}function TB(a,u,f,c){var p=xn(u,a.doc.direction);if(!p)return C0(u,f,c);f.ch>=u.text.length?(f.ch=u.text.length,f.sticky="before"):f.ch<=0&&(f.ch=0,f.sticky="after");var g=vr(p,f.ch,f.sticky),E=p[g];if(a.doc.direction=="ltr"&&E.level%2==0&&(c>0?E.to>f.ch:E.from=E.from&&$>=U.begin)){var X=K?"before":"after";return new W(f.line,$,X)}}var ae=function(be,Ne,Te){for(var Ce=function(Ht,zr){return zr?new W(f.line,N(Ht,1),"before"):new W(f.line,Ht,"after")};be>=0&&be0==(Ge.level!=1),lt=qe?Te.begin:N(Te.end,-1);if(Ge.from<=lt&<0?U.end:N(U.begin,-1);return pe!=null&&!(c>0&&pe==u.text.length)&&(le=ae(c>0?0:p.length-1,c,I(pe)),le)?le:null}var Nf={selectAll:bD,singleSelection:function(a){return a.setSelection(a.getCursor("anchor"),a.getCursor("head"),Qe)},killLine:function(a){return dl(a,function(u){if(u.empty()){var f=Ae(a.doc,u.head.line).text.length;return u.head.ch==f&&u.head.line0)p=new W(p.line,p.ch+1),a.replaceRange(g.charAt(p.ch-1)+g.charAt(p.ch-2),W(p.line,p.ch-2),p,"+transpose");else if(p.line>a.doc.first){var E=Ae(a.doc,p.line-1).text;E&&(p=new W(p.line,1),a.replaceRange(g.charAt(0)+a.doc.lineSeparator()+E.charAt(E.length-1),W(p.line-1,E.length-1),p,"+transpose"))}}f.push(new Nt(p,p))}a.setSelections(f)})},newlineAndIndent:function(a){return si(a,function(){for(var u=a.listSelections(),f=u.length-1;f>=0;f--)a.replaceRange(a.doc.lineSeparator(),u[f].anchor,u[f].head,"+input");u=a.listSelections();for(var c=0;ca&&ie(u,this.pos)==0&&f==this.button};var xf,Cf;function NB(a,u){var f=+new Date;return Cf&&Cf.compare(f,a,u)?(xf=Cf=null,"triple"):xf&&xf.compare(f,a,u)?(Cf=new A0(f,a,u),xf=null,"double"):(xf=new A0(f,a,u),Cf=null,"single")}function QD(a){var u=this,f=u.display;if(!(nr(u,a)||f.activeTouch&&f.input.supportsTouch())){if(f.input.ensurePolled(),f.shift=a.shiftKey,lo(f,a)){d||(f.scroller.draggable=!1,setTimeout(function(){return f.scroller.draggable=!0},100));return}if(!R0(u,a)){var c=Ku(u,a),p=A(a),g=c?NB(c,p):"single";At(u).focus(),p==1&&u.state.selectingText&&u.state.selectingText(a),!(c&&DB(u,p,c,g,a))&&(p==1?c?CB(u,c,g,a):V(a)==f.scroller&&ee(a):p==2?(c&&Lh(u.doc,c),setTimeout(function(){return f.input.focus()},20)):p==3&&(M?u.display.input.onContextMenu(a):h0(u)))}}}function DB(a,u,f,c,p){var g="Click";return c=="double"?g="Double"+g:c=="triple"&&(g="Triple"+g),g=(u==1?"Left":u==2?"Middle":"Right")+g,Df(a,RD(g,p),p,function(E){if(typeof E=="string"&&(E=Nf[E]),!E)return!1;var N=!1;try{a.isReadOnly()&&(a.state.suppressEdits=!0),N=E(a,f)!=Me}finally{a.state.suppressEdits=!1}return N})}function xB(a,u,f){var c=a.getOption("configureMouse"),p=c?c(a,u,f):{};if(p.unit==null){var g=x?f.shiftKey&&f.metaKey:f.altKey;p.unit=g?"rectangle":u=="single"?"char":u=="double"?"word":"line"}return(p.extend==null||a.doc.extend)&&(p.extend=a.doc.extend||f.shiftKey),p.addNew==null&&(p.addNew=w?f.metaKey:f.ctrlKey),p.moveOnDrag==null&&(p.moveOnDrag=!(w?f.altKey:f.ctrlKey)),p}function CB(a,u,f,c){s?setTimeout(Ot(BN,a),0):a.curOp.focus=Fe(Ve(a));var p=xB(a,f,c),g=a.doc.sel,E;a.options.dragDrop&&re&&!a.isReadOnly()&&f=="single"&&(E=g.contains(u))>-1&&(ie((E=g.ranges[E]).from(),u)<0||u.xRel>0)&&(ie(E.to(),u)>0||u.xRel<0)?LB(a,c,u,p):IB(a,c,u,p)}function LB(a,u,f,c){var p=a.display,g=!1,E=Kr(a,function(I){d&&(p.scroller.draggable=!1),a.state.draggingText=!1,a.state.delayingBlurEvent&&(a.hasFocus()?a.state.delayingBlurEvent=!1:h0(a)),Ar(p.wrapper.ownerDocument,"mouseup",E),Ar(p.wrapper.ownerDocument,"mousemove",N),Ar(p.scroller,"dragstart",C),Ar(p.scroller,"drop",E),g||(ee(I),c.addNew||Lh(a.doc,f,null,null,c.extend),d&&!D||s&&l==9?setTimeout(function(){p.wrapper.ownerDocument.body.focus({preventScroll:!0}),p.input.focus()},20):p.input.focus())}),N=function(I){g=g||Math.abs(u.clientX-I.clientX)+Math.abs(u.clientY-I.clientY)>=10},C=function(){return g=!0};d&&(p.scroller.draggable=!0),a.state.draggingText=E,E.copy=!c.moveOnDrag,_e(p.wrapper.ownerDocument,"mouseup",E),_e(p.wrapper.ownerDocument,"mousemove",N),_e(p.scroller,"dragstart",C),_e(p.scroller,"drop",E),a.state.delayingBlurEvent=!0,setTimeout(function(){return p.input.focus()},20),p.scroller.dragDrop&&p.scroller.dragDrop()}function BD(a,u,f){if(f=="char")return new Nt(u,u);if(f=="word")return a.findWordAt(u);if(f=="line")return new Nt(W(u.line,0),Ye(a.doc,W(u.line+1,0)));var c=f(a,u);return new Nt(c.from,c.to)}function IB(a,u,f,c){s&&h0(a);var p=a.display,g=a.doc;ee(u);var E,N,C=g.sel,I=C.ranges;if(c.addNew&&!c.extend?(N=g.sel.contains(f),N>-1?E=I[N]:E=new Nt(f,f)):(E=g.sel.primary(),N=g.sel.primIndex),c.unit=="rectangle")c.addNew||(E=new Nt(f,f)),f=Ku(a,u,!0,!0),N=-1;else{var U=BD(a,f,c.unit);c.extend?E=N0(E,U.anchor,U.head,c.extend):E=U}c.addNew?N==-1?(N=I.length,gn(g,da(a,I.concat([E]),N),{scroll:!1,origin:"*mouse"})):I.length>1&&I[N].empty()&&c.unit=="char"&&!c.extend?(gn(g,da(a,I.slice(0,N).concat(I.slice(N+1)),0),{scroll:!1,origin:"*mouse"}),C=g.sel):D0(g,N,E,ze):(N=0,gn(g,new ki([E],0),ze),C=g.sel);var K=f;function $(Te){if(ie(K,Te)!=0)if(K=Te,c.unit=="rectangle"){for(var Ce=[],Ge=a.options.tabSize,qe=te(Ae(g,f.line).text,f.ch,Ge),lt=te(Ae(g,Te.line).text,Te.ch,Ge),Ht=Math.min(qe,lt),zr=Math.max(qe,lt),lr=Math.min(f.line,Te.line),li=Math.min(a.lastLine(),Math.max(f.line,Te.line));lr<=li;lr++){var Jn=Ae(g,lr).text,wr=oe(Jn,Ht,Ge);Ht==zr?Ce.push(new Nt(W(lr,wr),W(lr,wr))):Jn.length>wr&&Ce.push(new Nt(W(lr,wr),W(lr,oe(Jn,zr,Ge))))}Ce.length||Ce.push(new Nt(f,f)),gn(g,da(a,C.ranges.slice(0,N).concat(Ce),N),{origin:"*mouse",scroll:!1}),a.scrollIntoView(Te)}else{var Xn=E,sn=BD(a,Te,c.unit),Fr=Xn.anchor,Nr;ie(sn.anchor,Fr)>0?(Nr=sn.head,Fr=Pr(Xn.from(),sn.anchor)):(Nr=sn.anchor,Fr=_t(Xn.to(),sn.head));var mr=C.ranges.slice(0);mr[N]=AB(a,new Nt(Ye(g,Fr),Nr)),gn(g,da(a,mr,N),ze)}}var X=p.wrapper.getBoundingClientRect(),ae=0;function le(Te){var Ce=++ae,Ge=Ku(a,Te,!0,c.unit=="rectangle");if(!!Ge)if(ie(Ge,K)!=0){a.curOp.focus=Fe(Ve(a)),$(Ge);var qe=Oh(p,g);(Ge.line>=qe.to||Ge.lineX.bottom?20:0;lt&&setTimeout(Kr(a,function(){ae==Ce&&(p.scroller.scrollTop+=lt,le(Te))}),50)}}function pe(Te){a.state.selectingText=!1,ae=1/0,Te&&(ee(Te),p.input.focus()),Ar(p.wrapper.ownerDocument,"mousemove",be),Ar(p.wrapper.ownerDocument,"mouseup",Ne),g.history.lastSelOrigin=null}var be=Kr(a,function(Te){Te.buttons===0||!A(Te)?pe(Te):le(Te)}),Ne=Kr(a,pe);a.state.selectingText=Ne,_e(p.wrapper.ownerDocument,"mousemove",be),_e(p.wrapper.ownerDocument,"mouseup",Ne)}function AB(a,u){var f=u.anchor,c=u.head,p=Ae(a.doc,f.line);if(ie(f,c)==0&&f.sticky==c.sticky)return u;var g=xn(p);if(!g)return u;var E=vr(g,f.ch,f.sticky),N=g[E];if(N.from!=f.ch&&N.to!=f.ch)return u;var C=E+(N.from==f.ch==(N.level!=1)?0:1);if(C==0||C==g.length)return u;var I;if(c.line!=f.line)I=(c.line-f.line)*(a.doc.direction=="ltr"?1:-1)>0;else{var U=vr(g,c.ch,c.sticky),K=U-E||(c.ch-f.ch)*(N.level==1?-1:1);U==C-1||U==C?I=K<0:I=K>0}var $=g[C+(I?-1:0)],X=I==($.level==1),ae=X?$.from:$.to,le=X?"after":"before";return f.ch==ae&&f.sticky==le?u:new Nt(new W(f.line,ae,le),c)}function KD(a,u,f,c){var p,g;if(u.touches)p=u.touches[0].clientX,g=u.touches[0].clientY;else try{p=u.clientX,g=u.clientY}catch($){return!1}if(p>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;c&&ee(u);var E=a.display,N=E.lineDiv.getBoundingClientRect();if(g>N.bottom||!on(a,f))return Y(u);g-=N.top-E.viewOffset;for(var C=0;C=p){var U=wa(a.doc,g),K=a.display.gutterSpecs[C];return Ft(a,f,a,U,K.className,u),Y(u)}}}function R0(a,u){return KD(a,u,"gutterClick",!0)}function HD(a,u){lo(a.display,u)||RB(a,u)||nr(a,u,"contextmenu")||M||a.display.input.onContextMenu(u)}function RB(a,u){return on(a,"gutterContextMenu")?KD(a,u,"gutterContextMenu",!1):!1}function zD(a){a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+a.options.theme.replace(/(^|\s)\s*/g," cm-s-"),cf(a)}var pl={toString:function(){return"CodeMirror.Init"}},WD={},Mh={};function jB(a){var u=a.optionHandlers;function f(c,p,g,E){a.defaults[c]=p,g&&(u[c]=E?function(N,C,I){I!=pl&&g(N,C,I)}:g)}a.defineOption=f,a.Init=pl,f("value","",function(c,p){return c.setValue(p)},!0),f("mode",null,function(c,p){c.doc.modeOption=p,k0(c)},!0),f("indentUnit",2,k0,!0),f("indentWithTabs",!1),f("smartIndent",!0),f("tabSize",4,function(c){yf(c),cf(c),Wn(c)},!0),f("lineSeparator",null,function(c,p){if(c.doc.lineSep=p,!!p){var g=[],E=c.doc.first;c.doc.iter(function(C){for(var I=0;;){var U=C.text.indexOf(p,I);if(U==-1)break;I=U+p.length,g.push(W(E,U))}E++});for(var N=g.length-1;N>=0;N--)ll(c.doc,p,g[N],W(g[N].line,g[N].ch+p.length))}}),f("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(c,p,g){c.state.specialChars=new RegExp(p.source+(p.test(" ")?"":"| "),"g"),g!=pl&&c.refresh()}),f("specialCharPlaceholder",c2,function(c){return c.refresh()},!0),f("electricChars",!0),f("inputStyle",m?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),f("spellcheck",!1,function(c,p){return c.getInputField().spellcheck=p},!0),f("autocorrect",!1,function(c,p){return c.getInputField().autocorrect=p},!0),f("autocapitalize",!1,function(c,p){return c.getInputField().autocapitalize=p},!0),f("rtlMoveVisually",!L),f("wholeLineUpdateBefore",!0),f("theme","default",function(c){zD(c),mf(c)},!0),f("keyMap","default",function(c,p,g){var E=Ph(p),N=g!=pl&&Ph(g);N&&N.detach&&N.detach(c,E),E.attach&&E.attach(c,N||null)}),f("extraKeys",null),f("configureMouse",null),f("lineWrapping",!1,FB,!0),f("gutters",[],function(c,p){c.display.gutterSpecs=E0(p,c.options.lineNumbers),mf(c)},!0),f("fixedGutter",!0,function(c,p){c.display.gutters.style.left=p?c0(c.display)+"px":"0",c.refresh()},!0),f("coverGutterNextToScrollbar",!1,function(c){return al(c)},!0),f("scrollbarStyle","native",function(c){JN(c),al(c),c.display.scrollbars.setScrollTop(c.doc.scrollTop),c.display.scrollbars.setScrollLeft(c.doc.scrollLeft)},!0),f("lineNumbers",!1,function(c,p){c.display.gutterSpecs=E0(c.options.gutters,p),mf(c)},!0),f("firstLineNumber",1,mf,!0),f("lineNumberFormatter",function(c){return c},mf,!0),f("showCursorWhenSelecting",!1,ff,!0),f("resetSelectionOnContextMenu",!0),f("lineWiseCopyCut",!0),f("pasteLinesPerSelection",!0),f("selectionsMayTouch",!1),f("readOnly",!1,function(c,p){p=="nocursor"&&(nl(c),c.display.input.blur()),c.display.input.readOnlyChanged(p)}),f("screenReaderLabel",null,function(c,p){p=p===""?null:p,c.display.input.screenReaderLabelChanged(p)}),f("disableInput",!1,function(c,p){p||c.display.input.reset()},!0),f("dragDrop",!0,PB),f("allowDropFileTypes",null),f("cursorBlinkRate",530),f("cursorScrollMargin",0),f("cursorHeight",1,ff,!0),f("singleCursorHeightPerLine",!0,ff,!0),f("workTime",100),f("workDelay",100),f("flattenSpans",!0,yf,!0),f("addModeClass",!1,yf,!0),f("pollInterval",100),f("undoDepth",200,function(c,p){return c.doc.history.undoDepth=p}),f("historyEventDelay",1250),f("viewportMargin",10,function(c){return c.refresh()},!0),f("maxHighlightLength",1e4,yf,!0),f("moveInputWithCursor",!0,function(c,p){p||c.display.input.resetPosition()}),f("tabindex",null,function(c,p){return c.display.input.getField().tabIndex=p||""}),f("autofocus",null),f("direction","ltr",function(c,p){return c.doc.setDirection(p)},!0),f("phrases",null)}function PB(a,u,f){var c=f&&f!=pl;if(!u!=!c){var p=a.display.dragFunctions,g=u?_e:Ar;g(a.display.scroller,"dragstart",p.start),g(a.display.scroller,"dragenter",p.enter),g(a.display.scroller,"dragover",p.over),g(a.display.scroller,"dragleave",p.leave),g(a.display.scroller,"drop",p.drop)}}function FB(a){a.options.lineWrapping?(Le(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth="",a.display.sizerWidth=null):(z(a.display.wrapper,"CodeMirror-wrap"),e0(a)),f0(a),Wn(a),cf(a),setTimeout(function(){return al(a)},100)}function ir(a,u){var f=this;if(!(this instanceof ir))return new ir(a,u);this.options=u=u?Ie(u):{},Ie(WD,u,!1);var c=u.value;typeof c=="string"?c=new Yn(c,u.mode,null,u.lineSeparator,u.direction):u.mode&&(c.modeOption=u.mode),this.doc=c;var p=new ir.inputStyles[u.inputStyle](this),g=this.display=new J2(a,c,p,u);g.wrapper.CodeMirror=this,zD(this),u.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),JN(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new ce,keySeq:null,specialChars:null},u.autofocus&&!m&&g.input.focus(),s&&l<11&&setTimeout(function(){return f.display.input.reset(!0)},20),MB(this),vB(),Yu(this),this.curOp.forceUpdate=!0,oD(this,c),u.autofocus&&!m||this.hasFocus()?setTimeout(function(){f.hasFocus()&&!f.state.focused&&v0(f)},20):nl(this);for(var E in Mh)Mh.hasOwnProperty(E)&&Mh[E](this,u[E],pl);$N(this),u.finishInit&&u.finishInit(this);for(var N=0;N20*20}_e(u.scroller,"touchstart",function(C){if(!nr(a,C)&&!g(C)&&!R0(a,C)){u.input.ensurePolled(),clearTimeout(f);var I=+new Date;u.activeTouch={start:I,moved:!1,prev:I-c.end<=300?c:null},C.touches.length==1&&(u.activeTouch.left=C.touches[0].pageX,u.activeTouch.top=C.touches[0].pageY)}}),_e(u.scroller,"touchmove",function(){u.activeTouch&&(u.activeTouch.moved=!0)}),_e(u.scroller,"touchend",function(C){var I=u.activeTouch;if(I&&!lo(u,C)&&I.left!=null&&!I.moved&&new Date-I.start<300){var U=a.coordsChar(u.activeTouch,"page"),K;!I.prev||E(I,I.prev)?K=new Nt(U,U):!I.prev.prev||E(I,I.prev.prev)?K=a.findWordAt(U):K=new Nt(W(U.line,0),Ye(a.doc,W(U.line+1,0))),a.setSelection(K.anchor,K.head),a.focus(),ee(C)}p()}),_e(u.scroller,"touchcancel",p),_e(u.scroller,"scroll",function(){u.scroller.clientHeight&&(pf(a,u.scroller.scrollTop),zu(a,u.scroller.scrollLeft,!0),Ft(a,"scroll",a))}),_e(u.scroller,"mousewheel",function(C){return rD(a,C)}),_e(u.scroller,"DOMMouseScroll",function(C){return rD(a,C)}),_e(u.wrapper,"scroll",function(){return u.wrapper.scrollTop=u.wrapper.scrollLeft=0}),u.dragFunctions={enter:function(C){nr(a,C)||J(C)},over:function(C){nr(a,C)||(hB(a,C),J(C))},start:function(C){return pB(a,C)},drop:Kr(a,dB),leave:function(C){nr(a,C)||CD(a)}};var N=u.input.getField();_e(N,"keyup",function(C){return UD.call(a,C)}),_e(N,"keydown",Kr(a,VD)),_e(N,"keypress",Kr(a,GD)),_e(N,"focus",function(C){return v0(a,C)}),_e(N,"blur",function(C){return nl(a,C)})}var j0=[];ir.defineInitHook=function(a){return j0.push(a)};function Lf(a,u,f,c){var p=a.doc,g;f==null&&(f="add"),f=="smart"&&(p.mode.indent?g=af(a,u).state:f="prev");var E=a.options.tabSize,N=Ae(p,u),C=te(N.text,null,E);N.stateAfter&&(N.stateAfter=null);var I=N.text.match(/^\s*/)[0],U;if(!c&&!/\S/.test(N.text))U=0,f="not";else if(f=="smart"&&(U=p.mode.indent(g,N.text.slice(I.length),N.text),U==Me||U>150)){if(!c)return;f="prev"}f=="prev"?u>p.first?U=te(Ae(p,u-1).text,null,E):U=0:f=="add"?U=C+a.options.indentUnit:f=="subtract"?U=C-a.options.indentUnit:typeof f=="number"&&(U=C+f),U=Math.max(0,U);var K="",$=0;if(a.options.indentWithTabs)for(var X=Math.floor(U/E);X;--X)$+=E,K+=" ";if($E,C=vn(u),I=null;if(N&&c.ranges.length>1)if(pa&&pa.text.join(` -`)==u){if(c.ranges.length%pa.text.length==0){I=[];for(var U=0;U=0;$--){var X=c.ranges[$],ae=X.from(),le=X.to();X.empty()&&(f&&f>0?ae=W(ae.line,ae.ch-f):a.state.overwrite&&!N?le=W(le.line,Math.min(Ae(g,le.line).text.length,le.ch+se(C).length)):N&&pa&&pa.lineWise&&pa.text.join(` -`)==C.join(` -`)&&(ae=le=W(ae.line,0)));var pe={from:ae,to:le,text:I?I[$%I.length]:C,origin:p||(N?"paste":a.state.cutIncoming>E?"cut":"+input")};sl(a.doc,pe),Br(a,"inputRead",a,pe)}u&&!N&&JD(a,u),il(a),a.curOp.updateInput<2&&(a.curOp.updateInput=K),a.curOp.typing=!0,a.state.pasteIncoming=a.state.cutIncoming=-1}function YD(a,u){var f=a.clipboardData&&a.clipboardData.getData("Text");if(f)return a.preventDefault(),!u.isReadOnly()&&!u.options.disableInput&&u.hasFocus()&&si(u,function(){return P0(u,f,0,null,"paste")}),!0}function JD(a,u){if(!(!a.options.electricChars||!a.options.smartIndent))for(var f=a.doc.sel,c=f.ranges.length-1;c>=0;c--){var p=f.ranges[c];if(!(p.head.ch>100||c&&f.ranges[c-1].head.line==p.head.line)){var g=a.getModeAt(p.head),E=!1;if(g.electricChars){for(var N=0;N-1){E=Lf(a,p.head.line,"smart");break}}else g.electricInput&&g.electricInput.test(Ae(a.doc,p.head.line).text.slice(0,p.head.ch))&&(E=Lf(a,p.head.line,"smart"));E&&Br(a,"electricInput",a,p.head.line)}}}function XD(a){for(var u=[],f=[],c=0;cg&&(Lf(this,N.head.line,c,!0),g=N.head.line,E==this.doc.sel.primIndex&&il(this));else{var C=N.from(),I=N.to(),U=Math.max(g,C.line);g=Math.min(this.lastLine(),I.line-(I.ch?0:1))+1;for(var K=U;K0&&D0(this.doc,E,new Nt(C,$[E].to()),Qe)}}}),getTokenAt:function(c,p){return sN(this,c,p)},getLineTokens:function(c,p){return sN(this,W(c),p,!0)},getTokenTypeAt:function(c){c=Ye(this.doc,c);var p=aN(this,Ae(this.doc,c.line)),g=0,E=(p.length-1)/2,N=c.ch,C;if(N==0)C=p[2];else for(;;){var I=g+E>>1;if((I?p[I*2-1]:0)>=N)E=I;else if(p[I*2+1]C&&(c=C,E=!0),N=Ae(this.doc,c)}else N=c;return Th(this,N,{top:0,left:0},p||"page",g||E).top+(E?this.doc.height-so(N):0)},defaultTextHeight:function(){return tl(this.display)},defaultCharWidth:function(){return rl(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(c,p,g,E,N){var C=this.display;c=fa(this,Ye(this.doc,c));var I=c.bottom,U=c.left;if(p.style.position="absolute",p.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(p),C.sizer.appendChild(p),E=="over")I=c.top;else if(E=="above"||E=="near"){var K=Math.max(C.wrapper.clientHeight,this.doc.height),$=Math.max(C.sizer.clientWidth,C.lineSpace.clientWidth);(E=="above"||c.bottom+p.offsetHeight>K)&&c.top>p.offsetHeight?I=c.top-p.offsetHeight:c.bottom+p.offsetHeight<=K&&(I=c.bottom),U+p.offsetWidth>$&&(U=$-p.offsetWidth)}p.style.top=I+"px",p.style.left=p.style.right="",N=="right"?(U=C.sizer.clientWidth-p.offsetWidth,p.style.right="0px"):(N=="left"?U=0:N=="middle"&&(U=(C.sizer.clientWidth-p.offsetWidth)/2),p.style.left=U+"px"),g&&P2(this,{left:U,top:I,right:U+p.offsetWidth,bottom:I+p.offsetHeight})},triggerOnKeyDown:Ln(VD),triggerOnKeyPress:Ln(GD),triggerOnKeyUp:UD,triggerOnMouseDown:Ln(QD),execCommand:function(c){if(Nf.hasOwnProperty(c))return Nf[c].call(null,this)},triggerElectric:Ln(function(c){JD(this,c)}),findPosH:function(c,p,g,E){var N=1;p<0&&(N=-1,p=-p);for(var C=Ye(this.doc,c),I=0;I0&&U(g.charAt(E-1));)--E;for(;N.5||this.options.lineWrapping)&&f0(this),Ft(this,"refresh",this)}),swapDoc:Ln(function(c){var p=this.doc;return p.cm=null,this.state.selectingText&&this.state.selectingText(),oD(this,c),cf(this),this.display.input.reset(),df(this,c.scrollLeft,c.scrollTop),this.curOp.forceScroll=!0,Br(this,"swapDoc",this,p),p}),phrase:function(c){var p=this.options.phrases;return p&&Object.prototype.hasOwnProperty.call(p,c)?p[c]:c},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},un(a),a.registerHelper=function(c,p,g){f.hasOwnProperty(c)||(f[c]=a[c]={_global:[]}),f[c][p]=g},a.registerGlobalHelper=function(c,p,g,E){a.registerHelper(c,p,E),f[c]._global.push({pred:g,val:E})}}function M0(a,u,f,c,p){var g=u,E=f,N=Ae(a,u.line),C=p&&a.direction=="rtl"?-f:f;function I(){var Ne=u.line+C;return Ne=a.first+a.size?!1:(u=new W(Ne,u.ch,u.sticky),N=Ae(a,Ne))}function U(Ne){var Te;if(c=="codepoint"){var Ce=N.text.charCodeAt(u.ch+(f>0?0:-1));if(isNaN(Ce))Te=null;else{var Ge=f>0?Ce>=55296&&Ce<56320:Ce>=56320&&Ce<57343;Te=new W(u.line,Math.max(0,Math.min(N.text.length,u.ch+f*(Ge?2:1))),-f)}}else p?Te=TB(a.cm,N,u,f):Te=C0(N,u,f);if(Te==null)if(!Ne&&I())u=L0(p,a.cm,N,u.line,C);else return!1;else u=Te;return!0}if(c=="char"||c=="codepoint")U();else if(c=="column")U(!0);else if(c=="word"||c=="group")for(var K=null,$=c=="group",X=a.cm&&a.cm.getHelper(u,"wordChars"),ae=!0;!(f<0&&!U(!ae));ae=!1){var le=N.text.charAt(u.ch)||` -`,pe=dn(le,X)?"w":$&&le==` -`?"n":!$||/\s/.test(le)?null:"p";if($&&!ae&&!pe&&(pe="s"),K&&K!=pe){f<0&&(f=1,U(),u.sticky="after");break}if(pe&&(K=pe),f>0&&!U(!ae))break}var be=Ah(a,u,g,E,!0);return We(g,be)&&(be.hitSide=!0),be}function $D(a,u,f,c){var p=a.doc,g=u.left,E;if(c=="page"){var N=Math.min(a.display.wrapper.clientHeight,At(a).innerHeight||p(a).documentElement.clientHeight),C=Math.max(N-.5*tl(a.display),3);E=(f>0?u.bottom:u.top)+f*C}else c=="line"&&(E=f>0?u.bottom+3:u.top-3);for(var I;I=u0(a,g,E),!!I.outside;){if(f<0?E<=0:E>=p.height){I.hitSide=!0;break}E+=f*5}return I}var Mt=function(a){this.cm=a,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new ce,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Mt.prototype.init=function(a){var u=this,f=this,c=f.cm,p=f.div=a.lineDiv;p.contentEditable=!0,F0(p,c.options.spellcheck,c.options.autocorrect,c.options.autocapitalize);function g(N){for(var C=N.target;C;C=C.parentNode){if(C==p)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(C.className))break}return!1}_e(p,"paste",function(N){!g(N)||nr(c,N)||YD(N,c)||l<=11&&setTimeout(Kr(c,function(){return u.updateFromDOM()}),20)}),_e(p,"compositionstart",function(N){u.composing={data:N.data,done:!1}}),_e(p,"compositionupdate",function(N){u.composing||(u.composing={data:N.data,done:!1})}),_e(p,"compositionend",function(N){u.composing&&(N.data!=u.composing.data&&u.readFromDOMSoon(),u.composing.done=!0)}),_e(p,"touchstart",function(){return f.forceCompositionEnd()}),_e(p,"input",function(){u.composing||u.readFromDOMSoon()});function E(N){if(!(!g(N)||nr(c,N))){if(c.somethingSelected())qh({lineWise:!1,text:c.getSelections()}),N.type=="cut"&&c.replaceSelection("",null,"cut");else if(c.options.lineWiseCopyCut){var C=XD(c);qh({lineWise:!0,text:C.text}),N.type=="cut"&&c.operation(function(){c.setSelections(C.ranges,0,Qe),c.replaceSelection("",null,"cut")})}else return;if(N.clipboardData){N.clipboardData.clearData();var I=pa.text.join(` -`);if(N.clipboardData.setData("Text",I),N.clipboardData.getData("Text")==I){N.preventDefault();return}}var U=ZD(),K=U.firstChild;F0(K),c.display.lineSpace.insertBefore(U,c.display.lineSpace.firstChild),K.value=pa.text.join(` -`);var $=Fe(p.ownerDocument);Xe(K),setTimeout(function(){c.display.lineSpace.removeChild(U),$.focus(),$==p&&f.showPrimarySelection()},50)}}_e(p,"copy",E),_e(p,"cut",E)},Mt.prototype.screenReaderLabelChanged=function(a){a?this.div.setAttribute("aria-label",a):this.div.removeAttribute("aria-label")},Mt.prototype.prepareSelection=function(){var a=QN(this.cm,!1);return a.focus=Fe(this.div.ownerDocument)==this.div,a},Mt.prototype.showSelection=function(a,u){!a||!this.cm.display.view.length||((a.focus||u)&&this.showPrimarySelection(),this.showMultipleSelections(a))},Mt.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Mt.prototype.showPrimarySelection=function(){var a=this.getSelection(),u=this.cm,f=u.doc.sel.primary(),c=f.from(),p=f.to();if(u.display.viewTo==u.display.viewFrom||c.line>=u.display.viewTo||p.line=u.display.viewFrom&&ex(u,c)||{node:N[0].measure.map[2],offset:0},I=p.linea.firstLine()&&(c=W(c.line-1,Ae(a.doc,c.line-1).length)),p.ch==Ae(a.doc,p.line).text.length&&p.lineu.viewTo-1)return!1;var g,E,N;c.line==u.viewFrom||(g=Hu(a,c.line))==0?(E=wt(u.view[0].line),N=u.view[0].node):(E=wt(u.view[g].line),N=u.view[g-1].node.nextSibling);var C=Hu(a,p.line),I,U;if(C==u.view.length-1?(I=u.viewTo-1,U=u.lineDiv.lastChild):(I=wt(u.view[C+1].line)-1,U=u.view[C+1].node.previousSibling),!N)return!1;for(var K=a.doc.splitLines(UB(a,N,U,E,I)),$=oo(a.doc,W(E,0),W(I,Ae(a.doc,I).text.length));K.length>1&&$.length>1;)if(se(K)==se($))K.pop(),$.pop(),I--;else if(K[0]==$[0])K.shift(),$.shift(),E++;else break;for(var X=0,ae=0,le=K[0],pe=$[0],be=Math.min(le.length,pe.length);Xc.ch&&Ne.charCodeAt(Ne.length-ae-1)==Te.charCodeAt(Te.length-ae-1);)X--,ae++;K[K.length-1]=Ne.slice(0,Ne.length-ae).replace(/^\u200b+/,""),K[0]=K[0].slice(X).replace(/\u200b+$/,"");var Ge=W(E,X),qe=W(I,$.length?se($).length-ae:0);if(K.length>1||K[0]||ie(Ge,qe))return ll(a.doc,K,Ge,qe,"+input"),!0},Mt.prototype.ensurePolled=function(){this.forceCompositionEnd()},Mt.prototype.reset=function(){this.forceCompositionEnd()},Mt.prototype.forceCompositionEnd=function(){!this.composing||(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Mt.prototype.readFromDOMSoon=function(){var a=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(a.readDOMTimeout=null,a.composing)if(a.composing.done)a.composing=null;else return;a.updateFromDOM()},80))},Mt.prototype.updateFromDOM=function(){var a=this;(this.cm.isReadOnly()||!this.pollContent())&&si(this.cm,function(){return Wn(a.cm)})},Mt.prototype.setUneditable=function(a){a.contentEditable="false"},Mt.prototype.onKeyPress=function(a){a.charCode==0||this.composing||(a.preventDefault(),this.cm.isReadOnly()||Kr(this.cm,P0)(this.cm,String.fromCharCode(a.charCode==null?a.keyCode:a.charCode),0))},Mt.prototype.readOnlyChanged=function(a){this.div.contentEditable=String(a!="nocursor")},Mt.prototype.onContextMenu=function(){},Mt.prototype.resetPosition=function(){},Mt.prototype.needsContentAttribute=!0;function ex(a,u){var f=i0(a,u.line);if(!f||f.hidden)return null;var c=Ae(a.doc,u.line),p=xN(f,c,u.line),g=xn(c,a.doc.direction),E="left";if(g){var N=vr(g,u.ch);E=N%2?"right":"left"}var C=IN(p.map,u.ch,E);return C.offset=C.collapse=="right"?C.end:C.start,C}function VB(a){for(var u=a;u;u=u.parentNode)if(/CodeMirror-gutter-wrapper/.test(u.className))return!0;return!1}function hl(a,u){return u&&(a.bad=!0),a}function UB(a,u,f,c,p){var g="",E=!1,N=a.doc.lineSeparator(),C=!1;function I(X){return function(ae){return ae.id==X}}function U(){E&&(g+=N,C&&(g+=N),E=C=!1)}function K(X){X&&(U(),g+=X)}function $(X){if(X.nodeType==1){var ae=X.getAttribute("cm-text");if(ae){K(ae);return}var le=X.getAttribute("cm-marker"),pe;if(le){var be=a.findMarks(W(c,0),W(p+1,0),I(+le));be.length&&(pe=be[0].find(0))&&K(oo(a.doc,pe.from,pe.to).join(N));return}if(X.getAttribute("contenteditable")=="false")return;var Ne=/^(pre|div|p|li|table|br)$/i.test(X.nodeName);if(!/^br$/i.test(X.nodeName)&&X.textContent.length==0)return;Ne&&U();for(var Te=0;Te=9&&u.hasSelection&&(u.hasSelection=null),f.poll()}),_e(p,"paste",function(E){nr(c,E)||YD(E,c)||(c.state.pasteIncoming=+new Date,f.fastPoll())});function g(E){if(!nr(c,E)){if(c.somethingSelected())qh({lineWise:!1,text:c.getSelections()});else if(c.options.lineWiseCopyCut){var N=XD(c);qh({lineWise:!0,text:N.text}),E.type=="cut"?c.setSelections(N.ranges,null,Qe):(f.prevInput="",p.value=N.text.join(` -`),Xe(p))}else return;E.type=="cut"&&(c.state.cutIncoming=+new Date)}}_e(p,"cut",g),_e(p,"copy",g),_e(a.scroller,"paste",function(E){if(!(lo(a,E)||nr(c,E))){if(!p.dispatchEvent){c.state.pasteIncoming=+new Date,f.focus();return}var N=new Event("paste");N.clipboardData=E.clipboardData,p.dispatchEvent(N)}}),_e(a.lineSpace,"selectstart",function(E){lo(a,E)||ee(E)}),_e(p,"compositionstart",function(){var E=c.getCursor("from");f.composing&&f.composing.range.clear(),f.composing={start:E,range:c.markText(E,c.getCursor("to"),{className:"CodeMirror-composing"})}}),_e(p,"compositionend",function(){f.composing&&(f.poll(),f.composing.range.clear(),f.composing=null)})},Tr.prototype.createField=function(a){this.wrapper=ZD(),this.textarea=this.wrapper.firstChild;var u=this.cm.options;F0(this.textarea,u.spellcheck,u.autocorrect,u.autocapitalize)},Tr.prototype.screenReaderLabelChanged=function(a){a?this.textarea.setAttribute("aria-label",a):this.textarea.removeAttribute("aria-label")},Tr.prototype.prepareSelection=function(){var a=this.cm,u=a.display,f=a.doc,c=QN(a);if(a.options.moveInputWithCursor){var p=fa(a,f.sel.primary().head,"div"),g=u.wrapper.getBoundingClientRect(),E=u.lineDiv.getBoundingClientRect();c.teTop=Math.max(0,Math.min(u.wrapper.clientHeight-10,p.top+E.top-g.top)),c.teLeft=Math.max(0,Math.min(u.wrapper.clientWidth-10,p.left+E.left-g.left))}return c},Tr.prototype.showSelection=function(a){var u=this.cm,f=u.display;Q(f.cursorDiv,a.cursors),Q(f.selectionDiv,a.selection),a.teTop!=null&&(this.wrapper.style.top=a.teTop+"px",this.wrapper.style.left=a.teLeft+"px")},Tr.prototype.reset=function(a){if(!(this.contextMenuPending||this.composing&&a)){var u=this.cm;if(this.resetting=!0,u.somethingSelected()){this.prevInput="";var f=u.getSelection();this.textarea.value=f,u.state.focused&&Xe(this.textarea),s&&l>=9&&(this.hasSelection=f)}else a||(this.prevInput=this.textarea.value="",s&&l>=9&&(this.hasSelection=null));this.resetting=!1}},Tr.prototype.getField=function(){return this.textarea},Tr.prototype.supportsTouch=function(){return!1},Tr.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!m||Fe(this.textarea.ownerDocument)!=this.textarea))try{this.textarea.focus()}catch(a){}},Tr.prototype.blur=function(){this.textarea.blur()},Tr.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Tr.prototype.receivedFocus=function(){this.slowPoll()},Tr.prototype.slowPoll=function(){var a=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){a.poll(),a.cm.state.focused&&a.slowPoll()})},Tr.prototype.fastPoll=function(){var a=!1,u=this;u.pollingFast=!0;function f(){var c=u.poll();!c&&!a?(a=!0,u.polling.set(60,f)):(u.pollingFast=!1,u.slowPoll())}u.polling.set(20,f)},Tr.prototype.poll=function(){var a=this,u=this.cm,f=this.textarea,c=this.prevInput;if(this.contextMenuPending||this.resetting||!u.state.focused||Rr(f)&&!c&&!this.composing||u.isReadOnly()||u.options.disableInput||u.state.keySeq)return!1;var p=f.value;if(p==c&&!u.somethingSelected())return!1;if(s&&l>=9&&this.hasSelection===p||w&&/[\uf700-\uf7ff]/.test(p))return u.display.input.reset(),!1;if(u.doc.sel==u.display.selForContextMenu){var g=p.charCodeAt(0);if(g==8203&&!c&&(c="\u200B"),g==8666)return this.reset(),this.cm.execCommand("undo")}for(var E=0,N=Math.min(c.length,p.length);E1e3||p.indexOf(` -`)>-1?f.value=a.prevInput="":a.prevInput=p,a.composing&&(a.composing.range.clear(),a.composing.range=u.markText(a.composing.start,u.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Tr.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Tr.prototype.onKeyPress=function(){s&&l>=9&&(this.hasSelection=null),this.fastPoll()},Tr.prototype.onContextMenu=function(a){var u=this,f=u.cm,c=f.display,p=u.textarea;u.contextMenuPending&&u.contextMenuPending();var g=Ku(f,a),E=c.scroller.scrollTop;if(!g||b)return;var N=f.options.resetSelectionOnContextMenu;N&&f.doc.sel.contains(g)==-1&&Kr(f,gn)(f.doc,Vo(g),Qe);var C=p.style.cssText,I=u.wrapper.style.cssText,U=u.wrapper.offsetParent.getBoundingClientRect();u.wrapper.style.cssText="position: static",p.style.cssText=`position: absolute; width: 30px; height: 30px; - top: `+(a.clientY-U.top-5)+"px; left: "+(a.clientX-U.left-5)+`px; - z-index: 1000; background: `+(s?"rgba(255, 255, 255, .05)":"transparent")+`; - outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var K;d&&(K=p.ownerDocument.defaultView.scrollY),c.input.focus(),d&&p.ownerDocument.defaultView.scrollTo(null,K),c.input.reset(),f.somethingSelected()||(p.value=u.prevInput=" "),u.contextMenuPending=X,c.selForContextMenu=f.doc.sel,clearTimeout(c.detectingSelectAll);function $(){if(p.selectionStart!=null){var le=f.somethingSelected(),pe="\u200B"+(le?p.value:"");p.value="\u21DA",p.value=pe,u.prevInput=le?"":"\u200B",p.selectionStart=1,p.selectionEnd=pe.length,c.selForContextMenu=f.doc.sel}}function X(){if(u.contextMenuPending==X&&(u.contextMenuPending=!1,u.wrapper.style.cssText=I,p.style.cssText=C,s&&l<9&&c.scrollbars.setScrollTop(c.scroller.scrollTop=E),p.selectionStart!=null)){(!s||s&&l<9)&&$();var le=0,pe=function(){c.selForContextMenu==f.doc.sel&&p.selectionStart==0&&p.selectionEnd>0&&u.prevInput=="\u200B"?Kr(f,bD)(f):le++<10?c.detectingSelectAll=setTimeout(pe,500):(c.selForContextMenu=null,c.input.reset())};c.detectingSelectAll=setTimeout(pe,200)}}if(s&&l>=9&&$(),M){J(a);var ae=function(){Ar(window,"mouseup",ae),setTimeout(X,20)};_e(window,"mouseup",ae)}else setTimeout(X,50)},Tr.prototype.readOnlyChanged=function(a){a||this.reset(),this.textarea.disabled=a=="nocursor",this.textarea.readOnly=!!a},Tr.prototype.setUneditable=function(){},Tr.prototype.needsContentAttribute=!1;function QB(a,u){if(u=u?Ie(u):{},u.value=a.value,!u.tabindex&&a.tabIndex&&(u.tabindex=a.tabIndex),!u.placeholder&&a.placeholder&&(u.placeholder=a.placeholder),u.autofocus==null){var f=Fe(a.ownerDocument);u.autofocus=f==a||a.getAttribute("autofocus")!=null&&f==document.body}function c(){a.value=N.getValue()}var p;if(a.form&&(_e(a.form,"submit",c),!u.leaveSubmitMethodAlone)){var g=a.form;p=g.submit;try{var E=g.submit=function(){c(),g.submit=p,g.submit(),g.submit=E}}catch(C){}}u.finishInit=function(C){C.save=c,C.getTextArea=function(){return a},C.toTextArea=function(){C.toTextArea=isNaN,c(),a.parentNode.removeChild(C.getWrapperElement()),a.style.display="",a.form&&(Ar(a.form,"submit",c),!u.leaveSubmitMethodAlone&&typeof a.form.submit=="function"&&(a.form.submit=p))}},a.style.display="none";var N=ir(function(C){return a.parentNode.insertBefore(C,a.nextSibling)},u);return N}function BB(a){a.off=Ar,a.on=_e,a.wheelEventPixels=X2,a.Doc=Yn,a.splitLines=vn,a.countColumn=te,a.findColumn=oe,a.isWordChar=Ei,a.Pass=Me,a.signal=Ft,a.Line=Zs,a.changeEnd=Uo,a.scrollbarModel=YN,a.Pos=W,a.cmpPos=ie,a.modes=Cn,a.mimeModes=la,a.resolveMode=ui,a.getMode=io,a.modeExtensions=jo,a.extendMode=fh,a.copyState=ao,a.startState=nf,a.innerMode=Po,a.commands=Nf,a.keyMap=fo,a.keyName=jD,a.isModifierKey=AD,a.lookupKey=fl,a.normalizeKeyMap=bB,a.StringStream=gr,a.SharedTextMarker=kf,a.TextMarker=Qo,a.LineWidget=Sf,a.e_preventDefault=ee,a.e_stopPropagation=F,a.e_stop=J,a.addClass=Le,a.contains=ge,a.rmClass=z,a.keyNames=Bo}jB(ir),qB(ir);var KB="iter insert remove copy getEditor constructor".split(" ");for(var Uh in Yn.prototype)Yn.prototype.hasOwnProperty(Uh)&&we(KB,Uh)<0&&(ir.prototype[Uh]=function(a){return function(){return a.apply(this.doc,arguments)}}(Yn.prototype[Uh]));return un(Yn),ir.inputStyles={textarea:Tr,contenteditable:Mt},ir.defineMode=function(a){!ir.defaults.mode&&a!="null"&&(ir.defaults.mode=a),ch.apply(this,arguments)},ir.defineMIME=Js,ir.defineMode("null",function(){return{token:function(a){return a.skipToEnd()}}}),ir.defineMIME("text/plain","null"),ir.defineExtension=function(a,u){ir.prototype[a]=u},ir.defineDocExtension=function(a,u){Yn.prototype[a]=u},ir.fromTextArea=QB,BB(ir),ir.version="5.65.14",ir})});var jO=G((kV,OV)=>{(function(e){typeof kV=="object"&&typeof OV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t="CodeMirror-hint",r="CodeMirror-hint-active";e.showHint=function(k,T,S){if(!T)return k.showHint(S);S&&S.async&&(T.async=!0);var m={hint:T};if(S)for(var w in S)m[w]=S[w];return k.showHint(m)},e.defineExtension("showHint",function(k){k=s(this,this.getCursor("start"),k);var T=this.listSelections();if(!(T.length>1)){if(this.somethingSelected()){if(!k.hint.supportsSelection)return;for(var S=0;SL.clientHeight+1:!1,we;setTimeout(function(){we=m.getScrollInfo()});var ot=te.bottom-Ie;if(ot>0){var Me=te.bottom-te.top,Qe=te.top-(P.bottom-P.top)-2;Ie-te.topQe&&(L.style.height=(Me=Qe)+"px"),L.style.top=(xe=P.top-Me)+Le+"px",ge=!1):L.style.height=Ie-te.top-2+"px"}var ze=te.right-Ot;if(ce&&(ze+=m.display.nativeBarWidth),ze>0&&(te.right-te.left>Ot&&(L.style.width=Ot-5+"px",ze-=te.right-te.left-Ot),L.style.left=(he=Math.max(P.left-ze-Fe,0))+"px"),ce)for(var mt=L.firstChild;mt;mt=mt.nextSibling)mt.style.paddingRight=m.display.nativeBarWidth+"px";if(m.addKeyMap(this.keyMap=d(k,{moveFocus:function(fe,se){S.changeActive(S.selectedHint+fe,se)},setFocus:function(fe){S.changeActive(fe)},menuSize:function(){return S.screenAmount()},length:R.length,close:function(){k.close()},pick:function(){S.pick()},data:T})),k.options.closeOnUnfocus){var oe;m.on("blur",this.onBlur=function(){oe=setTimeout(function(){k.close()},100)}),m.on("focus",this.onFocus=function(){clearTimeout(oe)})}m.on("scroll",this.onScroll=function(){var fe=m.getScrollInfo(),se=m.getWrapperElement().getBoundingClientRect();we||(we=m.getScrollInfo());var Ue=xe+we.top-fe.top,at=Ue-(x.pageYOffset||(w.documentElement||w.body).scrollTop);if(ge||(at+=L.offsetHeight),at<=se.top||at>=se.bottom)return k.close();L.style.top=Ue+"px",L.style.left=he+we.left-fe.left+"px"}),e.on(L,"dblclick",function(fe){var se=h(L,fe.target||fe.srcElement);se&&se.hintId!=null&&(S.changeActive(se.hintId),S.pick())}),e.on(L,"click",function(fe){var se=h(L,fe.target||fe.srcElement);se&&se.hintId!=null&&(S.changeActive(se.hintId),k.options.completeOnSingleClick&&S.pick())}),e.on(L,"mousedown",function(){setTimeout(function(){m.focus()},20)});var me=this.getSelectedHintRange();return(me.from!==0||me.to!==0)&&this.scrollToActive(),e.signal(T,"select",R[this.selectedHint],L.childNodes[this.selectedHint]),!0}v.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode&&this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var k=this.completion.cm.getInputField();k.removeAttribute("aria-activedescendant"),k.removeAttribute("aria-owns");var T=this.completion.cm;this.completion.options.closeOnUnfocus&&(T.off("blur",this.onBlur),T.off("focus",this.onFocus)),T.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var k=this;this.keyMap={Enter:function(){k.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(k,T){if(k>=this.data.list.length?k=T?this.data.list.length-1:0:k<0&&(k=T?0:this.data.list.length-1),this.selectedHint!=k){var S=this.hints.childNodes[this.selectedHint];S&&(S.className=S.className.replace(" "+r,""),S.removeAttribute("aria-selected")),S=this.hints.childNodes[this.selectedHint=k],S.className+=" "+r,S.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",S.id),this.scrollToActive(),e.signal(this.data,"select",this.data.list[this.selectedHint],S)}},scrollToActive:function(){var k=this.getSelectedHintRange(),T=this.hints.childNodes[k.from],S=this.hints.childNodes[k.to],m=this.hints.firstChild;T.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=S.offsetTop+S.offsetHeight-this.hints.clientHeight+m.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var k=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-k),to:Math.min(this.data.list.length-1,this.selectedHint+k)}}};function y(k,T){if(!k.somethingSelected())return T;for(var S=[],m=0;m0?L(z):M(q+1)})}M(0)};return w.async=!0,w.supportsSelection=!0,w}else return(m=k.getHelper(k.getCursor(),"hintWords"))?function(x){return e.hint.fromList(x,{words:m})}:e.hint.anyword?function(x,L){return e.hint.anyword(x,L)}:function(){}}e.registerHelper("hint","auto",{resolve:D}),e.registerHelper("hint","fromList",function(k,T){var S=k.getCursor(),m=k.getTokenAt(S),w,x=e.Pos(S.line,m.start),L=S;m.start,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};e.defineOption("hintOptions",null)})});var PO=G((wV,NV)=>{(function(e){typeof wV=="object"&&typeof NV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),r=e.Pos,n={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function i(v){return v&&v.bracketRegex||/[(){}[\]]/}function o(v,y,b){var D=v.getLineHandle(y.line),_=y.ch-1,k=b&&b.afterCursor;k==null&&(k=/(^| )cm-fat-cursor($| )/.test(v.getWrapperElement().className));var T=i(b),S=!k&&_>=0&&T.test(D.text.charAt(_))&&n[D.text.charAt(_)]||T.test(D.text.charAt(_+1))&&n[D.text.charAt(++_)];if(!S)return null;var m=S.charAt(1)==">"?1:-1;if(b&&b.strict&&m>0!=(_==y.ch))return null;var w=v.getTokenTypeAt(r(y.line,_+1)),x=s(v,r(y.line,_+(m>0?1:0)),m,w,b);return x==null?null:{from:r(y.line,_),to:x&&x.pos,match:x&&x.ch==S.charAt(0),forward:m>0}}function s(v,y,b,D,_){for(var k=_&&_.maxScanLineLength||1e4,T=_&&_.maxScanLines||1e3,S=[],m=i(_),w=b>0?Math.min(y.line+T,v.lastLine()+1):Math.max(v.firstLine()-1,y.line-T),x=y.line;x!=w;x+=b){var L=v.getLine(x);if(!!L){var O=b>0?0:L.length-1,R=b>0?L.length:-1;if(!(L.length>k))for(x==y.line&&(O=y.ch-(b<0?1:0));O!=R;O+=b){var M=L.charAt(O);if(m.test(M)&&(D===void 0||(v.getTokenTypeAt(r(x,O+1))||"")==(D||""))){var q=n[M];if(q&&q.charAt(1)==">"==b>0)S.push(M);else if(S.length)S.pop();else return{pos:r(x,O),ch:M}}}}}return x-b==(b>0?v.lastLine():v.firstLine())?!1:null}function l(v,y,b){for(var D=v.state.matchBrackets.maxHighlightLineLength||1e3,_=b&&b.highlightNonMatching,k=[],T=v.listSelections(),S=0;S{(function(e){typeof DV=="object"&&typeof xV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},r=e.Pos;e.defineOption("autoCloseBrackets",!1,function(k,T,S){S&&S!=e.Init&&(k.removeKeyMap(i),k.state.closeBrackets=null),T&&(o(n(T,"pairs")),k.state.closeBrackets=T,k.addKeyMap(i))});function n(k,T){return T=="pairs"&&typeof k=="string"?k:typeof k=="object"&&k[T]!=null?k[T]:t[T]}var i={Backspace:d,Enter:h};function o(k){for(var T=0;T=0;w--){var L=m[w].head;k.replaceRange("",r(L.line,L.ch-1),r(L.line,L.ch+1),"+delete")}}function h(k){var T=l(k),S=T&&n(T,"explode");if(!S||k.getOption("disableInput"))return e.Pass;for(var m=k.listSelections(),w=0;w0?{line:L.head.line,ch:L.head.ch+T}:{line:L.head.line-1};S.push({anchor:O,head:O})}k.setSelections(S,w)}function y(k){var T=e.cmpPos(k.anchor,k.head)>0;return{anchor:new r(k.anchor.line,k.anchor.ch+(T?-1:1)),head:new r(k.head.line,k.head.ch+(T?1:-1))}}function b(k,T){var S=l(k);if(!S||k.getOption("disableInput"))return e.Pass;var m=n(S,"pairs"),w=m.indexOf(T);if(w==-1)return e.Pass;for(var x=n(S,"closeBefore"),L=n(S,"triples"),O=m.charAt(w+1)==T,R=k.listSelections(),M=w%2==0,q,z=0;z=0&&k.getRange(Q,r(Q.line,Q.ch+3))==T+T+T?P="skipThree":P="skip";else if(O&&Q.ch>1&&L.indexOf(T)>=0&&k.getRange(r(Q.line,Q.ch-2),Q)==T+T){if(Q.ch>2&&/\bstring/.test(k.getTokenTypeAt(r(Q.line,Q.ch-2))))return e.Pass;P="addFour"}else if(O){var xe=Q.ch==0?" ":k.getRange(r(Q.line,Q.ch-1),Q);if(!e.isWordChar(he)&&xe!=T&&!e.isWordChar(xe))P="both";else return e.Pass}else if(M&&(he.length===0||/\s/.test(he)||x.indexOf(he)>-1))P="both";else return e.Pass;if(!q)q=P;else if(q!=P)return e.Pass}var ge=w%2?m.charAt(w-1):T,Fe=w%2?T:m.charAt(w+1);k.operation(function(){if(q=="skip")v(k,1);else if(q=="skipThree")v(k,3);else if(q=="surround"){for(var Le=k.getSelections(),He=0;He{(function(e){typeof LV=="object"&&typeof IV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";function t(r){return function(n,i){var o=i.line,s=n.getLine(o);function l(D){for(var _,k=i.ch,T=0;;){var S=k<=0?-1:s.lastIndexOf(D[0],k-1);if(S==-1){if(T==1)break;T=1,k=s.length;continue}if(T==1&&Sr.lastLine())return null;var y=r.getTokenAt(e.Pos(v,1));if(/\S/.test(y.string)||(y=r.getTokenAt(e.Pos(v,y.end+1))),y.type!="keyword"||y.string!="import")return null;for(var b=v,D=Math.min(r.lastLine(),v+10);b<=D;++b){var _=r.getLine(b),k=_.indexOf(";");if(k!=-1)return{startCh:y.end,end:e.Pos(b,k)}}}var o=n.line,s=i(o),l;if(!s||i(o-1)||(l=i(o-2))&&l.end.line==o-1)return null;for(var d=s.end;;){var h=i(d.line+1);if(h==null)break;d=h.end}return{from:r.clipPos(e.Pos(o,s.startCh+1)),to:d}}),e.registerHelper("fold","include",function(r,n){function i(h){if(hr.lastLine())return null;var v=r.getTokenAt(e.Pos(h,1));if(/\S/.test(v.string)||(v=r.getTokenAt(e.Pos(h,v.end+1))),v.type=="meta"&&v.string.slice(0,8)=="#include")return v.start+8}var o=n.line,s=i(o);if(s==null||i(o-1)!=null)return null;for(var l=o;;){var d=i(l+1);if(d==null)break;++l}return{from:e.Pos(o,s+1),to:r.clipPos(e.Pos(l))}})})});var jV=G((AV,RV)=>{(function(e){typeof AV=="object"&&typeof RV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";function t(o,s,l,d){if(l&&l.call){var h=l;l=null}else var h=i(o,l,"rangeFinder");typeof s=="number"&&(s=e.Pos(s,0));var v=i(o,l,"minFoldSize");function y(k){var T=h(o,s);if(!T||T.to.line-T.from.lineo.firstLine();)s=e.Pos(s.line-1,0),b=y(!1);if(!(!b||b.cleared||d==="unfold")){var D=r(o,l,b);e.on(D,"mousedown",function(k){_.clear(),e.e_preventDefault(k)});var _=o.markText(b.from,b.to,{replacedWith:D,clearOnEnter:i(o,l,"clearOnEnter"),__isFold:!0});_.on("clear",function(k,T){e.signal(o,"unfold",o,k,T)}),e.signal(o,"fold",o,b.from,b.to)}}function r(o,s,l){var d=i(o,s,"widget");if(typeof d=="function"&&(d=d(l.from,l.to)),typeof d=="string"){var h=document.createTextNode(d);d=document.createElement("span"),d.appendChild(h),d.className="CodeMirror-foldmarker"}else d&&(d=d.cloneNode(!0));return d}e.newFoldFunction=function(o,s){return function(l,d){t(l,d,{rangeFinder:o,widget:s})}},e.defineExtension("foldCode",function(o,s,l){t(this,o,s,l)}),e.defineExtension("isFolded",function(o){for(var s=this.findMarksAt(o),l=0;l{(function(e){typeof PV=="object"&&typeof FV=="object"?e(Wt(),jV()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./foldcode"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("foldGutter",!1,function(_,k,T){T&&T!=e.Init&&(_.clearGutter(_.state.foldGutter.options.gutter),_.state.foldGutter=null,_.off("gutterClick",h),_.off("changes",y),_.off("viewportChange",b),_.off("fold",D),_.off("unfold",D),_.off("swapDoc",y),_.off("optionChange",v)),k&&(_.state.foldGutter=new r(n(k)),d(_),_.on("gutterClick",h),_.on("changes",y),_.on("viewportChange",b),_.on("fold",D),_.on("unfold",D),_.on("swapDoc",y),_.on("optionChange",v))});var t=e.Pos;function r(_){this.options=_,this.from=this.to=0}function n(_){return _===!0&&(_={}),_.gutter==null&&(_.gutter="CodeMirror-foldgutter"),_.indicatorOpen==null&&(_.indicatorOpen="CodeMirror-foldgutter-open"),_.indicatorFolded==null&&(_.indicatorFolded="CodeMirror-foldgutter-folded"),_}function i(_,k){for(var T=_.findMarks(t(k,0),t(k+1,0)),S=0;S=w){if(O&&q&&O.test(q.className))return;M=o(S.indicatorOpen)}}!M&&!q||_.setGutterMarker(R,S.gutter,M)})}function l(_){return new RegExp("(^|\\s)"+_+"(?:$|\\s)\\s*")}function d(_){var k=_.getViewport(),T=_.state.foldGutter;!T||(_.operation(function(){s(_,k.from,k.to)}),T.from=k.from,T.to=k.to)}function h(_,k,T){var S=_.state.foldGutter;if(!!S){var m=S.options;if(T==m.gutter){var w=i(_,k);w?w.clear():_.foldCode(t(k,0),m)}}}function v(_,k){k=="mode"&&y(_)}function y(_){var k=_.state.foldGutter;if(!!k){var T=k.options;k.from=k.to=0,clearTimeout(k.changeUpdate),k.changeUpdate=setTimeout(function(){d(_)},T.foldOnChangeTimeSpan||600)}}function b(_){var k=_.state.foldGutter;if(!!k){var T=k.options;clearTimeout(k.changeUpdate),k.changeUpdate=setTimeout(function(){var S=_.getViewport();k.from==k.to||S.from-k.to>20||k.from-S.to>20?d(_):_.operation(function(){S.fromk.to&&(s(_,k.to,S.to),k.to=S.to)})},T.updateViewportTimeSpan||400)}}function D(_,k){var T=_.state.foldGutter;if(!!T){var S=k.line;S>=T.from&&S{(function(e){typeof MV=="object"&&typeof qV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t="CodeMirror-lint-markers",r="CodeMirror-lint-line-";function n(L,O,R){var M=document.createElement("div");M.className="CodeMirror-lint-tooltip cm-s-"+L.options.theme,M.appendChild(R.cloneNode(!0)),L.state.lint.options.selfContain?L.getWrapperElement().appendChild(M):document.body.appendChild(M);function q(z){if(!M.parentNode)return e.off(document,"mousemove",q);M.style.top=Math.max(0,z.clientY-M.offsetHeight-5)+"px",M.style.left=z.clientX+5+"px"}return e.on(document,"mousemove",q),q(O),M.style.opacity!=null&&(M.style.opacity=1),M}function i(L){L.parentNode&&L.parentNode.removeChild(L)}function o(L){!L.parentNode||(L.style.opacity==null&&i(L),L.style.opacity=0,setTimeout(function(){i(L)},600))}function s(L,O,R,M){var q=n(L,O,R);function z(){e.off(M,"mouseout",z),q&&(o(q),q=null)}var B=setInterval(function(){if(q)for(var Q=M;;Q=Q.parentNode){if(Q&&Q.nodeType==11&&(Q=Q.host),Q==document.body)return;if(!Q){z();break}}if(!q)return clearInterval(B)},400);e.on(M,"mouseout",z)}function l(L,O,R){this.marked=[],O instanceof Function&&(O={getAnnotations:O}),(!O||O===!0)&&(O={}),this.options={},this.linterOptions=O.options||{};for(var M in d)this.options[M]=d[M];for(var M in O)d.hasOwnProperty(M)?O[M]!=null&&(this.options[M]=O[M]):O.options||(this.linterOptions[M]=O[M]);this.timeout=null,this.hasGutter=R,this.onMouseOver=function(q){x(L,q)},this.waitingFor=0}var d={highlightLines:!1,tooltips:!0,delay:500,lintOnChange:!0,getAnnotations:null,async:!1,selfContain:null,formatAnnotation:null,onUpdateLinting:null};function h(L){var O=L.state.lint;O.hasGutter&&L.clearGutter(t),O.options.highlightLines&&v(L);for(var R=0;R1,M.tooltips)),M.highlightLines&&L.addLineClass(z,"wrap",r+Q)}}M.onUpdateLinting&&M.onUpdateLinting(O,q,L)}}function m(L){var O=L.state.lint;!O||(clearTimeout(O.timeout),O.timeout=setTimeout(function(){T(L)},O.options.delay))}function w(L,O,R){for(var M=R.target||R.srcElement,q=document.createDocumentFragment(),z=0;z{(function(e){typeof UV=="object"&&typeof GV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t=e.Pos;function r(T){var S=T.flags;return S!=null?S:(T.ignoreCase?"i":"")+(T.global?"g":"")+(T.multiline?"m":"")}function n(T,S){for(var m=r(T),w=m,x=0;xO);R++){var M=T.getLine(L++);w=w==null?M:w+` -`+M}x=x*2,S.lastIndex=m.ch;var q=S.exec(w);if(q){var z=w.slice(0,q.index).split(` -`),B=q[0].split(` -`),Q=m.line+z.length-1,P=z[z.length-1].length;return{from:t(Q,P),to:t(Q+B.length-1,B.length==1?P+B[0].length:B[B.length-1].length),match:q}}}}function l(T,S,m){for(var w,x=0;x<=T.length;){S.lastIndex=x;var L=S.exec(T);if(!L)break;var O=L.index+L[0].length;if(O>T.length-m)break;(!w||O>w.index+w[0].length)&&(w=L),x=L.index+1}return w}function d(T,S,m){S=n(S,"g");for(var w=m.line,x=m.ch,L=T.firstLine();w>=L;w--,x=-1){var O=T.getLine(w),R=l(O,S,x<0?0:O.length-x);if(R)return{from:t(w,R.index),to:t(w,R.index+R[0].length),match:R}}}function h(T,S,m){if(!i(S))return d(T,S,m);S=n(S,"gm");for(var w,x=1,L=T.getLine(m.line).length-m.ch,O=m.line,R=T.firstLine();O>=R;){for(var M=0;M=R;M++){var q=T.getLine(O--);w=w==null?q:q+` -`+w}x*=2;var z=l(w,S,L);if(z){var B=w.slice(0,z.index).split(` -`),Q=z[0].split(` -`),P=O+B.length,he=B[B.length-1].length;return{from:t(P,he),to:t(P+Q.length-1,Q.length==1?he+Q[0].length:Q[Q.length-1].length),match:z}}}}var v,y;String.prototype.normalize?(v=function(T){return T.normalize("NFD").toLowerCase()},y=function(T){return T.normalize("NFD")}):(v=function(T){return T.toLowerCase()},y=function(T){return T});function b(T,S,m,w){if(T.length==S.length)return m;for(var x=0,L=m+Math.max(0,T.length-S.length);;){if(x==L)return x;var O=x+L>>1,R=w(T.slice(0,O)).length;if(R==m)return O;R>m?L=O:x=O+1}}function D(T,S,m,w){if(!S.length)return null;var x=w?v:y,L=x(S).split(/\r|\n\r?/);e:for(var O=m.line,R=m.ch,M=T.lastLine()+1-L.length;O<=M;O++,R=0){var q=T.getLine(O).slice(R),z=x(q);if(L.length==1){var B=z.indexOf(L[0]);if(B==-1)continue e;var m=b(q,z,B,x)+R;return{from:t(O,b(q,z,B,x)+R),to:t(O,b(q,z,B+L[0].length,x)+R)}}else{var Q=z.length-L[0].length;if(z.slice(Q)!=L[0])continue e;for(var P=1;P=M;O--,R=-1){var q=T.getLine(O);R>-1&&(q=q.slice(0,R));var z=x(q);if(L.length==1){var B=z.lastIndexOf(L[0]);if(B==-1)continue e;return{from:t(O,b(q,z,B,x)),to:t(O,b(q,z,B+L[0].length,x))}}else{var Q=L[L.length-1];if(z.slice(0,Q.length)!=Q)continue e;for(var P=1,m=O-L.length+1;P(this.doc.getLine(S.line)||"").length&&(S.ch=0,S.line++)),e.cmpPos(S,this.doc.clipPos(S))!=0))return this.atOccurrence=!1;var m=this.matches(T,S);if(this.afterEmptyMatch=m&&e.cmpPos(m.from,m.to)==0,m)return this.pos=m,this.atOccurrence=!0,this.pos.match||!0;var w=t(T?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:w,to:w},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(T,S){if(!!this.atOccurrence){var m=e.splitLines(T);this.doc.replaceRange(m,this.pos.from,this.pos.to,S),this.pos.to=t(this.pos.from.line+m.length-1,m[m.length-1].length+(m.length==1?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",function(T,S,m){return new k(this.doc,T,S,m)}),e.defineDocExtension("getSearchCursor",function(T,S,m){return new k(this,T,S,m)}),e.defineExtension("selectMatches",function(T,S){for(var m=[],w=this.getSearchCursor(T,this.getCursor("from"),S);w.findNext()&&!(e.cmpPos(w.to(),this.getCursor("to"))>0);)m.push({anchor:w.from(),head:w.to()});m.length&&this.setSelections(m,0)})})});var Vp=G((QV,BV)=>{(function(e){typeof QV=="object"&&typeof BV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){function t(n,i,o){var s=n.getWrapperElement(),l;return l=s.appendChild(document.createElement("div")),o?l.className="CodeMirror-dialog CodeMirror-dialog-bottom":l.className="CodeMirror-dialog CodeMirror-dialog-top",typeof i=="string"?l.innerHTML=i:l.appendChild(i),e.addClass(s,"dialog-opened"),l}function r(n,i){n.state.currentNotificationClose&&n.state.currentNotificationClose(),n.state.currentNotificationClose=i}e.defineExtension("openDialog",function(n,i,o){o||(o={}),r(this,null);var s=t(this,n,o.bottom),l=!1,d=this;function h(b){if(typeof b=="string")v.value=b;else{if(l)return;l=!0,e.rmClass(s.parentNode,"dialog-opened"),s.parentNode.removeChild(s),d.focus(),o.onClose&&o.onClose(s)}}var v=s.getElementsByTagName("input")[0],y;return v?(v.focus(),o.value&&(v.value=o.value,o.selectValueOnOpen!==!1&&v.select()),o.onInput&&e.on(v,"input",function(b){o.onInput(b,v.value,h)}),o.onKeyUp&&e.on(v,"keyup",function(b){o.onKeyUp(b,v.value,h)}),e.on(v,"keydown",function(b){o&&o.onKeyDown&&o.onKeyDown(b,v.value,h)||((b.keyCode==27||o.closeOnEnter!==!1&&b.keyCode==13)&&(v.blur(),e.e_stop(b),h()),b.keyCode==13&&i(v.value,b))}),o.closeOnBlur!==!1&&e.on(s,"focusout",function(b){b.relatedTarget!==null&&h()})):(y=s.getElementsByTagName("button")[0])&&(e.on(y,"click",function(){h(),d.focus()}),o.closeOnBlur!==!1&&e.on(y,"blur",h),y.focus()),h}),e.defineExtension("openConfirm",function(n,i,o){r(this,null);var s=t(this,n,o&&o.bottom),l=s.getElementsByTagName("button"),d=!1,h=this,v=1;function y(){d||(d=!0,e.rmClass(s.parentNode,"dialog-opened"),s.parentNode.removeChild(s),h.focus())}l[0].focus();for(var b=0;b{(function(e){typeof KV=="object"&&typeof HV=="object"?e(Wt(),Vp()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(i,o,s,l,d){i.openDialog?i.openDialog(o,d,{value:l,selectValueOnOpen:!0,bottom:i.options.search.bottom}):d(prompt(s,l))}function r(i){return i.phrase("Jump to line:")+' '+i.phrase("(Use line:column or scroll% syntax)")+""}function n(i,o){var s=Number(o);return/^[-+]/.test(o)?i.getCursor().line+s:s-1}e.commands.jumpToLine=function(i){var o=i.getCursor();t(i,r(i),i.phrase("Jump to line:"),o.line+1+":"+o.ch,function(s){if(!!s){var l;if(l=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(s))i.setCursor(n(i,l[1]),Number(l[2]));else if(l=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(s)){var d=Math.round(i.lineCount()*Number(l[1])/100);/^[-+]/.test(l[1])&&(d=o.line+d+1),i.setCursor(d-1,o.ch)}else(l=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(s))&&i.setCursor(n(i,l[1]),o.ch)}})},e.keyMap.default["Alt-G"]="jumpToLine"})});var VO=G((zV,WV)=>{(function(e){typeof zV=="object"&&typeof WV=="object"?e(Wt(),qp(),PO()):typeof define=="function"&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],e):e(CodeMirror)})(function(e){"use strict";var t=e.commands,r=e.Pos;function n(m,w,x){if(x<0&&w.ch==0)return m.clipPos(r(w.line-1));var L=m.getLine(w.line);if(x>0&&w.ch>=L.length)return m.clipPos(r(w.line+1,0));for(var O="start",R,M=w.ch,q=M,z=x<0?0:L.length,B=0;q!=z;q+=x,B++){var Q=L.charAt(x<0?q-1:q),P=Q!="_"&&e.isWordChar(Q)?"w":"o";if(P=="w"&&Q.toUpperCase()==Q&&(P="W"),O=="start")P!="o"?(O="in",R=P):M=q+x;else if(O=="in"&&R!=P){if(R=="w"&&P=="W"&&x<0&&q--,R=="W"&&P=="w"&&x>0)if(q==M+1){R="w";continue}else q--;break}}return r(w.line,q)}function i(m,w){m.extendSelectionsBy(function(x){return m.display.shift||m.doc.extend||x.empty()?n(m.doc,x.head,w):w<0?x.from():x.to()})}t.goSubwordLeft=function(m){i(m,-1)},t.goSubwordRight=function(m){i(m,1)},t.scrollLineUp=function(m){var w=m.getScrollInfo();if(!m.somethingSelected()){var x=m.lineAtHeight(w.top+w.clientHeight,"local");m.getCursor().line>=x&&m.execCommand("goLineUp")}m.scrollTo(null,w.top-m.defaultTextHeight())},t.scrollLineDown=function(m){var w=m.getScrollInfo();if(!m.somethingSelected()){var x=m.lineAtHeight(w.top,"local")+1;m.getCursor().line<=x&&m.execCommand("goLineDown")}m.scrollTo(null,w.top+m.defaultTextHeight())},t.splitSelectionByLine=function(m){for(var w=m.listSelections(),x=[],L=0;LO.line&&M==R.line&&R.ch==0||x.push({anchor:M==O.line?O:r(M,0),head:M==R.line?R:r(M)});m.setSelections(x,0)},t.singleSelectionTop=function(m){var w=m.listSelections()[0];m.setSelection(w.anchor,w.head,{scroll:!1})},t.selectLine=function(m){for(var w=m.listSelections(),x=[],L=0;LL?x.push(q,z):x.length&&(x[x.length-1]=z),L=z}m.operation(function(){for(var B=0;Bm.lastLine()?m.replaceRange(` -`+he,r(m.lastLine()),null,"+swapLine"):m.replaceRange(he+` -`,r(P,0),null,"+swapLine")}m.setSelections(O),m.scrollIntoView()})},t.swapLineDown=function(m){if(m.isReadOnly())return e.Pass;for(var w=m.listSelections(),x=[],L=m.lastLine()+1,O=w.length-1;O>=0;O--){var R=w[O],M=R.to().line+1,q=R.from().line;R.to().ch==0&&!R.empty()&&M--,M=0;z-=2){var B=x[z],Q=x[z+1],P=m.getLine(B);B==m.lastLine()?m.replaceRange("",r(B-1),r(B),"+swapLine"):m.replaceRange("",r(B,0),r(B+1,0),"+swapLine"),m.replaceRange(P+` -`,r(Q,0),null,"+swapLine")}m.scrollIntoView()})},t.toggleCommentIndented=function(m){m.toggleComment({indent:!0})},t.joinLines=function(m){for(var w=m.listSelections(),x=[],L=0;L=0;R--){var M=x[L[R]];if(!(q&&e.cmpPos(M.head,q)>0)){var z=s(m,M.head);q=z.from,m.replaceRange(w(z.word),z.from,z.to)}}})}t.smartBackspace=function(m){if(m.somethingSelected())return e.Pass;m.operation(function(){for(var w=m.listSelections(),x=m.getOption("indentUnit"),L=w.length-1;L>=0;L--){var O=w[L].head,R=m.getRange({line:O.line,ch:0},O),M=e.countColumn(R,null,m.getOption("tabSize")),q=m.findPosH(O,-1,"char",!1);if(R&&!/\S/.test(R)&&M%x==0){var z=new r(O.line,e.findColumn(R,M-x,x));z.ch!=O.ch&&(q=z)}m.replaceRange("",q,O,"+delete")}})},t.delLineRight=function(m){m.operation(function(){for(var w=m.listSelections(),x=w.length-1;x>=0;x--)m.replaceRange("",w[x].anchor,r(w[x].to().line),"+delete");m.scrollIntoView()})},t.upcaseAtCursor=function(m){D(m,function(w){return w.toUpperCase()})},t.downcaseAtCursor=function(m){D(m,function(w){return w.toLowerCase()})},t.setSublimeMark=function(m){m.state.sublimeMark&&m.state.sublimeMark.clear(),m.state.sublimeMark=m.setBookmark(m.getCursor())},t.selectToSublimeMark=function(m){var w=m.state.sublimeMark&&m.state.sublimeMark.find();w&&m.setSelection(m.getCursor(),w)},t.deleteToSublimeMark=function(m){var w=m.state.sublimeMark&&m.state.sublimeMark.find();if(w){var x=m.getCursor(),L=w;if(e.cmpPos(x,L)>0){var O=L;L=x,x=O}m.state.sublimeKilled=m.getRange(x,L),m.replaceRange("",x,L)}},t.swapWithSublimeMark=function(m){var w=m.state.sublimeMark&&m.state.sublimeMark.find();w&&(m.state.sublimeMark.clear(),m.state.sublimeMark=m.setBookmark(m.getCursor()),m.setCursor(w))},t.sublimeYank=function(m){m.state.sublimeKilled!=null&&m.replaceSelection(m.state.sublimeKilled,null,"paste")},t.showInCenter=function(m){var w=m.cursorCoords(null,"local");m.scrollTo(null,(w.top+w.bottom)/2-m.getScrollInfo().clientHeight/2)};function _(m){var w=m.getCursor("from"),x=m.getCursor("to");if(e.cmpPos(w,x)==0){var L=s(m,w);if(!L.word)return;w=L.from,x=L.to}return{from:w,to:x,query:m.getRange(w,x),word:L}}function k(m,w){var x=_(m);if(!!x){var L=x.query,O=m.getSearchCursor(L,w?x.to:x.from);(w?O.findNext():O.findPrevious())?m.setSelection(O.from(),O.to()):(O=m.getSearchCursor(L,w?r(m.firstLine(),0):m.clipPos(r(m.lastLine()))),(w?O.findNext():O.findPrevious())?m.setSelection(O.from(),O.to()):x.word&&m.setSelection(x.from,x.to))}}t.findUnder=function(m){k(m,!0)},t.findUnderPrevious=function(m){k(m,!1)},t.findAllUnder=function(m){var w=_(m);if(!!w){for(var x=m.getSearchCursor(w.query),L=[],O=-1;x.findNext();)L.push({anchor:x.from(),head:x.to()}),x.from().line<=w.from.line&&x.from().ch<=w.from.ch&&O++;m.setSelections(L,O)}};var T=e.keyMap;T.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},e.normalizeKeyMap(T.macSublime),T.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},e.normalizeKeyMap(T.pcSublime);var S=T.default==T.macDefault;T.sublime=S?T.macSublime:T.pcSublime})});var XV=G((YV,JV)=>{(function(e){typeof YV=="object"&&typeof JV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t={},r=/[^\s\u00a0]/,n=e.Pos,i=e.cmpPos;function o(d){var h=d.search(r);return h==-1?0:h}e.commands.toggleComment=function(d){d.toggleComment()},e.defineExtension("toggleComment",function(d){d||(d=t);for(var h=this,v=1/0,y=this.listSelections(),b=null,D=y.length-1;D>=0;D--){var _=y[D].from(),k=y[D].to();_.line>=v||(k.line>=v&&(k=n(v,0)),v=_.line,b==null?h.uncomment(_,k,d)?b="un":(h.lineComment(_,k,d),b="line"):b=="un"?h.uncomment(_,k,d):h.lineComment(_,k,d))}});function s(d,h,v){return/\bstring\b/.test(d.getTokenTypeAt(n(h.line,0)))&&!/^[\'\"\`]/.test(v)}function l(d,h){var v=d.getMode();return v.useInnerComments===!1||!v.innerMode?v:d.getModeAt(h)}e.defineExtension("lineComment",function(d,h,v){v||(v=t);var y=this,b=l(y,d),D=y.getLine(d.line);if(!(D==null||s(y,d,D))){var _=v.lineComment||b.lineComment;if(!_){(v.blockCommentStart||b.blockCommentStart)&&(v.fullLines=!0,y.blockComment(d,h,v));return}var k=Math.min(h.ch!=0||h.line==d.line?h.line+1:h.line,y.lastLine()+1),T=v.padding==null?" ":v.padding,S=v.commentBlankLines||d.line==h.line;y.operation(function(){if(v.indent){for(var m=null,w=d.line;wL.length)&&(m=L)}for(var w=d.line;wk||y.operation(function(){if(v.fullLines!=!1){var S=r.test(y.getLine(k));y.replaceRange(T+_,n(k)),y.replaceRange(D+T,n(d.line,0));var m=v.blockCommentLead||b.blockCommentLead;if(m!=null)for(var w=d.line+1;w<=k;++w)(w!=k||S)&&y.replaceRange(m+T,n(w,0))}else{var x=i(y.getCursor("to"),h)==0,L=!y.somethingSelected();y.replaceRange(_,h),x&&y.setSelection(L?h:y.getCursor("from"),h),y.replaceRange(D,d)}})}}),e.defineExtension("uncomment",function(d,h,v){v||(v=t);var y=this,b=l(y,d),D=Math.min(h.ch!=0||h.line==d.line?h.line:h.line-1,y.lastLine()),_=Math.min(d.line,D),k=v.lineComment||b.lineComment,T=[],S=v.padding==null?" ":v.padding,m;e:{if(!k)break e;for(var w=_;w<=D;++w){var x=y.getLine(w),L=x.indexOf(k);if(L>-1&&!/comment/.test(y.getTokenTypeAt(n(w,L+1)))&&(L=-1),L==-1&&r.test(x)||L>-1&&r.test(x.slice(0,L)))break e;T.push(x)}if(y.operation(function(){for(var Le=_;Le<=D;++Le){var He=T[Le-_],Xe=He.indexOf(k),Ve=Xe+k.length;Xe<0||(He.slice(Ve,Ve+S.length)==S&&(Ve+=S.length),m=!0,y.replaceRange("",n(Le,Xe),n(Le,Ve)))}}),m)return!0}var O=v.blockCommentStart||b.blockCommentStart,R=v.blockCommentEnd||b.blockCommentEnd;if(!O||!R)return!1;var M=v.blockCommentLead||b.blockCommentLead,q=y.getLine(_),z=q.indexOf(O);if(z==-1)return!1;var B=D==_?q:y.getLine(D),Q=B.indexOf(R,D==_?z+O.length:0),P=n(_,z+1),he=n(D,Q+1);if(Q==-1||!/comment/.test(y.getTokenTypeAt(P))||!/comment/.test(y.getTokenTypeAt(he))||y.getRange(P,he,` -`).indexOf(R)>-1)return!1;var xe=q.lastIndexOf(O,d.ch),ge=xe==-1?-1:q.slice(0,d.ch).indexOf(R,xe+O.length);if(xe!=-1&&ge!=-1&&ge+R.length!=d.ch)return!1;ge=B.indexOf(R,h.ch);var Fe=B.slice(h.ch).lastIndexOf(O,ge-h.ch);return xe=ge==-1||Fe==-1?-1:h.ch+Fe,ge!=-1&&xe!=-1&&xe!=h.ch?!1:(y.operation(function(){y.replaceRange("",n(D,Q-(S&&B.slice(Q-S.length,Q)==S?S.length:0)),n(D,Q+R.length));var Le=z+O.length;if(S&&q.slice(Le,Le+S.length)==S&&(Le+=S.length),y.replaceRange("",n(_,z),n(_,Le)),M)for(var He=_+1;He<=D;++He){var Xe=y.getLine(He),Ve=Xe.indexOf(M);if(!(Ve==-1||r.test(Xe.slice(0,Ve)))){var At=Ve+M.length;S&&Xe.slice(At,At+S.length)==S&&(At+=S.length),y.replaceRange("",n(He,Ve),n(He,At))}}}),!0)})})});var UO=G((ZV,$V)=>{(function(e){typeof ZV=="object"&&typeof $V=="object"?e(Wt(),qp(),Vp()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(O,R){return typeof O=="string"?O=new RegExp(O.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),R?"gi":"g"):O.global||(O=new RegExp(O.source,O.ignoreCase?"gi":"g")),{token:function(M){O.lastIndex=M.pos;var q=O.exec(M.string);if(q&&q.index==M.pos)return M.pos+=q[0].length||1,"searching";q?M.pos=q.index:M.skipToEnd()}}}function r(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function n(O){return O.state.search||(O.state.search=new r)}function i(O){return typeof O=="string"&&O==O.toLowerCase()}function o(O,R,M){return O.getSearchCursor(R,M,{caseFold:i(R),multiline:!0})}function s(O,R,M,q,z){O.openDialog(R,q,{value:M,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){_(O)},onKeyDown:z,bottom:O.options.search.bottom})}function l(O,R,M,q,z){O.openDialog?O.openDialog(R,z,{value:q,selectValueOnOpen:!0,bottom:O.options.search.bottom}):z(prompt(M,q))}function d(O,R,M,q){O.openConfirm?O.openConfirm(R,q):confirm(M)&&q[0]()}function h(O){return O.replace(/\\([nrt\\])/g,function(R,M){return M=="n"?` -`:M=="r"?"\r":M=="t"?" ":M=="\\"?"\\":R})}function v(O){var R=O.match(/^\/(.*)\/([a-z]*)$/);if(R)try{O=new RegExp(R[1],R[2].indexOf("i")==-1?"":"i")}catch(M){}else O=h(O);return(typeof O=="string"?O=="":O.test(""))&&(O=/x^/),O}function y(O,R,M){R.queryText=M,R.query=v(M),O.removeOverlay(R.overlay,i(R.query)),R.overlay=t(R.query,i(R.query)),O.addOverlay(R.overlay),O.showMatchesOnScrollbar&&(R.annotate&&(R.annotate.clear(),R.annotate=null),R.annotate=O.showMatchesOnScrollbar(R.query,i(R.query)))}function b(O,R,M,q){var z=n(O);if(z.query)return D(O,R);var B=O.getSelection()||z.lastQuery;if(B instanceof RegExp&&B.source=="x^"&&(B=null),M&&O.openDialog){var Q=null,P=function(he,xe){e.e_stop(xe),!!he&&(he!=z.queryText&&(y(O,z,he),z.posFrom=z.posTo=O.getCursor()),Q&&(Q.style.opacity=1),D(O,xe.shiftKey,function(ge,Fe){var Le;Fe.line<3&&document.querySelector&&(Le=O.display.wrapper.querySelector(".CodeMirror-dialog"))&&Le.getBoundingClientRect().bottom-4>O.cursorCoords(Fe,"window").top&&((Q=Le).style.opacity=.4)}))};s(O,T(O),B,P,function(he,xe){var ge=e.keyName(he),Fe=O.getOption("extraKeys"),Le=Fe&&Fe[ge]||e.keyMap[O.getOption("keyMap")][ge];Le=="findNext"||Le=="findPrev"||Le=="findPersistentNext"||Le=="findPersistentPrev"?(e.e_stop(he),y(O,n(O),xe),O.execCommand(Le)):(Le=="find"||Le=="findPersistent")&&(e.e_stop(he),P(xe,he))}),q&&B&&(y(O,z,B),D(O,R))}else l(O,T(O),"Search for:",B,function(he){he&&!z.query&&O.operation(function(){y(O,z,he),z.posFrom=z.posTo=O.getCursor(),D(O,R)})})}function D(O,R,M){O.operation(function(){var q=n(O),z=o(O,q.query,R?q.posFrom:q.posTo);!z.find(R)&&(z=o(O,q.query,R?e.Pos(O.lastLine()):e.Pos(O.firstLine(),0)),!z.find(R))||(O.setSelection(z.from(),z.to()),O.scrollIntoView({from:z.from(),to:z.to()},20),q.posFrom=z.from(),q.posTo=z.to(),M&&M(z.from(),z.to()))})}function _(O){O.operation(function(){var R=n(O);R.lastQuery=R.query,!!R.query&&(R.query=R.queryText=null,O.removeOverlay(R.overlay),R.annotate&&(R.annotate.clear(),R.annotate=null))})}function k(O,R){var M=O?document.createElement(O):document.createDocumentFragment();for(var q in R)M[q]=R[q];for(var z=2;z{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.hintList=ea.objectValues=ea.forEachState=ea.getFieldDef=ea.getDefinitionState=void 0;var Y$=ht(),Fc=vi();function J$(e){let t;return eU(e,r=>{switch(r.kind){case"Query":case"ShortQuery":case"Mutation":case"Subscription":case"FragmentDefinition":t=r;break}}),t}ea.getDefinitionState=J$;function X$(e,t,r){return r===Fc.SchemaMetaFieldDef.name&&e.getQueryType()===t?Fc.SchemaMetaFieldDef:r===Fc.TypeMetaFieldDef.name&&e.getQueryType()===t?Fc.TypeMetaFieldDef:r===Fc.TypeNameMetaFieldDef.name&&(0,Y$.isCompositeType)(t)?Fc.TypeNameMetaFieldDef:"getFields"in t?t.getFields()[r]:null}ea.getFieldDef=X$;function eU(e,t){let r=[],n=e;for(;n==null?void 0:n.kind;)r.push(n),n=n.prevState;for(let i=r.length-1;i>=0;i--)t(r[i])}ea.forEachState=eU;function Z$(e){let t=Object.keys(e),r=t.length,n=new Array(r);for(let i=0;i!n.isDeprecated);let r=e.map(n=>({proximity:tee(tU(n.label),t),entry:n}));return GO(GO(r,n=>n.proximity<=2),n=>!n.entry.isDeprecated).sort((n,i)=>(n.entry.isDeprecated?1:0)-(i.entry.isDeprecated?1:0)||n.proximity-i.proximity||n.entry.label.length-i.entry.label.length).map(n=>n.entry)}function GO(e,t){let r=e.filter(t);return r.length===0?e:r}function tU(e){return e.toLowerCase().replace(/\W/g,"")}function tee(e,t){let r=ree(t,e);return e.length>t.length&&(r-=e.length-t.length-1,r+=e.indexOf(t)===0?0:.5),r}function ree(e,t){let r,n,i=[],o=e.length,s=t.length;for(r=0;r<=o;r++)i[r]=[r];for(n=1;n<=s;n++)i[0][n]=n;for(r=1;r<=o;r++)for(n=1;n<=s;n++){let l=e[r-1]===t[n-1]?0:1;i[r][n]=Math.min(i[r-1][n]+1,i[r][n-1]+1,i[r-1][n-1]+l),r>1&&n>1&&e[r-1]===t[n-2]&&e[r-2]===t[n-1]&&(i[r][n]=Math.min(i[r][n],i[r-2][n-2]+l))}return i[o][s]}});var nU=G((rU,iy)=>{(function(e){if(typeof iy=="object"&&typeof iy.exports=="object"){var t=e(tx,rU);t!==void 0&&(iy.exports=t)}else typeof define=="function"&&define.amd&&define(["require","exports"],e)})(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TextDocument=t.EOL=t.WorkspaceFolder=t.InlayHint=t.InlayHintLabelPart=t.InlayHintKind=t.InlineValueContext=t.InlineValueEvaluatableExpression=t.InlineValueVariableLookup=t.InlineValueText=t.SemanticTokens=t.SemanticTokenModifiers=t.SemanticTokenTypes=t.SelectionRange=t.DocumentLink=t.FormattingOptions=t.CodeLens=t.CodeAction=t.CodeActionContext=t.CodeActionTriggerKind=t.CodeActionKind=t.DocumentSymbol=t.WorkspaceSymbol=t.SymbolInformation=t.SymbolTag=t.SymbolKind=t.DocumentHighlight=t.DocumentHighlightKind=t.SignatureInformation=t.ParameterInformation=t.Hover=t.MarkedString=t.CompletionList=t.CompletionItem=t.CompletionItemLabelDetails=t.InsertTextMode=t.InsertReplaceEdit=t.CompletionItemTag=t.InsertTextFormat=t.CompletionItemKind=t.MarkupContent=t.MarkupKind=t.TextDocumentItem=t.OptionalVersionedTextDocumentIdentifier=t.VersionedTextDocumentIdentifier=t.TextDocumentIdentifier=t.WorkspaceChange=t.WorkspaceEdit=t.DeleteFile=t.RenameFile=t.CreateFile=t.TextDocumentEdit=t.AnnotatedTextEdit=t.ChangeAnnotationIdentifier=t.ChangeAnnotation=t.TextEdit=t.Command=t.Diagnostic=t.CodeDescription=t.DiagnosticTag=t.DiagnosticSeverity=t.DiagnosticRelatedInformation=t.FoldingRange=t.FoldingRangeKind=t.ColorPresentation=t.ColorInformation=t.Color=t.LocationLink=t.Location=t.Range=t.Position=t.uinteger=t.integer=t.URI=t.DocumentUri=void 0;var r;(function(F){function Y(J){return typeof J=="string"}F.is=Y})(r=t.DocumentUri||(t.DocumentUri={}));var n;(function(F){function Y(J){return typeof J=="string"}F.is=Y})(n=t.URI||(t.URI={}));var i;(function(F){F.MIN_VALUE=-2147483648,F.MAX_VALUE=2147483647;function Y(J){return typeof J=="number"&&F.MIN_VALUE<=J&&J<=F.MAX_VALUE}F.is=Y})(i=t.integer||(t.integer={}));var o;(function(F){F.MIN_VALUE=0,F.MAX_VALUE=2147483647;function Y(J){return typeof J=="number"&&F.MIN_VALUE<=J&&J<=F.MAX_VALUE}F.is=Y})(o=t.uinteger||(t.uinteger={}));var s;(function(F){function Y(V,A){return V===Number.MAX_VALUE&&(V=o.MAX_VALUE),A===Number.MAX_VALUE&&(A=o.MAX_VALUE),{line:V,character:A}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.uinteger(A.line)&&ee.uinteger(A.character)}F.is=J})(s=t.Position||(t.Position={}));var l;(function(F){function Y(V,A,re,ue){if(ee.uinteger(V)&&ee.uinteger(A)&&ee.uinteger(re)&&ee.uinteger(ue))return{start:s.create(V,A),end:s.create(re,ue)};if(s.is(V)&&s.is(A))return{start:V,end:A};throw new Error("Range#create called with invalid arguments[".concat(V,", ").concat(A,", ").concat(re,", ").concat(ue,"]"))}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&s.is(A.start)&&s.is(A.end)}F.is=J})(l=t.Range||(t.Range={}));var d;(function(F){function Y(V,A){return{uri:V,range:A}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&l.is(A.range)&&(ee.string(A.uri)||ee.undefined(A.uri))}F.is=J})(d=t.Location||(t.Location={}));var h;(function(F){function Y(V,A,re,ue){return{targetUri:V,targetRange:A,targetSelectionRange:re,originSelectionRange:ue}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&l.is(A.targetRange)&&ee.string(A.targetUri)&&l.is(A.targetSelectionRange)&&(l.is(A.originSelectionRange)||ee.undefined(A.originSelectionRange))}F.is=J})(h=t.LocationLink||(t.LocationLink={}));var v;(function(F){function Y(V,A,re,ue){return{red:V,green:A,blue:re,alpha:ue}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.numberRange(A.red,0,1)&&ee.numberRange(A.green,0,1)&&ee.numberRange(A.blue,0,1)&&ee.numberRange(A.alpha,0,1)}F.is=J})(v=t.Color||(t.Color={}));var y;(function(F){function Y(V,A){return{range:V,color:A}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&l.is(A.range)&&v.is(A.color)}F.is=J})(y=t.ColorInformation||(t.ColorInformation={}));var b;(function(F){function Y(V,A,re){return{label:V,textEdit:A,additionalTextEdits:re}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.string(A.label)&&(ee.undefined(A.textEdit)||L.is(A))&&(ee.undefined(A.additionalTextEdits)||ee.typedArray(A.additionalTextEdits,L.is))}F.is=J})(b=t.ColorPresentation||(t.ColorPresentation={}));var D;(function(F){F.Comment="comment",F.Imports="imports",F.Region="region"})(D=t.FoldingRangeKind||(t.FoldingRangeKind={}));var _;(function(F){function Y(V,A,re,ue,Ze,Ut){var Rt={startLine:V,endLine:A};return ee.defined(re)&&(Rt.startCharacter=re),ee.defined(ue)&&(Rt.endCharacter=ue),ee.defined(Ze)&&(Rt.kind=Ze),ee.defined(Ut)&&(Rt.collapsedText=Ut),Rt}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.uinteger(A.startLine)&&ee.uinteger(A.startLine)&&(ee.undefined(A.startCharacter)||ee.uinteger(A.startCharacter))&&(ee.undefined(A.endCharacter)||ee.uinteger(A.endCharacter))&&(ee.undefined(A.kind)||ee.string(A.kind))}F.is=J})(_=t.FoldingRange||(t.FoldingRange={}));var k;(function(F){function Y(V,A){return{location:V,message:A}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&d.is(A.location)&&ee.string(A.message)}F.is=J})(k=t.DiagnosticRelatedInformation||(t.DiagnosticRelatedInformation={}));var T;(function(F){F.Error=1,F.Warning=2,F.Information=3,F.Hint=4})(T=t.DiagnosticSeverity||(t.DiagnosticSeverity={}));var S;(function(F){F.Unnecessary=1,F.Deprecated=2})(S=t.DiagnosticTag||(t.DiagnosticTag={}));var m;(function(F){function Y(J){var V=J;return ee.objectLiteral(V)&&ee.string(V.href)}F.is=Y})(m=t.CodeDescription||(t.CodeDescription={}));var w;(function(F){function Y(V,A,re,ue,Ze,Ut){var Rt={range:V,message:A};return ee.defined(re)&&(Rt.severity=re),ee.defined(ue)&&(Rt.code=ue),ee.defined(Ze)&&(Rt.source=Ze),ee.defined(Ut)&&(Rt.relatedInformation=Ut),Rt}F.create=Y;function J(V){var A,re=V;return ee.defined(re)&&l.is(re.range)&&ee.string(re.message)&&(ee.number(re.severity)||ee.undefined(re.severity))&&(ee.integer(re.code)||ee.string(re.code)||ee.undefined(re.code))&&(ee.undefined(re.codeDescription)||ee.string((A=re.codeDescription)===null||A===void 0?void 0:A.href))&&(ee.string(re.source)||ee.undefined(re.source))&&(ee.undefined(re.relatedInformation)||ee.typedArray(re.relatedInformation,k.is))}F.is=J})(w=t.Diagnostic||(t.Diagnostic={}));var x;(function(F){function Y(V,A){for(var re=[],ue=2;ue0&&(Ze.arguments=re),Ze}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.title)&&ee.string(A.command)}F.is=J})(x=t.Command||(t.Command={}));var L;(function(F){function Y(re,ue){return{range:re,newText:ue}}F.replace=Y;function J(re,ue){return{range:{start:re,end:re},newText:ue}}F.insert=J;function V(re){return{range:re,newText:""}}F.del=V;function A(re){var ue=re;return ee.objectLiteral(ue)&&ee.string(ue.newText)&&l.is(ue.range)}F.is=A})(L=t.TextEdit||(t.TextEdit={}));var O;(function(F){function Y(V,A,re){var ue={label:V};return A!==void 0&&(ue.needsConfirmation=A),re!==void 0&&(ue.description=re),ue}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.string(A.label)&&(ee.boolean(A.needsConfirmation)||A.needsConfirmation===void 0)&&(ee.string(A.description)||A.description===void 0)}F.is=J})(O=t.ChangeAnnotation||(t.ChangeAnnotation={}));var R;(function(F){function Y(J){var V=J;return ee.string(V)}F.is=Y})(R=t.ChangeAnnotationIdentifier||(t.ChangeAnnotationIdentifier={}));var M;(function(F){function Y(re,ue,Ze){return{range:re,newText:ue,annotationId:Ze}}F.replace=Y;function J(re,ue,Ze){return{range:{start:re,end:re},newText:ue,annotationId:Ze}}F.insert=J;function V(re,ue){return{range:re,newText:"",annotationId:ue}}F.del=V;function A(re){var ue=re;return L.is(ue)&&(O.is(ue.annotationId)||R.is(ue.annotationId))}F.is=A})(M=t.AnnotatedTextEdit||(t.AnnotatedTextEdit={}));var q;(function(F){function Y(V,A){return{textDocument:V,edits:A}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&He.is(A.textDocument)&&Array.isArray(A.edits)}F.is=J})(q=t.TextDocumentEdit||(t.TextDocumentEdit={}));var z;(function(F){function Y(V,A,re){var ue={kind:"create",uri:V};return A!==void 0&&(A.overwrite!==void 0||A.ignoreIfExists!==void 0)&&(ue.options=A),re!==void 0&&(ue.annotationId=re),ue}F.create=Y;function J(V){var A=V;return A&&A.kind==="create"&&ee.string(A.uri)&&(A.options===void 0||(A.options.overwrite===void 0||ee.boolean(A.options.overwrite))&&(A.options.ignoreIfExists===void 0||ee.boolean(A.options.ignoreIfExists)))&&(A.annotationId===void 0||R.is(A.annotationId))}F.is=J})(z=t.CreateFile||(t.CreateFile={}));var B;(function(F){function Y(V,A,re,ue){var Ze={kind:"rename",oldUri:V,newUri:A};return re!==void 0&&(re.overwrite!==void 0||re.ignoreIfExists!==void 0)&&(Ze.options=re),ue!==void 0&&(Ze.annotationId=ue),Ze}F.create=Y;function J(V){var A=V;return A&&A.kind==="rename"&&ee.string(A.oldUri)&&ee.string(A.newUri)&&(A.options===void 0||(A.options.overwrite===void 0||ee.boolean(A.options.overwrite))&&(A.options.ignoreIfExists===void 0||ee.boolean(A.options.ignoreIfExists)))&&(A.annotationId===void 0||R.is(A.annotationId))}F.is=J})(B=t.RenameFile||(t.RenameFile={}));var Q;(function(F){function Y(V,A,re){var ue={kind:"delete",uri:V};return A!==void 0&&(A.recursive!==void 0||A.ignoreIfNotExists!==void 0)&&(ue.options=A),re!==void 0&&(ue.annotationId=re),ue}F.create=Y;function J(V){var A=V;return A&&A.kind==="delete"&&ee.string(A.uri)&&(A.options===void 0||(A.options.recursive===void 0||ee.boolean(A.options.recursive))&&(A.options.ignoreIfNotExists===void 0||ee.boolean(A.options.ignoreIfNotExists)))&&(A.annotationId===void 0||R.is(A.annotationId))}F.is=J})(Q=t.DeleteFile||(t.DeleteFile={}));var P;(function(F){function Y(J){var V=J;return V&&(V.changes!==void 0||V.documentChanges!==void 0)&&(V.documentChanges===void 0||V.documentChanges.every(function(A){return ee.string(A.kind)?z.is(A)||B.is(A)||Q.is(A):q.is(A)}))}F.is=Y})(P=t.WorkspaceEdit||(t.WorkspaceEdit={}));var he=function(){function F(Y,J){this.edits=Y,this.changeAnnotations=J}return F.prototype.insert=function(Y,J,V){var A,re;if(V===void 0?A=L.insert(Y,J):R.is(V)?(re=V,A=M.insert(Y,J,V)):(this.assertChangeAnnotations(this.changeAnnotations),re=this.changeAnnotations.manage(V),A=M.insert(Y,J,re)),this.edits.push(A),re!==void 0)return re},F.prototype.replace=function(Y,J,V){var A,re;if(V===void 0?A=L.replace(Y,J):R.is(V)?(re=V,A=M.replace(Y,J,V)):(this.assertChangeAnnotations(this.changeAnnotations),re=this.changeAnnotations.manage(V),A=M.replace(Y,J,re)),this.edits.push(A),re!==void 0)return re},F.prototype.delete=function(Y,J){var V,A;if(J===void 0?V=L.del(Y):R.is(J)?(A=J,V=M.del(Y,J)):(this.assertChangeAnnotations(this.changeAnnotations),A=this.changeAnnotations.manage(J),V=M.del(Y,A)),this.edits.push(V),A!==void 0)return A},F.prototype.add=function(Y){this.edits.push(Y)},F.prototype.all=function(){return this.edits},F.prototype.clear=function(){this.edits.splice(0,this.edits.length)},F.prototype.assertChangeAnnotations=function(Y){if(Y===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},F}(),xe=function(){function F(Y){this._annotations=Y===void 0?Object.create(null):Y,this._counter=0,this._size=0}return F.prototype.all=function(){return this._annotations},Object.defineProperty(F.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),F.prototype.manage=function(Y,J){var V;if(R.is(Y)?V=Y:(V=this.nextId(),J=Y),this._annotations[V]!==void 0)throw new Error("Id ".concat(V," is already in use."));if(J===void 0)throw new Error("No annotation provided for id ".concat(V));return this._annotations[V]=J,this._size++,V},F.prototype.nextId=function(){return this._counter++,this._counter.toString()},F}(),ge=function(){function F(Y){var J=this;this._textEditChanges=Object.create(null),Y!==void 0?(this._workspaceEdit=Y,Y.documentChanges?(this._changeAnnotations=new xe(Y.changeAnnotations),Y.changeAnnotations=this._changeAnnotations.all(),Y.documentChanges.forEach(function(V){if(q.is(V)){var A=new he(V.edits,J._changeAnnotations);J._textEditChanges[V.textDocument.uri]=A}})):Y.changes&&Object.keys(Y.changes).forEach(function(V){var A=new he(Y.changes[V]);J._textEditChanges[V]=A})):this._workspaceEdit={}}return Object.defineProperty(F.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),F.prototype.getTextEditChange=function(Y){if(He.is(Y)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var J={uri:Y.uri,version:Y.version},V=this._textEditChanges[J.uri];if(!V){var A=[],re={textDocument:J,edits:A};this._workspaceEdit.documentChanges.push(re),V=new he(A,this._changeAnnotations),this._textEditChanges[J.uri]=V}return V}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var V=this._textEditChanges[Y];if(!V){var A=[];this._workspaceEdit.changes[Y]=A,V=new he(A),this._textEditChanges[Y]=V}return V}},F.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new xe,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},F.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},F.prototype.createFile=function(Y,J,V){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var A;O.is(J)||R.is(J)?A=J:V=J;var re,ue;if(A===void 0?re=z.create(Y,V):(ue=R.is(A)?A:this._changeAnnotations.manage(A),re=z.create(Y,V,ue)),this._workspaceEdit.documentChanges.push(re),ue!==void 0)return ue},F.prototype.renameFile=function(Y,J,V,A){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var re;O.is(V)||R.is(V)?re=V:A=V;var ue,Ze;if(re===void 0?ue=B.create(Y,J,A):(Ze=R.is(re)?re:this._changeAnnotations.manage(re),ue=B.create(Y,J,A,Ze)),this._workspaceEdit.documentChanges.push(ue),Ze!==void 0)return Ze},F.prototype.deleteFile=function(Y,J,V){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var A;O.is(J)||R.is(J)?A=J:V=J;var re,ue;if(A===void 0?re=Q.create(Y,V):(ue=R.is(A)?A:this._changeAnnotations.manage(A),re=Q.create(Y,V,ue)),this._workspaceEdit.documentChanges.push(re),ue!==void 0)return ue},F}();t.WorkspaceChange=ge;var Fe;(function(F){function Y(V){return{uri:V}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.uri)}F.is=J})(Fe=t.TextDocumentIdentifier||(t.TextDocumentIdentifier={}));var Le;(function(F){function Y(V,A){return{uri:V,version:A}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.uri)&&ee.integer(A.version)}F.is=J})(Le=t.VersionedTextDocumentIdentifier||(t.VersionedTextDocumentIdentifier={}));var He;(function(F){function Y(V,A){return{uri:V,version:A}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.uri)&&(A.version===null||ee.integer(A.version))}F.is=J})(He=t.OptionalVersionedTextDocumentIdentifier||(t.OptionalVersionedTextDocumentIdentifier={}));var Xe;(function(F){function Y(V,A,re,ue){return{uri:V,languageId:A,version:re,text:ue}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.uri)&&ee.string(A.languageId)&&ee.integer(A.version)&&ee.string(A.text)}F.is=J})(Xe=t.TextDocumentItem||(t.TextDocumentItem={}));var Ve;(function(F){F.PlainText="plaintext",F.Markdown="markdown";function Y(J){var V=J;return V===F.PlainText||V===F.Markdown}F.is=Y})(Ve=t.MarkupKind||(t.MarkupKind={}));var At;(function(F){function Y(J){var V=J;return ee.objectLiteral(J)&&Ve.is(V.kind)&&ee.string(V.value)}F.is=Y})(At=t.MarkupContent||(t.MarkupContent={}));var Ot;(function(F){F.Text=1,F.Method=2,F.Function=3,F.Constructor=4,F.Field=5,F.Variable=6,F.Class=7,F.Interface=8,F.Module=9,F.Property=10,F.Unit=11,F.Value=12,F.Enum=13,F.Keyword=14,F.Snippet=15,F.Color=16,F.File=17,F.Reference=18,F.Folder=19,F.EnumMember=20,F.Constant=21,F.Struct=22,F.Event=23,F.Operator=24,F.TypeParameter=25})(Ot=t.CompletionItemKind||(t.CompletionItemKind={}));var Ie;(function(F){F.PlainText=1,F.Snippet=2})(Ie=t.InsertTextFormat||(t.InsertTextFormat={}));var te;(function(F){F.Deprecated=1})(te=t.CompletionItemTag||(t.CompletionItemTag={}));var ce;(function(F){function Y(V,A,re){return{newText:V,insert:A,replace:re}}F.create=Y;function J(V){var A=V;return A&&ee.string(A.newText)&&l.is(A.insert)&&l.is(A.replace)}F.is=J})(ce=t.InsertReplaceEdit||(t.InsertReplaceEdit={}));var we;(function(F){F.asIs=1,F.adjustIndentation=2})(we=t.InsertTextMode||(t.InsertTextMode={}));var ot;(function(F){function Y(J){var V=J;return V&&(ee.string(V.detail)||V.detail===void 0)&&(ee.string(V.description)||V.description===void 0)}F.is=Y})(ot=t.CompletionItemLabelDetails||(t.CompletionItemLabelDetails={}));var Me;(function(F){function Y(J){return{label:J}}F.create=Y})(Me=t.CompletionItem||(t.CompletionItem={}));var Qe;(function(F){function Y(J,V){return{items:J||[],isIncomplete:!!V}}F.create=Y})(Qe=t.CompletionList||(t.CompletionList={}));var ze;(function(F){function Y(V){return V.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}F.fromPlainText=Y;function J(V){var A=V;return ee.string(A)||ee.objectLiteral(A)&&ee.string(A.language)&&ee.string(A.value)}F.is=J})(ze=t.MarkedString||(t.MarkedString={}));var mt;(function(F){function Y(J){var V=J;return!!V&&ee.objectLiteral(V)&&(At.is(V.contents)||ze.is(V.contents)||ee.typedArray(V.contents,ze.is))&&(J.range===void 0||l.is(J.range))}F.is=Y})(mt=t.Hover||(t.Hover={}));var oe;(function(F){function Y(J,V){return V?{label:J,documentation:V}:{label:J}}F.create=Y})(oe=t.ParameterInformation||(t.ParameterInformation={}));var me;(function(F){function Y(J,V){for(var A=[],re=2;re=0;vn--){var Rr=Ut[vn],jr=re.offsetAt(Rr.range.start),et=re.offsetAt(Rr.range.end);if(et<=Rt)Ze=Ze.substring(0,jr)+Rr.newText+Ze.substring(et,Ze.length);else throw new Error("Overlapping edit");Rt=jr}return Ze}F.applyEdits=V;function A(re,ue){if(re.length<=1)return re;var Ze=re.length/2|0,Ut=re.slice(0,Ze),Rt=re.slice(Ze);A(Ut,ue),A(Rt,ue);for(var vn=0,Rr=0,jr=0;vn0&&Y.push(J.length),this._lineOffsets=Y}return this._lineOffsets},F.prototype.positionAt=function(Y){Y=Math.max(Math.min(Y,this._content.length),0);var J=this.getLineOffsets(),V=0,A=J.length;if(A===0)return s.create(0,Y);for(;VY?A=re:V=re+1}var ue=V-1;return s.create(ue,Y-J[ue])},F.prototype.offsetAt=function(Y){var J=this.getLineOffsets();if(Y.line>=J.length)return this._content.length;if(Y.line<0)return 0;var V=J[Y.line],A=Y.line+1{"use strict";Object.defineProperty(BO,"__esModule",{value:!0});var iU=class{constructor(t){this.getStartOfToken=()=>this._start,this.getCurrentPosition=()=>this._pos,this.eol=()=>this._sourceText.length===this._pos,this.sol=()=>this._pos===0,this.peek=()=>this._sourceText.charAt(this._pos)?this._sourceText.charAt(this._pos):null,this.next=()=>{let r=this._sourceText.charAt(this._pos);return this._pos++,r},this.eat=r=>{if(this._testNextCharacter(r))return this._start=this._pos,this._pos++,this._sourceText.charAt(this._pos-1)},this.eatWhile=r=>{let n=this._testNextCharacter(r),i=!1;for(n&&(i=n,this._start=this._pos);n;)this._pos++,n=this._testNextCharacter(r),i=!0;return i},this.eatSpace=()=>this.eatWhile(/[\s\u00a0]/),this.skipToEnd=()=>{this._pos=this._sourceText.length},this.skipTo=r=>{this._pos=r},this.match=(r,n=!0,i=!1)=>{let o=null,s=null;return typeof r=="string"?(s=new RegExp(r,i?"i":"g").test(this._sourceText.substr(this._pos,r.length)),o=r):r instanceof RegExp&&(s=this._sourceText.slice(this._pos).match(r),o=s==null?void 0:s[0]),s!=null&&(typeof r=="string"||s instanceof Array&&this._sourceText.startsWith(s[0],this._pos))?(n&&(this._start=this._pos,o&&o.length&&(this._pos+=o.length)),s):!1},this.backUp=r=>{this._pos-=r},this.column=()=>this._pos,this.indentation=()=>{let r=this._sourceText.match(/\s*/),n=0;if(r&&r.length!==0){let i=r[0],o=0;for(;i.length>o;)i.charCodeAt(o)===9?n+=2:n++,o++}return n},this.current=()=>this._sourceText.slice(this._start,this._pos),this._start=0,this._pos=0,this._sourceText=t}_testNextCharacter(t){let r=this._sourceText.charAt(this._pos),n=!1;return typeof t=="string"?n=r===t:n=t instanceof RegExp?t.test(r):t(r),n}};BO.default=iU});var KO=G(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.p=ta.t=ta.butNot=ta.list=ta.opt=void 0;function nee(e){return{ofRule:e}}ta.opt=nee;function iee(e,t){return{ofRule:e,isList:!0,separator:t}}ta.list=iee;function aee(e,t){let r=e.match;return e.match=n=>{let i=!1;return r&&(i=r(n)),i&&t.every(o=>o.match&&!o.match(n))},e}ta.butNot=aee;function oee(e,t){return{style:t,match:r=>r.kind===e}}ta.t=oee;function uee(e,t){return{style:t||"punctuation",match:r=>r.kind==="Punctuation"&&r.value===e}}ta.p=uee});var HO=G(ju=>{"use strict";Object.defineProperty(ju,"__esModule",{value:!0});ju.ParseRules=ju.LexRules=ju.isIgnored=void 0;var de=KO(),see=ht(),lee=e=>e===" "||e===" "||e===","||e===` -`||e==="\r"||e==="\uFEFF"||e==="\xA0";ju.isIgnored=lee;ju.LexRules={Name:/^[_A-Za-z][_0-9A-Za-z]*/,Punctuation:/^(?:!|\$|\(|\)|\.\.\.|:|=|&|@|\[|]|\{|\||\})/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^(?:"""(?:\\"""|[^"]|"[^"]|""[^"])*(?:""")?|"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?)/,Comment:/^#.*/};ju.ParseRules={Document:[(0,de.list)("Definition")],Definition(e){switch(e.value){case"{":return"ShortQuery";case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription";case"fragment":return see.Kind.FRAGMENT_DEFINITION;case"schema":return"SchemaDef";case"scalar":return"ScalarDef";case"type":return"ObjectTypeDef";case"interface":return"InterfaceDef";case"union":return"UnionDef";case"enum":return"EnumDef";case"input":return"InputDef";case"extend":return"ExtendDef";case"directive":return"DirectiveDef"}},ShortQuery:["SelectionSet"],Query:[kn("query"),(0,de.opt)(tr("def")),(0,de.opt)("VariableDefinitions"),(0,de.list)("Directive"),"SelectionSet"],Mutation:[kn("mutation"),(0,de.opt)(tr("def")),(0,de.opt)("VariableDefinitions"),(0,de.list)("Directive"),"SelectionSet"],Subscription:[kn("subscription"),(0,de.opt)(tr("def")),(0,de.opt)("VariableDefinitions"),(0,de.list)("Directive"),"SelectionSet"],VariableDefinitions:[(0,de.p)("("),(0,de.list)("VariableDefinition"),(0,de.p)(")")],VariableDefinition:["Variable",(0,de.p)(":"),"Type",(0,de.opt)("DefaultValue")],Variable:[(0,de.p)("$","variable"),tr("variable")],DefaultValue:[(0,de.p)("="),"Value"],SelectionSet:[(0,de.p)("{"),(0,de.list)("Selection"),(0,de.p)("}")],Selection(e,t){return e.value==="..."?t.match(/[\s\u00a0,]*(on\b|@|{)/,!1)?"InlineFragment":"FragmentSpread":t.match(/[\s\u00a0,]*:/,!1)?"AliasedField":"Field"},AliasedField:[tr("property"),(0,de.p)(":"),tr("qualifier"),(0,de.opt)("Arguments"),(0,de.list)("Directive"),(0,de.opt)("SelectionSet")],Field:[tr("property"),(0,de.opt)("Arguments"),(0,de.list)("Directive"),(0,de.opt)("SelectionSet")],Arguments:[(0,de.p)("("),(0,de.list)("Argument"),(0,de.p)(")")],Argument:[tr("attribute"),(0,de.p)(":"),"Value"],FragmentSpread:[(0,de.p)("..."),tr("def"),(0,de.list)("Directive")],InlineFragment:[(0,de.p)("..."),(0,de.opt)("TypeCondition"),(0,de.list)("Directive"),"SelectionSet"],FragmentDefinition:[kn("fragment"),(0,de.opt)((0,de.butNot)(tr("def"),[kn("on")])),"TypeCondition",(0,de.list)("Directive"),"SelectionSet"],TypeCondition:[kn("on"),"NamedType"],Value(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue";case"$":return"Variable";case"&":return"NamedType"}return null;case"Name":switch(e.value){case"true":case"false":return"BooleanValue"}return e.value==="null"?"NullValue":"EnumValue"}},NumberValue:[(0,de.t)("Number","number")],StringValue:[{style:"string",match:e=>e.kind==="String",update(e,t){t.value.startsWith('"""')&&(e.inBlockstring=!t.value.slice(3).endsWith('"""'))}}],BooleanValue:[(0,de.t)("Name","builtin")],NullValue:[(0,de.t)("Name","keyword")],EnumValue:[tr("string-2")],ListValue:[(0,de.p)("["),(0,de.list)("Value"),(0,de.p)("]")],ObjectValue:[(0,de.p)("{"),(0,de.list)("ObjectField"),(0,de.p)("}")],ObjectField:[tr("attribute"),(0,de.p)(":"),"Value"],Type(e){return e.value==="["?"ListType":"NonNullType"},ListType:[(0,de.p)("["),"Type",(0,de.p)("]"),(0,de.opt)((0,de.p)("!"))],NonNullType:["NamedType",(0,de.opt)((0,de.p)("!"))],NamedType:[cee("atom")],Directive:[(0,de.p)("@","meta"),tr("meta"),(0,de.opt)("Arguments")],DirectiveDef:[kn("directive"),(0,de.p)("@","meta"),tr("meta"),(0,de.opt)("ArgumentsDef"),kn("on"),(0,de.list)("DirectiveLocation",(0,de.p)("|"))],InterfaceDef:[kn("interface"),tr("atom"),(0,de.opt)("Implements"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("FieldDef"),(0,de.p)("}")],Implements:[kn("implements"),(0,de.list)("NamedType",(0,de.p)("&"))],DirectiveLocation:[tr("string-2")],SchemaDef:[kn("schema"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("OperationTypeDef"),(0,de.p)("}")],OperationTypeDef:[tr("keyword"),(0,de.p)(":"),tr("atom")],ScalarDef:[kn("scalar"),tr("atom"),(0,de.list)("Directive")],ObjectTypeDef:[kn("type"),tr("atom"),(0,de.opt)("Implements"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("FieldDef"),(0,de.p)("}")],FieldDef:[tr("property"),(0,de.opt)("ArgumentsDef"),(0,de.p)(":"),"Type",(0,de.list)("Directive")],ArgumentsDef:[(0,de.p)("("),(0,de.list)("InputValueDef"),(0,de.p)(")")],InputValueDef:[tr("attribute"),(0,de.p)(":"),"Type",(0,de.opt)("DefaultValue"),(0,de.list)("Directive")],UnionDef:[kn("union"),tr("atom"),(0,de.list)("Directive"),(0,de.p)("="),(0,de.list)("UnionMember",(0,de.p)("|"))],UnionMember:["NamedType"],EnumDef:[kn("enum"),tr("atom"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("EnumValueDef"),(0,de.p)("}")],EnumValueDef:[tr("string-2"),(0,de.list)("Directive")],InputDef:[kn("input"),tr("atom"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("InputValueDef"),(0,de.p)("}")],ExtendDef:[kn("extend"),"ObjectTypeDef"]};function kn(e){return{style:"keyword",match:t=>t.kind==="Name"&&t.value===e}}function tr(e){return{style:e,match:t=>t.kind==="Name",update(t,r){t.name=r.value}}}function cee(e){return{style:e,match:t=>t.kind==="Name",update(t,r){var n;((n=t.prevState)===null||n===void 0?void 0:n.prevState)&&(t.name=r.value,t.prevState.prevState.type=r.value)}}}});var sU=G(XO=>{"use strict";Object.defineProperty(XO,"__esModule",{value:!0});var zO=HO(),fee=ht();function dee(e={eatWhitespace:t=>t.eatWhile(zO.isIgnored),lexRules:zO.LexRules,parseRules:zO.ParseRules,editorConfig:{}}){return{startState(){let t={level:0,step:0,name:null,kind:null,type:null,rule:null,needsSeperator:!1,prevState:null};return Up(e.parseRules,t,fee.Kind.DOCUMENT),t},token(t,r){return pee(t,r,e)}}}XO.default=dee;function pee(e,t,r){var n;if(t.inBlockstring)return e.match(/.*"""/)?(t.inBlockstring=!1,"string"):(e.skipToEnd(),"string");let{lexRules:i,parseRules:o,eatWhitespace:s,editorConfig:l}=r;if(t.rule&&t.rule.length===0?YO(t):t.needsAdvance&&(t.needsAdvance=!1,JO(t,!0)),e.sol()){let v=(l==null?void 0:l.tabSize)||2;t.indentLevel=Math.floor(e.indentation()/v)}if(s(e))return"ws";let d=vee(i,e);if(!d)return e.match(/\S+/)||e.match(/\s/),Up(WO,t,"Invalid"),"invalidchar";if(d.kind==="Comment")return Up(WO,t,"Comment"),"comment";let h=oU({},t);if(d.kind==="Punctuation"){if(/^[{([]/.test(d.value))t.indentLevel!==void 0&&(t.levels=(t.levels||[]).concat(t.indentLevel+1));else if(/^[})\]]/.test(d.value)){let v=t.levels=(t.levels||[]).slice(0,-1);t.indentLevel&&v.length>0&&v[v.length-1]{"use strict";Object.defineProperty(Vs,"__esModule",{value:!0});Vs.RuleKinds=Vs.AdditionalRuleKinds=void 0;var gee=ht();Vs.AdditionalRuleKinds={ALIASED_FIELD:"AliasedField",ARGUMENTS:"Arguments",SHORT_QUERY:"ShortQuery",QUERY:"Query",MUTATION:"Mutation",SUBSCRIPTION:"Subscription",TYPE_CONDITION:"TypeCondition",INVALID:"Invalid",COMMENT:"Comment",SCHEMA_DEF:"SchemaDef",SCALAR_DEF:"ScalarDef",OBJECT_TYPE_DEF:"ObjectTypeDef",OBJECT_VALUE:"ObjectValue",LIST_VALUE:"ListValue",INTERFACE_DEF:"InterfaceDef",UNION_DEF:"UnionDef",ENUM_DEF:"EnumDef",ENUM_VALUE:"EnumValue",FIELD_DEF:"FieldDef",INPUT_DEF:"InputDef",INPUT_VALUE_DEF:"InputValueDef",ARGUMENTS_DEF:"ArgumentsDef",EXTEND_DEF:"ExtendDef",DIRECTIVE_DEF:"DirectiveDef",IMPLEMENTS:"Implements",VARIABLE_DEFINITIONS:"VariableDefinitions",TYPE:"Type"};Vs.RuleKinds=Object.assign(Object.assign({},gee.Kind),Vs.AdditionalRuleKinds)});var ay=G(Bt=>{"use strict";var mee=Bt&&Bt.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),yee=Bt&&Bt.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&mee(t,e,r)},cU=Bt&&Bt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Bt,"__esModule",{value:!0});Bt.onlineParser=Bt.t=Bt.p=Bt.opt=Bt.list=Bt.butNot=Bt.isIgnored=Bt.ParseRules=Bt.LexRules=Bt.CharacterStream=void 0;var bee=aU();Object.defineProperty(Bt,"CharacterStream",{enumerable:!0,get:function(){return cU(bee).default}});var ZO=HO();Object.defineProperty(Bt,"LexRules",{enumerable:!0,get:function(){return ZO.LexRules}});Object.defineProperty(Bt,"ParseRules",{enumerable:!0,get:function(){return ZO.ParseRules}});Object.defineProperty(Bt,"isIgnored",{enumerable:!0,get:function(){return ZO.isIgnored}});var Gp=KO();Object.defineProperty(Bt,"butNot",{enumerable:!0,get:function(){return Gp.butNot}});Object.defineProperty(Bt,"list",{enumerable:!0,get:function(){return Gp.list}});Object.defineProperty(Bt,"opt",{enumerable:!0,get:function(){return Gp.opt}});Object.defineProperty(Bt,"p",{enumerable:!0,get:function(){return Gp.p}});Object.defineProperty(Bt,"t",{enumerable:!0,get:function(){return Gp.t}});var Tee=sU();Object.defineProperty(Bt,"onlineParser",{enumerable:!0,get:function(){return cU(Tee).default}});yee(lU(),Bt)});var ew=G(Vr=>{"use strict";Object.defineProperty(Vr,"__esModule",{value:!0});Vr.getTypeInfo=Vr.canUseDirective=Vr.runOnlineParser=Vr.getTokenAtPosition=Vr.getFragmentDefinitions=Vr.getVariableCompletions=Vr.getAutocompleteSuggestions=Vr.SuggestionCommand=void 0;var tn=nU(),Vt=ht(),kt=ht(),ke=ay(),br=QO();Vr.SuggestionCommand={command:"editor.action.triggerSuggest",title:"Suggestions"};var _ee=e=>{let t=[];if(e)try{(0,kt.visit)((0,kt.parse)(e),{FragmentDefinition(r){t.push(r)}})}catch(r){return[]}return t};function Eee(e,t,r,n,i,o){var s;let l=Object.assign(Object.assign({},o),{schema:e}),d=n||dU(t,r),h=d.state.kind==="Invalid"?d.state.prevState:d.state;if(!h)return[];let v=h.kind,y=h.step,b=hU(e,d.state);if(v===ke.RuleKinds.DOCUMENT)return(0,br.hintList)(d,[{label:"query",kind:tn.CompletionItemKind.Function},{label:"mutation",kind:tn.CompletionItemKind.Function},{label:"subscription",kind:tn.CompletionItemKind.Function},{label:"fragment",kind:tn.CompletionItemKind.Function},{label:"{",kind:tn.CompletionItemKind.Constructor}]);if(v===ke.RuleKinds.IMPLEMENTS||v===ke.RuleKinds.NAMED_TYPE&&((s=h.prevState)===null||s===void 0?void 0:s.kind)===ke.RuleKinds.IMPLEMENTS)return wee(d,h,e,t,b);if(v===ke.RuleKinds.SELECTION_SET||v===ke.RuleKinds.FIELD||v===ke.RuleKinds.ALIASED_FIELD)return kee(d,b,l);if(v===ke.RuleKinds.ARGUMENTS||v===ke.RuleKinds.ARGUMENT&&y===0){let D=b.argDefs;if(D)return(0,br.hintList)(d,D.map(_=>{var k;return{label:_.name,insertText:_.name+": ",command:Vr.SuggestionCommand,detail:String(_.type),documentation:(k=_.description)!==null&&k!==void 0?k:void 0,kind:tn.CompletionItemKind.Variable,type:_.type}}))}if((v===ke.RuleKinds.OBJECT_VALUE||v===ke.RuleKinds.OBJECT_FIELD&&y===0)&&b.objectFieldDefs){let D=(0,br.objectValues)(b.objectFieldDefs),_=v===ke.RuleKinds.OBJECT_VALUE?tn.CompletionItemKind.Value:tn.CompletionItemKind.Field;return(0,br.hintList)(d,D.map(k=>{var T;return{label:k.name,detail:String(k.type),documentation:(T=k.description)!==null&&T!==void 0?T:void 0,kind:_,type:k.type}}))}if(v===ke.RuleKinds.ENUM_VALUE||v===ke.RuleKinds.LIST_VALUE&&y===1||v===ke.RuleKinds.OBJECT_FIELD&&y===2||v===ke.RuleKinds.ARGUMENT&&y===2)return Oee(d,b,t,e);if(v===ke.RuleKinds.VARIABLE&&y===1){let D=(0,kt.getNamedType)(b.inputType),_=$O(t,e,d);return(0,br.hintList)(d,_.filter(k=>k.detail===(D==null?void 0:D.name)))}return v===ke.RuleKinds.TYPE_CONDITION&&y===1||v===ke.RuleKinds.NAMED_TYPE&&h.prevState!=null&&h.prevState.kind===ke.RuleKinds.TYPE_CONDITION?Nee(d,b,e,v):v===ke.RuleKinds.FRAGMENT_SPREAD&&y===1?Dee(d,b,e,t,Array.isArray(i)?i:_ee(i)):v===ke.RuleKinds.VARIABLE_DEFINITION&&y===2||v===ke.RuleKinds.LIST_TYPE&&y===1||v===ke.RuleKinds.NAMED_TYPE&&h.prevState&&(h.prevState.kind===ke.RuleKinds.VARIABLE_DEFINITION||h.prevState.kind===ke.RuleKinds.LIST_TYPE||h.prevState.kind===ke.RuleKinds.NON_NULL_TYPE)?Cee(d,e,v):v===ke.RuleKinds.DIRECTIVE?Lee(d,h,e,v):[]}Vr.getAutocompleteSuggestions=Eee;var oy=` { - $1 -}`,See=e=>{let t=e.type;return(0,kt.isCompositeType)(t)||(0,Vt.isListType)(t)&&(0,kt.isCompositeType)(t.ofType)||(0,Vt.isNonNullType)(t)&&((0,kt.isCompositeType)(t.ofType)||(0,Vt.isListType)(t.ofType)&&(0,kt.isCompositeType)(t.ofType.ofType))?oy:null};function kee(e,t,r){var n;if(t.parentType){let i=t.parentType,o=[];return"getFields"in i&&(o=(0,br.objectValues)(i.getFields())),(0,kt.isCompositeType)(i)&&o.push(kt.TypeNameMetaFieldDef),i===((n=r==null?void 0:r.schema)===null||n===void 0?void 0:n.getQueryType())&&o.push(kt.SchemaMetaFieldDef,kt.TypeMetaFieldDef),(0,br.hintList)(e,o.map((s,l)=>{var d;let h={sortText:String(l)+s.name,label:s.name,detail:String(s.type),documentation:(d=s.description)!==null&&d!==void 0?d:void 0,deprecated:Boolean(s.deprecationReason),isDeprecated:Boolean(s.deprecationReason),deprecationReason:s.deprecationReason,kind:tn.CompletionItemKind.Field,type:s.type},v=See(s);return v&&(h.insertText=s.name+v,h.insertTextFormat=tn.InsertTextFormat.Snippet,h.command=Vr.SuggestionCommand),h}))}return[]}function Oee(e,t,r,n){let i=(0,kt.getNamedType)(t.inputType),o=$O(r,n,e).filter(s=>s.detail===i.name);if(i instanceof kt.GraphQLEnumType){let s=i.getValues();return(0,br.hintList)(e,s.map(l=>{var d;return{label:l.name,detail:String(i),documentation:(d=l.description)!==null&&d!==void 0?d:void 0,deprecated:Boolean(l.deprecationReason),isDeprecated:Boolean(l.deprecationReason),deprecationReason:l.deprecationReason,kind:tn.CompletionItemKind.EnumMember,type:i}}).concat(o))}else if(i===kt.GraphQLBoolean)return(0,br.hintList)(e,o.concat([{label:"true",detail:String(kt.GraphQLBoolean),documentation:"Not false.",kind:tn.CompletionItemKind.Variable,type:kt.GraphQLBoolean},{label:"false",detail:String(kt.GraphQLBoolean),documentation:"Not true.",kind:tn.CompletionItemKind.Variable,type:kt.GraphQLBoolean}]));return o}function wee(e,t,r,n,i){if(t.needsSeperator)return[];let o=r.getTypeMap(),s=(0,br.objectValues)(o).filter(Vt.isInterfaceType),l=s.map(({name:D})=>D),d=new Set;Qp(n,(D,_)=>{var k,T,S,m,w;if(_.name&&(_.kind===ke.RuleKinds.INTERFACE_DEF&&!l.includes(_.name)&&d.add(_.name),_.kind===ke.RuleKinds.NAMED_TYPE&&((k=_.prevState)===null||k===void 0?void 0:k.kind)===ke.RuleKinds.IMPLEMENTS)){if(i.interfaceDef){if((T=i.interfaceDef)===null||T===void 0?void 0:T.getInterfaces().find(({name:R})=>R===_.name))return;let L=r.getType(_.name),O=(S=i.interfaceDef)===null||S===void 0?void 0:S.toConfig();i.interfaceDef=new Vt.GraphQLInterfaceType(Object.assign(Object.assign({},O),{interfaces:[...O.interfaces,L||new Vt.GraphQLInterfaceType({name:_.name,fields:{}})]}))}else if(i.objectTypeDef){if((m=i.objectTypeDef)===null||m===void 0?void 0:m.getInterfaces().find(({name:R})=>R===_.name))return;let L=r.getType(_.name),O=(w=i.objectTypeDef)===null||w===void 0?void 0:w.toConfig();i.objectTypeDef=new Vt.GraphQLObjectType(Object.assign(Object.assign({},O),{interfaces:[...O.interfaces,L||new Vt.GraphQLInterfaceType({name:_.name,fields:{}})]}))}}});let h=i.interfaceDef||i.objectTypeDef,y=((h==null?void 0:h.getInterfaces())||[]).map(({name:D})=>D),b=s.concat([...d].map(D=>({name:D}))).filter(({name:D})=>D!==(h==null?void 0:h.name)&&!y.includes(D));return(0,br.hintList)(e,b.map(D=>{let _={label:D.name,kind:tn.CompletionItemKind.Interface,type:D};return(D==null?void 0:D.description)&&(_.documentation=D.description),_}))}function Nee(e,t,r,n){let i;if(t.parentType)if((0,kt.isAbstractType)(t.parentType)){let o=(0,kt.assertAbstractType)(t.parentType),s=r.getPossibleTypes(o),l=Object.create(null);s.forEach(d=>{d.getInterfaces().forEach(h=>{l[h.name]=h})}),i=s.concat((0,br.objectValues)(l))}else i=[t.parentType];else{let o=r.getTypeMap();i=(0,br.objectValues)(o).filter(kt.isCompositeType)}return(0,br.hintList)(e,i.map(o=>{let s=(0,kt.getNamedType)(o);return{label:String(o),documentation:(s==null?void 0:s.description)||"",kind:tn.CompletionItemKind.Field}}))}function Dee(e,t,r,n,i){if(!n)return[];let o=r.getTypeMap(),s=(0,br.getDefinitionState)(e.state),l=fU(n);i&&i.length>0&&l.push(...i);let d=l.filter(h=>o[h.typeCondition.name.value]&&!(s&&s.kind===ke.RuleKinds.FRAGMENT_DEFINITION&&s.name===h.name.value)&&(0,kt.isCompositeType)(t.parentType)&&(0,kt.isCompositeType)(o[h.typeCondition.name.value])&&(0,kt.doTypesOverlap)(r,t.parentType,o[h.typeCondition.name.value]));return(0,br.hintList)(e,d.map(h=>({label:h.name.value,detail:String(o[h.typeCondition.name.value]),documentation:`fragment ${h.name.value} on ${h.typeCondition.name.value}`,kind:tn.CompletionItemKind.Field,type:o[h.typeCondition.name.value]})))}var xee=(e,t)=>{var r,n,i,o,s,l,d,h,v,y;if(((r=e.prevState)===null||r===void 0?void 0:r.kind)===t)return e.prevState;if(((i=(n=e.prevState)===null||n===void 0?void 0:n.prevState)===null||i===void 0?void 0:i.kind)===t)return e.prevState.prevState;if(((l=(s=(o=e.prevState)===null||o===void 0?void 0:o.prevState)===null||s===void 0?void 0:s.prevState)===null||l===void 0?void 0:l.kind)===t)return e.prevState.prevState.prevState;if(((y=(v=(h=(d=e.prevState)===null||d===void 0?void 0:d.prevState)===null||h===void 0?void 0:h.prevState)===null||v===void 0?void 0:v.prevState)===null||y===void 0?void 0:y.kind)===t)return e.prevState.prevState.prevState.prevState};function $O(e,t,r){let n=null,i,o=Object.create({});return Qp(e,(s,l)=>{if((l==null?void 0:l.kind)===ke.RuleKinds.VARIABLE&&l.name&&(n=l.name),(l==null?void 0:l.kind)===ke.RuleKinds.NAMED_TYPE&&n){let d=xee(l,ke.RuleKinds.TYPE);(d==null?void 0:d.type)&&(i=t.getType(d==null?void 0:d.type))}n&&i&&(o[n]||(o[n]={detail:i.toString(),insertText:r.string==="$"?n:"$"+n,label:n,type:i,kind:tn.CompletionItemKind.Variable},n=null,i=null))}),(0,br.objectValues)(o)}Vr.getVariableCompletions=$O;function fU(e){let t=[];return Qp(e,(r,n)=>{n.kind===ke.RuleKinds.FRAGMENT_DEFINITION&&n.name&&n.type&&t.push({kind:ke.RuleKinds.FRAGMENT_DEFINITION,name:{kind:Vt.Kind.NAME,value:n.name},selectionSet:{kind:ke.RuleKinds.SELECTION_SET,selections:[]},typeCondition:{kind:ke.RuleKinds.NAMED_TYPE,name:{kind:Vt.Kind.NAME,value:n.type}}})}),t}Vr.getFragmentDefinitions=fU;function Cee(e,t,r){let n=t.getTypeMap(),i=(0,br.objectValues)(n).filter(kt.isInputType);return(0,br.hintList)(e,i.map(o=>({label:o.name,documentation:o.description,kind:tn.CompletionItemKind.Variable})))}function Lee(e,t,r,n){var i;if((i=t.prevState)===null||i===void 0?void 0:i.kind){let o=r.getDirectives().filter(s=>pU(t.prevState,s));return(0,br.hintList)(e,o.map(s=>({label:s.name,documentation:s.description||"",kind:tn.CompletionItemKind.Function})))}return[]}function dU(e,t){let r=null,n=null,i=null,o=Qp(e,(s,l,d,h)=>{if(h===t.line&&s.getCurrentPosition()>=t.character)return r=d,n=Object.assign({},l),i=s.current(),"BREAK"});return{start:o.start,end:o.end,string:i||o.string,state:n||o.state,style:r||o.style}}Vr.getTokenAtPosition=dU;function Qp(e,t){let r=e.split(` -`),n=(0,ke.onlineParser)(),i=n.startState(),o="",s=new ke.CharacterStream("");for(let l=0;l{var _;switch(D.kind){case ke.RuleKinds.QUERY:case"ShortQuery":y=e.getQueryType();break;case ke.RuleKinds.MUTATION:y=e.getMutationType();break;case ke.RuleKinds.SUBSCRIPTION:y=e.getSubscriptionType();break;case ke.RuleKinds.INLINE_FRAGMENT:case ke.RuleKinds.FRAGMENT_DEFINITION:D.type&&(y=e.getType(D.type));break;case ke.RuleKinds.FIELD:case ke.RuleKinds.ALIASED_FIELD:{!y||!D.name?s=null:(s=v?(0,br.getFieldDef)(e,v,D.name):null,y=s?s.type:null);break}case ke.RuleKinds.SELECTION_SET:v=(0,kt.getNamedType)(y);break;case ke.RuleKinds.DIRECTIVE:i=D.name?e.getDirective(D.name):null;break;case ke.RuleKinds.INTERFACE_DEF:D.name&&(d=null,b=new Vt.GraphQLInterfaceType({name:D.name,interfaces:[],fields:{}}));break;case ke.RuleKinds.OBJECT_TYPE_DEF:D.name&&(b=null,d=new Vt.GraphQLObjectType({name:D.name,interfaces:[],fields:{}}));break;case ke.RuleKinds.ARGUMENTS:{if(!D.prevState)n=null;else switch(D.prevState.kind){case ke.RuleKinds.FIELD:n=s&&s.args;break;case ke.RuleKinds.DIRECTIVE:n=i&&i.args;break;case ke.RuleKinds.ALIASED_FIELD:{let w=(_=D.prevState)===null||_===void 0?void 0:_.name;if(!w){n=null;break}let x=v?(0,br.getFieldDef)(e,v,w):null;if(!x){n=null;break}n=x.args;break}default:n=null;break}break}case ke.RuleKinds.ARGUMENT:if(n){for(let w=0;ww.value===D.name):null;break;case ke.RuleKinds.LIST_VALUE:let T=(0,kt.getNullableType)(l);l=T instanceof kt.GraphQLList?T.ofType:null;break;case ke.RuleKinds.OBJECT_VALUE:let S=(0,kt.getNamedType)(l);h=S instanceof kt.GraphQLInputObjectType?S.getFields():null;break;case ke.RuleKinds.OBJECT_FIELD:let m=D.name&&h?h[D.name]:null;l=m==null?void 0:m.type;break;case ke.RuleKinds.NAMED_TYPE:D.name&&(y=e.getType(D.name));break}}),{argDef:r,argDefs:n,directiveDef:i,enumValue:o,fieldDef:s,inputType:l,objectFieldDefs:h,parentType:v,type:y,interfaceDef:b,objectTypeDef:d}}Vr.getTypeInfo=hU});var gU=G(Ao=>{"use strict";var Iee=Ao&&Ao.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ao,"__esModule",{value:!0});Ao.getFragmentDependenciesForAST=Ao.getFragmentDependencies=void 0;var tw=ht(),vU=Iee(Xk()),Aee=(e,t)=>{if(!t)return[];let r;try{r=(0,tw.parse)(e)}catch(n){return[]}return(0,Ao.getFragmentDependenciesForAST)(r,t)};Ao.getFragmentDependencies=Aee;var Ree=(e,t)=>{if(!t)return[];let r=new Map,n=new Set;(0,tw.visit)(e,{FragmentDefinition(s){r.set(s.name.value,!0)},FragmentSpread(s){n.has(s.name.value)||n.add(s.name.value)}});let i=new Set;n.forEach(s=>{!r.has(s)&&t.has(s)&&i.add((0,vU.default)(t.get(s)))});let o=[];return i.forEach(s=>{(0,tw.visit)(s,{FragmentSpread(l){!n.has(l.name.value)&&t.get(l.name.value)&&(i.add((0,vU.default)(t.get(l.name.value))),n.add(l.name.value))}}),r.has(s.name.value)||o.push(s)}),o};Ao.getFragmentDependenciesForAST=Ree});var mU=G(qc=>{"use strict";Object.defineProperty(qc,"__esModule",{value:!0});qc.getVariablesJSONSchema=qc.defaultJSONSchemaOptions=void 0;var Pu=ht();qc.defaultJSONSchemaOptions={useMarkdownDescription:!1};function Mc(e,t){e.push(t)}function rw(e,t){(0,Pu.isNonNullType)(t)?(rw(e,t.ofType),Mc(e,"!")):(0,Pu.isListType)(t)?(Mc(e,"["),rw(e,t.ofType),Mc(e,"]")):Mc(e,t.name)}function Za(e,t){let r=[];return t&&Mc(r,"```graphql\n"),rw(r,e),t&&Mc(r,"\n```"),r.join("")}var jee={Int:"integer",String:"string",Float:"number",ID:"string",Boolean:"boolean",DateTime:"string"};function Bp(e,t){var r;let n=!1,i=Object.create(null),o=Object.create(null);if("defaultValue"in e&&e.defaultValue!==void 0&&(i.default=e.defaultValue),(0,Pu.isEnumType)(e)&&(i.type="string",i.enum=e.getValues().map(s=>s.name)),(0,Pu.isScalarType)(e)&&(i.type=(r=jee[e.name])!==null&&r!==void 0?r:"any"),(0,Pu.isListType)(e)){i.type="array";let{definition:s,definitions:l}=Bp(e.ofType,t);s.$ref?i.items={$ref:s.$ref}:i.items=s,l&&Object.keys(l).forEach(d=>{o[d]=l[d]})}if((0,Pu.isNonNullType)(e)){n=!0;let{definition:s,definitions:l}=Bp(e.ofType,t);i=s,l&&Object.keys(l).forEach(d=>{o[d]=l[d]})}if((0,Pu.isInputObjectType)(e)){i.$ref=`#/definitions/${e.name}`;let s=e.getFields(),l={type:"object",properties:{},required:[]};e.description?(l.description=e.description+` -`+Za(e),(t==null?void 0:t.useMarkdownDescription)&&(l.markdownDescription=e.description+` -`+Za(e,!0))):(l.description=Za(e),(t==null?void 0:t.useMarkdownDescription)&&(l.markdownDescription=Za(e,!0))),Object.keys(s).forEach(d=>{let h=s[d],{required:v,definition:y,definitions:b}=Bp(h.type,t),{definition:D}=Bp(h,t);l.properties[d]=Object.assign(Object.assign({},y),D);let _=Za(h.type);if(l.properties[d].description=h.description?h.description+` -`+_:_,t==null?void 0:t.useMarkdownDescription){let k=Za(h.type,!0);l.properties[d].markdownDescription=h.description?h.description+` -`+k:k}v&&l.required.push(d),b&&Object.keys(b).map(k=>{o[k]=b[k]})}),o[e.name]=l}return"description"in e&&!(0,Pu.isScalarType)(e)&&e.description&&!i.description?(i.description=e.description+` -`+Za(e),(t==null?void 0:t.useMarkdownDescription)&&(i.markdownDescription=e.description+` -`+Za(e,!0))):(i.description=Za(e),(t==null?void 0:t.useMarkdownDescription)&&(i.markdownDescription=Za(e,!0))),{required:n,definition:i,definitions:o}}function Pee(e,t){let r={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:{},required:[]};return e&&Object.entries(e).forEach(([n,i])=>{var o;let{definition:s,required:l,definitions:d}=Bp(i,t);r.properties[n]=s,l&&((o=r.required)===null||o===void 0||o.push(n)),d&&(r.definitions=Object.assign(Object.assign({},r==null?void 0:r.definitions),d))}),r}qc.getVariablesJSONSchema=Pee});var bU=G(Vc=>{"use strict";Object.defineProperty(Vc,"__esModule",{value:!0});Vc.pointToOffset=Vc.getASTNodeAtPosition=void 0;var Fee=ht();function Mee(e,t,r){let n=yU(e,r),i;return(0,Fee.visit)(t,{enter(o){if(o.kind!=="Name"&&o.loc&&o.loc.start<=n&&n<=o.loc.end)i=o;else return!1},leave(o){if(o.loc&&o.loc.start<=n&&n<=o.loc.end)return!1}}),i}Vc.getASTNodeAtPosition=Mee;function yU(e,t){let r=e.split(` -`).slice(0,t.line);return t.character+r.map(n=>n.length+1).reduce((n,i)=>n+i,0)}Vc.pointToOffset=yU});var TU=G($a=>{"use strict";Object.defineProperty($a,"__esModule",{value:!0});$a.locToRange=$a.offsetToPosition=$a.Position=$a.Range=void 0;var nw=class{constructor(t,r){this.containsPosition=n=>this.start.line===n.line?this.start.character<=n.character:this.end.line===n.line?this.end.character>=n.character:this.start.line<=n.line&&this.end.line>=n.line,this.start=t,this.end=r}setStart(t,r){this.start=new Kp(t,r)}setEnd(t,r){this.end=new Kp(t,r)}};$a.Range=nw;var Kp=class{constructor(t,r){this.lessThanOrEqualTo=n=>this.line{"use strict";Object.defineProperty(uy,"__esModule",{value:!0});uy.validateWithCustomRules=void 0;var fn=ht(),Vee=[fn.LoneSchemaDefinitionRule,fn.UniqueOperationTypesRule,fn.UniqueTypeNamesRule,fn.UniqueEnumValueNamesRule,fn.UniqueFieldDefinitionNamesRule,fn.UniqueDirectiveNamesRule,fn.KnownTypeNamesRule,fn.KnownDirectivesRule,fn.UniqueDirectivesPerLocationRule,fn.PossibleTypeExtensionsRule,fn.UniqueArgumentNamesRule,fn.UniqueInputFieldNamesRule];function Uee(e,t,r,n,i){let o=fn.specifiedRules.filter(l=>!(l===fn.NoUnusedFragmentsRule||l===fn.ExecutableDefinitionsRule||n&&l===fn.KnownFragmentNamesRule));return r&&Array.prototype.push.apply(o,r),i&&Array.prototype.push.apply(o,Vee),(0,fn.validate)(e,t,o).filter(l=>{if(l.message.indexOf("Unknown directive")!==-1&&l.nodes){let d=l.nodes[0];if(d&&d.kind===fn.Kind.DIRECTIVE){let h=d.name.value;if(h==="arguments"||h==="argumentDefinitions")return!1}}return!0})}uy.validateWithCustomRules=Uee});var ow=G(sy=>{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.collectVariables=void 0;var aw=ht();function Gee(e,t){let r=Object.create(null);return t.definitions.forEach(n=>{if(n.kind==="OperationDefinition"){let i=n.variableDefinitions;i&&i.forEach(({variable:o,type:s})=>{let l=(0,aw.typeFromAST)(e,s);l?r[o.name.value]=l:s.kind===aw.Kind.NAMED_TYPE&&s.name.value==="Float"&&(r[o.name.value]=aw.GraphQLFloat)})}}),r}sy.collectVariables=Gee});var OU=G(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});Us.getQueryFacts=Us.getOperationASTFacts=void 0;var EU=ht(),Qee=ow();function SU(e,t){let r=t?(0,Qee.collectVariables)(t,e):void 0,n=[];return(0,EU.visit)(e,{OperationDefinition(i){n.push(i)}}),{variableToType:r,operations:n}}Us.getOperationASTFacts=SU;function kU(e,t){if(!!t)try{let r=(0,EU.parse)(t);return Object.assign(Object.assign({},SU(r,e)),{documentAST:r})}catch(r){return}}Us.default=kU;Us.getQueryFacts=kU});var Hp=G(Lt=>{"use strict";var Bee=Lt&&Lt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Lt,"__esModule",{value:!0});Lt.getQueryFacts=Lt.getOperationASTFacts=Lt.getOperationFacts=Lt.collectVariables=Lt.validateWithCustomRules=Lt.offsetToPosition=Lt.locToRange=Lt.Range=Lt.Position=Lt.pointToOffset=Lt.getASTNodeAtPosition=Lt.getVariablesJSONSchema=Lt.getFragmentDependenciesForAST=Lt.getFragmentDependencies=void 0;var wU=gU();Object.defineProperty(Lt,"getFragmentDependencies",{enumerable:!0,get:function(){return wU.getFragmentDependencies}});Object.defineProperty(Lt,"getFragmentDependenciesForAST",{enumerable:!0,get:function(){return wU.getFragmentDependenciesForAST}});var Kee=mU();Object.defineProperty(Lt,"getVariablesJSONSchema",{enumerable:!0,get:function(){return Kee.getVariablesJSONSchema}});var NU=bU();Object.defineProperty(Lt,"getASTNodeAtPosition",{enumerable:!0,get:function(){return NU.getASTNodeAtPosition}});Object.defineProperty(Lt,"pointToOffset",{enumerable:!0,get:function(){return NU.pointToOffset}});var ly=TU();Object.defineProperty(Lt,"Position",{enumerable:!0,get:function(){return ly.Position}});Object.defineProperty(Lt,"Range",{enumerable:!0,get:function(){return ly.Range}});Object.defineProperty(Lt,"locToRange",{enumerable:!0,get:function(){return ly.locToRange}});Object.defineProperty(Lt,"offsetToPosition",{enumerable:!0,get:function(){return ly.offsetToPosition}});var Hee=_U();Object.defineProperty(Lt,"validateWithCustomRules",{enumerable:!0,get:function(){return Hee.validateWithCustomRules}});var zee=ow();Object.defineProperty(Lt,"collectVariables",{enumerable:!0,get:function(){return zee.collectVariables}});var uw=OU();Object.defineProperty(Lt,"getOperationFacts",{enumerable:!0,get:function(){return Bee(uw).default}});Object.defineProperty(Lt,"getOperationASTFacts",{enumerable:!0,get:function(){return uw.getOperationASTFacts}});Object.defineProperty(Lt,"getQueryFacts",{enumerable:!0,get:function(){return uw.getQueryFacts}})});var CU=G(On=>{"use strict";var sw=On&&On.__awaiter||function(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(v){try{h(n.next(v))}catch(y){s(y)}}function d(v){try{h(n.throw(v))}catch(y){s(y)}}function h(v){v.done?o(v.value):i(v.value).then(l,d)}h((n=n.apply(e,t||[])).next())})};Object.defineProperty(On,"__esModule",{value:!0});On.getDefinitionQueryResultForDefinitionNode=On.getDefinitionQueryResultForFragmentSpread=On.getDefinitionQueryResultForField=On.getDefinitionQueryResultForNamedType=On.LANGUAGE=void 0;var DU=Hp();On.LANGUAGE="GraphQL";function cy(e,t){if(!e)throw new Error(t)}function Uc(e,t){let r=t.loc;return cy(r,"Expected ASTNode to have a location."),(0,DU.locToRange)(e,r)}function lw(e,t){let r=t.loc;return cy(r,"Expected ASTNode to have a location."),(0,DU.offsetToPosition)(e,r.start)}function Wee(e,t,r){return sw(this,void 0,void 0,function*(){let n=t.name.value,i=r.filter(({definition:s})=>s.name&&s.name.value===n);if(i.length===0)throw Error(`Definition not found for GraphQL type ${n}`);let o=i.map(({filePath:s,content:l,definition:d})=>Zee(s||"",l,d));return{definitions:o,queryRange:o.map(s=>Uc(e,t))}})}On.getDefinitionQueryResultForNamedType=Wee;function Yee(e,t,r){return sw(this,void 0,void 0,function*(){let n=r.filter(({definition:o})=>o.name&&o.name.value===t);if(n.length===0)throw Error(`Definition not found for GraphQL type ${t}`);let i=[];return n.forEach(({filePath:o,content:s,definition:l})=>{var d;let h=(d=l.fields)===null||d===void 0?void 0:d.find(v=>v.name.value===e);if(h==null)return null;i.push($ee(o||"",s,h))}),{definitions:i,queryRange:[]}})}On.getDefinitionQueryResultForField=Yee;function Jee(e,t,r){return sw(this,void 0,void 0,function*(){let n=t.name.value,i=r.filter(({definition:s})=>s.name.value===n);if(i.length===0)throw Error(`Definition not found for GraphQL fragment ${n}`);let o=i.map(({filePath:s,content:l,definition:d})=>xU(s||"",l,d));return{definitions:o,queryRange:o.map(s=>Uc(e,t))}})}On.getDefinitionQueryResultForFragmentSpread=Jee;function Xee(e,t,r){return{definitions:[xU(e,t,r)],queryRange:r.name?[Uc(t,r.name)]:[]}}On.getDefinitionQueryResultForDefinitionNode=Xee;function xU(e,t,r){let n=r.name;if(!n)throw Error("Expected ASTNode to have a Name.");return{path:e,position:lw(t,r),range:Uc(t,r),name:n.value||"",language:On.LANGUAGE,projectRoot:e}}function Zee(e,t,r){let n=r.name;return cy(n,"Expected ASTNode to have a Name."),{path:e,position:lw(t,r),range:Uc(t,r),name:n.value||"",language:On.LANGUAGE,projectRoot:e}}function $ee(e,t,r){let n=r.name;return cy(n,"Expected ASTNode to have a Name."),{path:e,position:lw(t,r),range:Uc(t,r),name:n.value||"",language:On.LANGUAGE,projectRoot:e}}});var PU=G(rn=>{"use strict";Object.defineProperty(rn,"__esModule",{value:!0});rn.getRange=rn.validateQuery=rn.getDiagnostics=rn.DIAGNOSTIC_SEVERITY=rn.SEVERITY=void 0;var fy=ht(),ete=ht(),LU=ay(),Gs=Hp();rn.SEVERITY={Error:"Error",Warning:"Warning",Information:"Information",Hint:"Hint"};rn.DIAGNOSTIC_SEVERITY={[rn.SEVERITY.Error]:1,[rn.SEVERITY.Warning]:2,[rn.SEVERITY.Information]:3,[rn.SEVERITY.Hint]:4};var dy=(e,t)=>{if(!e)throw new Error(t)};function tte(e,t=null,r,n,i){var o,s;let l=null;i&&(typeof i=="string"?e+=` - -`+i:e+=` - -`+i.reduce((d,h)=>(d+=(0,fy.print)(h)+` - -`,d),""));try{l=(0,ete.parse)(e)}catch(d){if(d instanceof fy.GraphQLError){let h=jU((s=(o=d.locations)===null||o===void 0?void 0:o[0])!==null&&s!==void 0?s:{line:0,column:0},e);return[{severity:rn.DIAGNOSTIC_SEVERITY.Error,message:d.message,source:"GraphQL: Syntax",range:h}]}throw d}return IU(l,t,r,n)}rn.getDiagnostics=tte;function IU(e,t=null,r,n){if(!t)return[];let i=AU((0,Gs.validateWithCustomRules)(t,e,r,n),s=>RU(s,rn.DIAGNOSTIC_SEVERITY.Error,"Validation")),o=AU((0,fy.validate)(t,e,[fy.NoDeprecatedCustomRule]),s=>RU(s,rn.DIAGNOSTIC_SEVERITY.Warning,"Deprecation"));return i.concat(o)}rn.validateQuery=IU;function AU(e,t){return Array.prototype.concat.apply([],e.map(t))}function RU(e,t,r){if(!e.nodes)return[];let n=[];return e.nodes.forEach(i=>{let o=i.kind!=="Variable"&&"name"in i&&i.name!==void 0?i.name:"variable"in i&&i.variable!==void 0?i.variable:i;if(o){dy(e.locations,"GraphQL validation error requires locations.");let s=e.locations[0],l=rte(o),d=s.column+(l.end-l.start);n.push({source:`GraphQL: ${r}`,message:e.message,severity:t,range:new Gs.Range(new Gs.Position(s.line-1,s.column-1),new Gs.Position(s.line-1,d))})}}),n}function jU(e,t){let r=(0,LU.onlineParser)(),n=r.startState(),i=t.split(` -`);dy(i.length>=e.line,"Query text must have more lines than where the error happened");let o=null;for(let h=0;h{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.getOutline=void 0;var cw=ht(),FU=Hp(),{INLINE_FRAGMENT:nte}=cw.Kind;function ite(e){let t;try{t=(0,cw.parse)(e)}catch(i){return null}let r=ate(e);return{outlineTrees:(0,cw.visit)(t,{leave(i){return r!==void 0&&i.kind in r?r[i.kind](i):null}})}}py.getOutline=ite;function ate(e){let t=r=>({representativeName:r.name,startPosition:(0,FU.offsetToPosition)(e,r.loc.start),endPosition:(0,FU.offsetToPosition)(e,r.loc.end),kind:r.kind,children:r.selectionSet||r.fields||r.values||r.arguments||[]});return{Field:r=>{let n=r.alias?[rr("plain",r.alias),rr("plain",": ")]:[];return n.push(rr("plain",r.name)),Object.assign({tokenizedText:n},t(r))},OperationDefinition:r=>Object.assign({tokenizedText:[rr("keyword",r.operation),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),Document:r=>r.definitions,SelectionSet:r=>ote(r.selections,n=>n.kind===nte?n.selectionSet:n),Name:r=>r.value,FragmentDefinition:r=>Object.assign({tokenizedText:[rr("keyword","fragment"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),InterfaceTypeDefinition:r=>Object.assign({tokenizedText:[rr("keyword","interface"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),EnumTypeDefinition:r=>Object.assign({tokenizedText:[rr("keyword","enum"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),EnumValueDefinition:r=>Object.assign({tokenizedText:[rr("plain",r.name)]},t(r)),ObjectTypeDefinition:r=>Object.assign({tokenizedText:[rr("keyword","type"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),InputObjectTypeDefinition:r=>Object.assign({tokenizedText:[rr("keyword","input"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),FragmentSpread:r=>Object.assign({tokenizedText:[rr("plain","..."),rr("class-name",r.name)]},t(r)),InputValueDefinition:r=>Object.assign({tokenizedText:[rr("plain",r.name)]},t(r)),FieldDefinition:r=>Object.assign({tokenizedText:[rr("plain",r.name)]},t(r)),InlineFragment:r=>r.selectionSet}}function rr(e,t){return{kind:e,value:t}}function ote(e,t){let r=[];for(let n=0;n{"use strict";Object.defineProperty(hy,"__esModule",{value:!0});hy.getHoverInformation=void 0;var qU=ht(),VU=ew();function ute(e,t,r,n,i){let o=n||(0,VU.getTokenAtPosition)(t,r);if(!e||!o||!o.state)return"";let s=o.state,l=s.kind,d=s.step,h=(0,VU.getTypeInfo)(e,o.state),v=Object.assign(Object.assign({},i),{schema:e});if(l==="Field"&&d===0&&h.fieldDef||l==="AliasedField"&&d===2&&h.fieldDef){let y=[];return zp(y,v),ste(y,h,v),Wp(y,v),Yp(y,v,h.fieldDef),y.join("").trim()}else if(l==="Directive"&&d===1&&h.directiveDef){let y=[];return zp(y,v),GU(y,h,v),Wp(y,v),Yp(y,v,h.directiveDef),y.join("").trim()}else if(l==="Argument"&&d===0&&h.argDef){let y=[];return zp(y,v),lte(y,h,v),Wp(y,v),Yp(y,v,h.argDef),y.join("").trim()}else if(l==="EnumValue"&&h.enumValue&&"description"in h.enumValue){let y=[];return zp(y,v),cte(y,h,v),Wp(y,v),Yp(y,v,h.enumValue),y.join("").trim()}else if(l==="NamedType"&&h.type&&"description"in h.type){let y=[];return zp(y,v),Gc(y,h,v,h.type),Wp(y,v),Yp(y,v,h.type),y.join("").trim()}return""}hy.getHoverInformation=ute;function zp(e,t){t.useMarkdown&&Ur(e,"```graphql\n")}function Wp(e,t){t.useMarkdown&&Ur(e,"\n```")}function ste(e,t,r){UU(e,t,r),QU(e,t,r,t.type)}function UU(e,t,r){if(!t.fieldDef)return;let n=t.fieldDef.name;n.slice(0,2)!=="__"&&(Gc(e,t,r,t.parentType),Ur(e,".")),Ur(e,n)}function GU(e,t,r){if(!t.directiveDef)return;let n="@"+t.directiveDef.name;Ur(e,n)}function lte(e,t,r){if(t.directiveDef?GU(e,t,r):t.fieldDef&&UU(e,t,r),!t.argDef)return;let n=t.argDef.name;Ur(e,"("),Ur(e,n),QU(e,t,r,t.inputType),Ur(e,")")}function QU(e,t,r,n){Ur(e,": "),Gc(e,t,r,n)}function cte(e,t,r){if(!t.enumValue)return;let n=t.enumValue.name;Gc(e,t,r,t.inputType),Ur(e,"."),Ur(e,n)}function Gc(e,t,r,n){!n||(n instanceof qU.GraphQLNonNull?(Gc(e,t,r,n.ofType),Ur(e,"!")):n instanceof qU.GraphQLList?(Ur(e,"["),Gc(e,t,r,n.ofType),Ur(e,"]")):Ur(e,n.name))}function Yp(e,t,r){if(!r)return;let n=typeof r.description=="string"?r.description:null;n&&(Ur(e,` - -`),Ur(e,n)),fte(e,t,r)}function fte(e,t,r){if(!r)return;let n=r.deprecationReason?r.deprecationReason:null;!n||(Ur(e,` - -`),Ur(e,"Deprecated: "),Ur(e,n))}function Ur(e,t){e.push(t)}});var KU=G(bi=>{"use strict";var dte=bi&&bi.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),vy=bi&&bi.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&dte(t,e,r)};Object.defineProperty(bi,"__esModule",{value:!0});bi.getHoverInformation=bi.getOutline=void 0;vy(QO(),bi);vy(ew(),bi);vy(CU(),bi);vy(PU(),bi);var pte=MU();Object.defineProperty(bi,"getOutline",{enumerable:!0,get:function(){return pte.getOutline}});var hte=BU();Object.defineProperty(bi,"getHoverInformation",{enumerable:!0,get:function(){return hte.getHoverInformation}})});var HU=G(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.CompletionItemKind=Qs.FileChangeTypeKind=void 0;Qs.FileChangeTypeKind={Created:1,Changed:2,Deleted:3};var vte;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(vte=Qs.CompletionItemKind||(Qs.CompletionItemKind={}))});var Qc=G(ve=>{"use strict";Object.defineProperty(ve,"__esModule",{value:!0});ve.Range=ve.validateWithCustomRules=ve.collectVariables=ve.Position=ve.pointToOffset=ve.offsetToPosition=ve.getVariablesJSONSchema=ve.getQueryFacts=ve.getOperationFacts=ve.getOperationASTFacts=ve.getFragmentDependenciesForAST=ve.getFragmentDependencies=ve.getASTNodeAtPosition=ve.FileChangeTypeKind=ve.CompletionItemKind=ve.opt=ve.t=ve.list=ve.p=ve.isIgnored=ve.LexRules=ve.RuleKinds=ve.CharacterStream=ve.ParseRules=ve.onlineParser=ve.validateQuery=ve.SuggestionCommand=ve.canUseDirective=ve.DIAGNOSTIC_SEVERITY=ve.SEVERITY=ve.getVariableCompletions=ve.getTypeInfo=ve.getTokenAtPosition=ve.getRange=ve.getOutline=ve.getHoverInformation=ve.getFragmentDefinitions=ve.getFieldDef=ve.getDiagnostics=ve.getDefinitionState=ve.getDefinitionQueryResultForField=ve.getDefinitionQueryResultForNamedType=ve.getDefinitionQueryResultForFragmentSpread=ve.getDefinitionQueryResultForDefinitionNode=ve.getAutocompleteSuggestions=void 0;var Gr=KU();Object.defineProperty(ve,"getAutocompleteSuggestions",{enumerable:!0,get:function(){return Gr.getAutocompleteSuggestions}});Object.defineProperty(ve,"getDefinitionQueryResultForDefinitionNode",{enumerable:!0,get:function(){return Gr.getDefinitionQueryResultForDefinitionNode}});Object.defineProperty(ve,"getDefinitionQueryResultForFragmentSpread",{enumerable:!0,get:function(){return Gr.getDefinitionQueryResultForFragmentSpread}});Object.defineProperty(ve,"getDefinitionQueryResultForNamedType",{enumerable:!0,get:function(){return Gr.getDefinitionQueryResultForNamedType}});Object.defineProperty(ve,"getDefinitionQueryResultForField",{enumerable:!0,get:function(){return Gr.getDefinitionQueryResultForField}});Object.defineProperty(ve,"getDefinitionState",{enumerable:!0,get:function(){return Gr.getDefinitionState}});Object.defineProperty(ve,"getDiagnostics",{enumerable:!0,get:function(){return Gr.getDiagnostics}});Object.defineProperty(ve,"getFieldDef",{enumerable:!0,get:function(){return Gr.getFieldDef}});Object.defineProperty(ve,"getFragmentDefinitions",{enumerable:!0,get:function(){return Gr.getFragmentDefinitions}});Object.defineProperty(ve,"getHoverInformation",{enumerable:!0,get:function(){return Gr.getHoverInformation}});Object.defineProperty(ve,"getOutline",{enumerable:!0,get:function(){return Gr.getOutline}});Object.defineProperty(ve,"getRange",{enumerable:!0,get:function(){return Gr.getRange}});Object.defineProperty(ve,"getTokenAtPosition",{enumerable:!0,get:function(){return Gr.getTokenAtPosition}});Object.defineProperty(ve,"getTypeInfo",{enumerable:!0,get:function(){return Gr.getTypeInfo}});Object.defineProperty(ve,"getVariableCompletions",{enumerable:!0,get:function(){return Gr.getVariableCompletions}});Object.defineProperty(ve,"SEVERITY",{enumerable:!0,get:function(){return Gr.SEVERITY}});Object.defineProperty(ve,"DIAGNOSTIC_SEVERITY",{enumerable:!0,get:function(){return Gr.DIAGNOSTIC_SEVERITY}});Object.defineProperty(ve,"canUseDirective",{enumerable:!0,get:function(){return Gr.canUseDirective}});Object.defineProperty(ve,"SuggestionCommand",{enumerable:!0,get:function(){return Gr.SuggestionCommand}});Object.defineProperty(ve,"validateQuery",{enumerable:!0,get:function(){return Gr.validateQuery}});var eo=ay();Object.defineProperty(ve,"onlineParser",{enumerable:!0,get:function(){return eo.onlineParser}});Object.defineProperty(ve,"ParseRules",{enumerable:!0,get:function(){return eo.ParseRules}});Object.defineProperty(ve,"CharacterStream",{enumerable:!0,get:function(){return eo.CharacterStream}});Object.defineProperty(ve,"RuleKinds",{enumerable:!0,get:function(){return eo.RuleKinds}});Object.defineProperty(ve,"LexRules",{enumerable:!0,get:function(){return eo.LexRules}});Object.defineProperty(ve,"isIgnored",{enumerable:!0,get:function(){return eo.isIgnored}});Object.defineProperty(ve,"p",{enumerable:!0,get:function(){return eo.p}});Object.defineProperty(ve,"list",{enumerable:!0,get:function(){return eo.list}});Object.defineProperty(ve,"t",{enumerable:!0,get:function(){return eo.t}});Object.defineProperty(ve,"opt",{enumerable:!0,get:function(){return eo.opt}});var zU=HU();Object.defineProperty(ve,"CompletionItemKind",{enumerable:!0,get:function(){return zU.CompletionItemKind}});Object.defineProperty(ve,"FileChangeTypeKind",{enumerable:!0,get:function(){return zU.FileChangeTypeKind}});var Ii=Hp();Object.defineProperty(ve,"getASTNodeAtPosition",{enumerable:!0,get:function(){return Ii.getASTNodeAtPosition}});Object.defineProperty(ve,"getFragmentDependencies",{enumerable:!0,get:function(){return Ii.getFragmentDependencies}});Object.defineProperty(ve,"getFragmentDependenciesForAST",{enumerable:!0,get:function(){return Ii.getFragmentDependenciesForAST}});Object.defineProperty(ve,"getOperationASTFacts",{enumerable:!0,get:function(){return Ii.getOperationASTFacts}});Object.defineProperty(ve,"getOperationFacts",{enumerable:!0,get:function(){return Ii.getOperationFacts}});Object.defineProperty(ve,"getQueryFacts",{enumerable:!0,get:function(){return Ii.getQueryFacts}});Object.defineProperty(ve,"getVariablesJSONSchema",{enumerable:!0,get:function(){return Ii.getVariablesJSONSchema}});Object.defineProperty(ve,"offsetToPosition",{enumerable:!0,get:function(){return Ii.offsetToPosition}});Object.defineProperty(ve,"pointToOffset",{enumerable:!0,get:function(){return Ii.pointToOffset}});Object.defineProperty(ve,"Position",{enumerable:!0,get:function(){return Ii.Position}});Object.defineProperty(ve,"collectVariables",{enumerable:!0,get:function(){return Ii.collectVariables}});Object.defineProperty(ve,"validateWithCustomRules",{enumerable:!0,get:function(){return Ii.validateWithCustomRules}});Object.defineProperty(ve,"Range",{enumerable:!0,get:function(){return Ii.Range}})});var YU=G(my=>{"use strict";var gte=my&&my.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(my,"__esModule",{value:!0});var gy=gte(Wt());jO();var WU=Qc();gy.default.registerHelper("hint","graphql",function(e,t){var r=t.schema;if(!!r){var n=e.getCursor(),i=e.getTokenAt(n),o=i.type!==null&&/"|\w/.test(i.string[0])?i.start:i.end,s=new WU.Position(n.line,o),l=(0,WU.getAutocompleteSuggestions)(r,e.getValue(),s,i,t.externalFragments),d={list:l.map(function(h){return{text:h.label,type:h.type,description:h.documentation,isDeprecated:h.isDeprecated,deprecationReason:h.deprecationReason}}),from:{line:n.line,ch:o},to:{line:n.line,ch:i.end}};return(d==null?void 0:d.list)&&d.list.length>0&&(d.from=gy.default.Pos(d.from.line,d.from.ch),d.to=gy.default.Pos(d.to.line,d.to.ch),gy.default.signal(e,"hasCompletion",e,d,i)),d}})});var XU=G(yy=>{"use strict";var mte=yy&&yy.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yy,"__esModule",{value:!0});var fw=mte(Wt()),yte=Qc(),JU=["error","warning","information","hint"],bte={"GraphQL: Validation":"validation","GraphQL: Deprecation":"deprecation","GraphQL: Syntax":"syntax"};fw.default.registerHelper("lint","graphql",function(e,t){var r=t.schema,n=(0,yte.getDiagnostics)(e,r,t.validationRules,void 0,t.externalFragments),i=n.map(function(o){return{message:o.message,severity:o.severity?JU[o.severity-1]:JU[0],type:o.source?bte[o.source]:void 0,from:fw.default.Pos(o.range.start.line,o.range.start.character),to:fw.default.Pos(o.range.end.line,o.range.end.character)}});return i})});var pw=G(dw=>{"use strict";Object.defineProperty(dw,"__esModule",{value:!0});function Tte(e,t){for(var r=[],n=e;n==null?void 0:n.kind;)r.push(n),n=n.prevState;for(var i=r.length-1;i>=0;i--)t(r[i])}dw.default=Tte});var hw=G(Jp=>{"use strict";var _te=Jp&&Jp.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Jp,"__esModule",{value:!0});var Fu=ht(),Bc=vi(),Ete=_te(pw());function Ste(e,t){var r={schema:e,type:null,parentType:null,inputType:null,directiveDef:null,fieldDef:null,argDef:null,argDefs:null,objectFieldDefs:null};return(0,Ete.default)(t,function(n){var i,o;switch(n.kind){case"Query":case"ShortQuery":r.type=e.getQueryType();break;case"Mutation":r.type=e.getMutationType();break;case"Subscription":r.type=e.getSubscriptionType();break;case"InlineFragment":case"FragmentDefinition":n.type&&(r.type=e.getType(n.type));break;case"Field":case"AliasedField":r.fieldDef=r.type&&n.name?ZU(e,r.parentType,n.name):null,r.type=(i=r.fieldDef)===null||i===void 0?void 0:i.type;break;case"SelectionSet":r.parentType=r.type?(0,Fu.getNamedType)(r.type):null;break;case"Directive":r.directiveDef=n.name?e.getDirective(n.name):null;break;case"Arguments":var s=n.prevState?n.prevState.kind==="Field"?r.fieldDef:n.prevState.kind==="Directive"?r.directiveDef:n.prevState.kind==="AliasedField"?n.prevState.name&&ZU(e,r.parentType,n.prevState.name):null:null;r.argDefs=s?s.args:null;break;case"Argument":if(r.argDef=null,r.argDefs){for(var l=0;l{"use strict";Object.defineProperty(ra,"__esModule",{value:!0});ra.getTypeReference=ra.getEnumValueReference=ra.getArgumentReference=ra.getDirectiveReference=ra.getFieldReference=void 0;var Ote=ht();function wte(e){return{kind:"Field",schema:e.schema,field:e.fieldDef,type:$U(e.fieldDef)?null:e.parentType}}ra.getFieldReference=wte;function Nte(e){return{kind:"Directive",schema:e.schema,directive:e.directiveDef}}ra.getDirectiveReference=Nte;function Dte(e){return e.directiveDef?{kind:"Argument",schema:e.schema,argument:e.argDef,directive:e.directiveDef}:{kind:"Argument",schema:e.schema,argument:e.argDef,field:e.fieldDef,type:$U(e.fieldDef)?null:e.parentType}}ra.getArgumentReference=Dte;function xte(e){return{kind:"EnumValue",value:e.enumValue||void 0,type:e.inputType?(0,Ote.getNamedType)(e.inputType):void 0}}ra.getEnumValueReference=xte;function Cte(e,t){return{kind:"Type",schema:e.schema,type:t||e.type}}ra.getTypeReference=Cte;function $U(e){return e.name.slice(0,2)==="__"}});var gw=G(by=>{"use strict";var Lte=by&&by.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(by,"__esModule",{value:!0});var Gn=Lte(Wt());Gn.default.defineOption("info",!1,function(e,t,r){if(r&&r!==Gn.default.Init){var n=e.state.info.onMouseOver;Gn.default.off(e.getWrapperElement(),"mouseover",n),clearTimeout(e.state.info.hoverTimeout),delete e.state.info}if(t){var i=e.state.info=Ite(t);i.onMouseOver=Rte.bind(null,e),Gn.default.on(e.getWrapperElement(),"mouseover",i.onMouseOver)}});function Ite(e){return{options:e instanceof Function?{render:e}:e===!0?{}:e}}function Ate(e){var t=e.state.info.options;return(t==null?void 0:t.hoverTime)||500}function Rte(e,t){var r=e.state.info,n=t.target||t.srcElement;if(n instanceof HTMLElement&&!(n.nodeName!=="SPAN"||r.hoverTimeout!==void 0)){var i=n.getBoundingClientRect(),o=function(){clearTimeout(r.hoverTimeout),r.hoverTimeout=setTimeout(l,d)},s=function(){Gn.default.off(document,"mousemove",o),Gn.default.off(e.getWrapperElement(),"mouseout",s),clearTimeout(r.hoverTimeout),r.hoverTimeout=void 0},l=function(){Gn.default.off(document,"mousemove",o),Gn.default.off(e.getWrapperElement(),"mouseout",s),r.hoverTimeout=void 0,jte(e,i)},d=Ate(e);r.hoverTimeout=setTimeout(l,d),Gn.default.on(document,"mousemove",o),Gn.default.on(e.getWrapperElement(),"mouseout",s)}}function jte(e,t){var r=e.coordsChar({left:(t.left+t.right)/2,top:(t.top+t.bottom)/2}),n=e.state.info,i=n.options,o=i.render||e.getHelper(r,"info");if(o){var s=e.getTokenAt(r,!0);if(s){var l=o(s,i,e,r);l&&Pte(e,t,l)}}}function Pte(e,t,r){var n=document.createElement("div");n.className="CodeMirror-info",n.appendChild(r),document.body.appendChild(n);var i=n.getBoundingClientRect(),o=window.getComputedStyle(n),s=i.right-i.left+parseFloat(o.marginLeft)+parseFloat(o.marginRight),l=i.bottom-i.top+parseFloat(o.marginTop)+parseFloat(o.marginBottom),d=t.bottom;l>window.innerHeight-t.bottom-15&&t.top>window.innerHeight-t.bottom&&(d=t.top-l),d<0&&(d=t.bottom);var h=Math.max(0,window.innerWidth-s-15);h>t.left&&(h=t.left),n.style.opacity="1",n.style.top=d+"px",n.style.left=h+"px";var v,y=function(){clearTimeout(v)},b=function(){clearTimeout(v),v=setTimeout(D,200)},D=function(){Gn.default.off(n,"mouseover",y),Gn.default.off(n,"mouseout",b),Gn.default.off(e.getWrapperElement(),"mouseout",b),n.style.opacity?(n.style.opacity="0",setTimeout(function(){n.parentNode&&n.parentNode.removeChild(n)},600)):n.parentNode&&n.parentNode.removeChild(n)};Gn.default.on(n,"mouseover",y),Gn.default.on(n,"mouseout",b),Gn.default.on(e.getWrapperElement(),"mouseout",b)}});var aG=G(Ty=>{"use strict";var eG=Ty&&Ty.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ty,"__esModule",{value:!0});var tG=ht(),Fte=eG(Wt()),Mte=eG(hw()),Xp=vw();gw();Fte.default.registerHelper("info","graphql",function(e,t){if(!(!t.schema||!e.state)){var r=e.state,n=r.kind,i=r.step,o=(0,Mte.default)(t.schema,e.state);if(n==="Field"&&i===0&&o.fieldDef||n==="AliasedField"&&i===2&&o.fieldDef){var s=document.createElement("div");return qte(s,o,t),Zp(s,t,o.fieldDef),s}else if(n==="Directive"&&i===1&&o.directiveDef){var s=document.createElement("div");return nG(s,o,t),Zp(s,t,o.directiveDef),s}else if(n==="Argument"&&i===0&&o.argDef){var s=document.createElement("div");return Vte(s,o,t),Zp(s,t,o.argDef),s}else if(n==="EnumValue"&&o.enumValue&&o.enumValue.description){var s=document.createElement("div");return Ute(s,o,t),Zp(s,t,o.enumValue),s}else if(n==="NamedType"&&o.type&&o.type.description){var s=document.createElement("div");return Kc(s,o,t,o.type),Zp(s,t,o.type),s}}});function qte(e,t,r){rG(e,t,r),iG(e,t,r,t.type)}function rG(e,t,r){var n,i=((n=t.fieldDef)===null||n===void 0?void 0:n.name)||"";i.slice(0,2)!=="__"&&(Kc(e,t,r,t.parentType),Ai(e,".")),Ai(e,i,"field-name",r,(0,Xp.getFieldReference)(t))}function nG(e,t,r){var n,i="@"+(((n=t.directiveDef)===null||n===void 0?void 0:n.name)||"");Ai(e,i,"directive-name",r,(0,Xp.getDirectiveReference)(t))}function Vte(e,t,r){var n;t.directiveDef?nG(e,t,r):t.fieldDef&&rG(e,t,r);var i=((n=t.argDef)===null||n===void 0?void 0:n.name)||"";Ai(e,"("),Ai(e,i,"arg-name",r,(0,Xp.getArgumentReference)(t)),iG(e,t,r,t.inputType),Ai(e,")")}function iG(e,t,r,n){Ai(e,": "),Kc(e,t,r,n)}function Ute(e,t,r){var n,i=((n=t.enumValue)===null||n===void 0?void 0:n.name)||"";Kc(e,t,r,t.inputType),Ai(e,"."),Ai(e,i,"enum-value",r,(0,Xp.getEnumValueReference)(t))}function Kc(e,t,r,n){n instanceof tG.GraphQLNonNull?(Kc(e,t,r,n.ofType),Ai(e,"!")):n instanceof tG.GraphQLList?(Ai(e,"["),Kc(e,t,r,n.ofType),Ai(e,"]")):Ai(e,(n==null?void 0:n.name)||"","type-name",r,(0,Xp.getTypeReference)(t,n))}function Zp(e,t,r){var n=r.description;if(n){var i=document.createElement("div");i.className="info-description",t.renderDescription?i.innerHTML=t.renderDescription(n):i.appendChild(document.createTextNode(n)),e.appendChild(i)}Gte(e,t,r)}function Gte(e,t,r){var n=r.deprecationReason;if(n){var i=document.createElement("div");i.className="info-deprecation",t.renderDescription?i.innerHTML=t.renderDescription(n):i.appendChild(document.createTextNode(n));var o=document.createElement("span");o.className="info-deprecation-label",o.appendChild(document.createTextNode("Deprecated: ")),i.insertBefore(o,i.firstChild),e.appendChild(i)}}function Ai(e,t,r,n,i){if(r===void 0&&(r=""),n===void 0&&(n={onClick:null}),i===void 0&&(i=null),r){var o=n.onClick,s=void 0;o?(s=document.createElement("a"),s.href="javascript:void 0",s.addEventListener("click",function(l){o(i,l)})):s=document.createElement("span"),s.className=r,s.appendChild(document.createTextNode(t)),e.appendChild(s)}else e.appendChild(document.createTextNode(t))}});var sG=G(_y=>{"use strict";var Qte=_y&&_y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_y,"__esModule",{value:!0});var na=Qte(Wt());na.default.defineOption("jump",!1,function(e,t,r){if(r&&r!==na.default.Init){var n=e.state.jump.onMouseOver;na.default.off(e.getWrapperElement(),"mouseover",n);var i=e.state.jump.onMouseOut;na.default.off(e.getWrapperElement(),"mouseout",i),na.default.off(document,"keydown",e.state.jump.onKeyDown),delete e.state.jump}if(t){var o=e.state.jump={options:t,onMouseOver:Bte.bind(null,e),onMouseOut:Kte.bind(null,e),onKeyDown:Hte.bind(null,e)};na.default.on(e.getWrapperElement(),"mouseover",o.onMouseOver),na.default.on(e.getWrapperElement(),"mouseout",o.onMouseOut),na.default.on(document,"keydown",o.onKeyDown)}});function Bte(e,t){var r=t.target||t.srcElement;if(r instanceof HTMLElement&&(r==null?void 0:r.nodeName)==="SPAN"){var n=r.getBoundingClientRect(),i={left:(n.left+n.right)/2,top:(n.top+n.bottom)/2};e.state.jump.cursor=i,e.state.jump.isHoldingModifier&&oG(e)}}function Kte(e){if(!e.state.jump.isHoldingModifier&&e.state.jump.cursor){e.state.jump.cursor=null;return}e.state.jump.isHoldingModifier&&e.state.jump.marker&&uG(e)}function Hte(e,t){if(!(e.state.jump.isHoldingModifier||!Wte(t.key))){e.state.jump.isHoldingModifier=!0,e.state.jump.cursor&&oG(e);var r=function(o){o.code===t.code&&(e.state.jump.isHoldingModifier=!1,e.state.jump.marker&&uG(e),na.default.off(document,"keyup",r),na.default.off(document,"click",n),e.off("mousedown",i))},n=function(o){var s=e.state.jump.destination;s&&e.state.jump.options.onClick(s,o)},i=function(o,s){e.state.jump.destination&&(s.codemirrorIgnore=!0)};na.default.on(document,"keyup",r),na.default.on(document,"click",n),e.on("mousedown",i)}}var zte=typeof navigator!="undefined"&&navigator&&navigator.appVersion.indexOf("Mac")!==-1;function Wte(e){return e===(zte?"Meta":"Control")}function oG(e){if(!e.state.jump.marker){var t=e.state.jump.cursor,r=e.coordsChar(t),n=e.getTokenAt(r,!0),i=e.state.jump.options,o=i.getDestination||e.getHelper(r,"jump");if(o){var s=o(n,i,e);if(s){var l=e.markText({line:r.line,ch:n.start},{line:r.line,ch:n.end},{className:"CodeMirror-jump-token"});e.state.jump.marker=l,e.state.jump.destination=s}}}}function uG(e){var t=e.state.jump.marker;e.state.jump.marker=null,e.state.jump.destination=null,t.clear()}});var cG=G(Ey=>{"use strict";var lG=Ey&&Ey.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ey,"__esModule",{value:!0});var Yte=lG(Wt()),Jte=lG(hw()),$p=vw();sG();Yte.default.registerHelper("jump","graphql",function(e,t){if(!(!t.schema||!t.onClick||!e.state)){var r=e.state,n=r.kind,i=r.step,o=(0,Jte.default)(t.schema,r);if(n==="Field"&&i===0&&o.fieldDef||n==="AliasedField"&&i===2&&o.fieldDef)return(0,$p.getFieldReference)(o);if(n==="Directive"&&i===1&&o.directiveDef)return(0,$p.getDirectiveReference)(o);if(n==="Argument"&&i===0&&o.argDef)return(0,$p.getArgumentReference)(o);if(n==="EnumValue"&&o.enumValue)return(0,$p.getEnumValueReference)(o);if(n==="NamedType"&&o.type)return(0,$p.getTypeReference)(o)}})});var fG=G(mw=>{"use strict";Object.defineProperty(mw,"__esModule",{value:!0});function Xte(e,t){var r,n,i=e.levels,o=!i||i.length===0?e.indentLevel:i[i.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}mw.default=Xte});var dG=G(eh=>{"use strict";var Zte=eh&&eh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eh,"__esModule",{value:!0});var Sy=Qc(),$te=Zte(fG()),ere=function(e){var t=(0,Sy.onlineParser)({eatWhitespace:function(r){return r.eatWhile(Sy.isIgnored)},lexRules:Sy.LexRules,parseRules:Sy.ParseRules,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:$te.default,electricInput:/^\s*[})\]]/,fold:"brace",lineComment:"#",closeBrackets:{pairs:'()[]{}""',explode:"()[]{}"}}};eh.default=ere});var hG=G(ky=>{"use strict";var pG=ky&&ky.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ky,"__esModule",{value:!0});var tre=pG(Wt()),rre=pG(dG());tre.default.defineMode("graphql",rre.default)});var mG=G(Tw=>{"use strict";Object.defineProperty(Tw,"__esModule",{value:!0});function sre(e,t,r){var n=lre(r,gG(t.string));if(!!n){var i=t.type!==null&&/"|\w/.test(t.string[0])?t.start:t.end;return{list:n,from:{line:e.line,ch:i},to:{line:e.line,ch:t.end}}}}Tw.default=sre;function lre(e,t){if(!t)return bw(e,function(o){return!o.isDeprecated});var r=e.map(function(o){return{proximity:cre(gG(o.text),t),entry:o}}),n=bw(bw(r,function(o){return o.proximity<=2}),function(o){return!o.entry.isDeprecated}),i=n.sort(function(o,s){return(o.entry.isDeprecated?1:0)-(s.entry.isDeprecated?1:0)||o.proximity-s.proximity||o.entry.text.length-s.entry.text.length});return i.map(function(o){return o.entry})}function bw(e,t){var r=e.filter(t);return r.length===0?e:r}function gG(e){return e.toLowerCase().replace(/\W/g,"")}function cre(e,t){var r=fre(t,e);return e.length>t.length&&(r-=e.length-t.length-1,r+=e.indexOf(t)===0?0:.5),r}function fre(e,t){var r,n,i=[],o=e.length,s=t.length;for(r=0;r<=o;r++)i[r]=[r];for(n=1;n<=s;n++)i[0][n]=n;for(r=1;r<=o;r++)for(n=1;n<=s;n++){var l=e[r-1]===t[n-1]?0:1;i[r][n]=Math.min(i[r-1][n]+1,i[r][n-1]+1,i[r-1][n-1]+l),r>1&&n>1&&e[r-1]===t[n-2]&&e[r-2]===t[n-1]&&(i[r][n]=Math.min(i[r][n],i[r-2][n-2]+l))}return i[o][s]}});var yG=G(Dy=>{"use strict";var _w=Dy&&Dy.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Dy,"__esModule",{value:!0});var Ny=_w(Wt()),to=ht(),dre=_w(pw()),Hc=_w(mG());Ny.default.registerHelper("hint","graphql-variables",function(e,t){var r=e.getCursor(),n=e.getTokenAt(r),i=pre(r,n,t);return(i==null?void 0:i.list)&&i.list.length>0&&(i.from=Ny.default.Pos(i.from.line,i.from.ch),i.to=Ny.default.Pos(i.to.line,i.to.ch),Ny.default.signal(e,"hasCompletion",e,i,n)),i});function pre(e,t,r){var n=t.state.kind==="Invalid"?t.state.prevState:t.state,i=n.kind,o=n.step;if(i==="Document"&&o===0)return(0,Hc.default)(e,t,[{text:"{"}]);var s=r.variableToType;if(!!s){var l=hre(s,t.state);if(i==="Document"||i==="Variable"&&o===0){var d=Object.keys(s);return(0,Hc.default)(e,t,d.map(function(b){return{text:'"'.concat(b,'": '),type:s[b]}}))}if((i==="ObjectValue"||i==="ObjectField"&&o===0)&&l.fields){var h=Object.keys(l.fields).map(function(b){return l.fields[b]});return(0,Hc.default)(e,t,h.map(function(b){return{text:'"'.concat(b.name,'": '),type:b.type,description:b.description}}))}if(i==="StringValue"||i==="NumberValue"||i==="BooleanValue"||i==="NullValue"||i==="ListValue"&&o===1||i==="ObjectField"&&o===2||i==="Variable"&&o===2){var v=l.type?(0,to.getNamedType)(l.type):void 0;if(v instanceof to.GraphQLInputObjectType)return(0,Hc.default)(e,t,[{text:"{"}]);if(v instanceof to.GraphQLEnumType){var y=v.getValues();return(0,Hc.default)(e,t,y.map(function(b){return{text:'"'.concat(b.name,'"'),type:v,description:b.description}}))}else if(v===to.GraphQLBoolean)return(0,Hc.default)(e,t,[{text:"true",type:to.GraphQLBoolean,description:"Not false."},{text:"false",type:to.GraphQLBoolean,description:"Not true."}])}}}function hre(e,t){var r={type:null,fields:null};return(0,dre.default)(t,function(n){if(n.kind==="Variable")r.type=e[n.name];else if(n.kind==="ListValue"){var i=r.type?(0,to.getNullableType)(r.type):void 0;r.type=i instanceof to.GraphQLList?i.ofType:null}else if(n.kind==="ObjectValue"){var o=r.type?(0,to.getNamedType)(r.type):void 0;r.fields=o instanceof to.GraphQLInputObjectType?o.getFields():null}else if(n.kind==="ObjectField"){var s=n.name&&r.fields?r.fields[n.name]:null;r.type=s==null?void 0:s.type}}),r}});var SG=G(Bs=>{"use strict";var vre=Bs&&Bs.__extends||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Bs,"__esModule",{value:!0});Bs.JSONSyntaxError=void 0;function gre(e){ro=e,xy=e.length,nn=Qn=th=-1,an(),Ly();var t=bG();return Mu("EOF"),t}Bs.default=gre;var ro,xy,nn,Qn,th,It,Ri;function bG(){var e=nn,t=[];if(Mu("{"),!Cy("}")){do t.push(mre());while(Cy(","));Mu("}")}return{kind:"Object",start:e,end:th,members:t}}function mre(){var e=nn,t=Ri==="String"?_G():null;Mu("String"),Mu(":");var r=TG();return{kind:"Member",start:e,end:th,key:t,value:r}}function yre(){var e=nn,t=[];if(Mu("["),!Cy("]")){do t.push(TG());while(Cy(","));Mu("]")}return{kind:"Array",start:e,end:th,values:t}}function TG(){switch(Ri){case"[":return yre();case"{":return bG();case"String":case"Number":case"Boolean":case"Null":var e=_G();return Ly(),e}Mu("Value")}function _G(){return{kind:Ri,start:nn,end:Qn,value:JSON.parse(ro.slice(nn,Qn))}}function Mu(e){if(Ri===e){Ly();return}var t;if(Ri==="EOF")t="[end of file]";else if(Qn-nn>1)t="`"+ro.slice(nn,Qn)+"`";else{var r=ro.slice(nn).match(/^.+?\b/);t="`"+(r?r[0]:ro[nn])+"`"}throw zc("Expected ".concat(e," but found ").concat(t,"."))}var EG=function(e){vre(t,e);function t(r,n){var i=e.call(this,r)||this;return i.position=n,i}return t}(Error);Bs.JSONSyntaxError=EG;function zc(e){return new EG(e,{start:nn,end:Qn})}function Cy(e){if(Ri===e)return Ly(),!0}function an(){return Qn31;)if(It===92)switch(It=an(),It){case 34:case 47:case 92:case 98:case 102:case 110:case 114:case 116:an();break;case 117:an(),Iy(),Iy(),Iy(),Iy();break;default:throw zc("Bad character escape sequence.")}else{if(Qn===xy)throw zc("Unterminated string.");an()}if(It===34){an();return}throw zc("Unterminated string.")}function Iy(){if(It>=48&&It<=57||It>=65&&It<=70||It>=97&&It<=102)return an();throw zc("Expected hexadecimal digit.")}function Tre(){It===45&&an(),It===48?an():Ew(),It===46&&(an(),Ew()),(It===69||It===101)&&(It=an(),(It===43||It===45)&&an(),Ew())}function Ew(){if(It<48||It>57)throw zc("Expected decimal digit.");do an();while(It>=48&&It<=57)}});var wG=G(ia=>{"use strict";var _re=ia&&ia.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),Ere=ia&&ia.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Sre=ia&&ia.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&_re(t,e,r);return Ere(t,e),t},kre=ia&&ia.__read||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},Ore=ia&&ia.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ia,"__esModule",{value:!0});var wre=Ore(Wt()),Wc=ht(),kG=Sre(SG());wre.default.registerHelper("lint","graphql-variables",function(e,t,r){if(!e)return[];var n;try{n=(0,kG.default)(e)}catch(o){if(o instanceof kG.JSONSyntaxError)return[Sw(r,o.position,o.message)];throw o}var i=t.variableToType;return i?Nre(r,i,n):[]});function Nre(e,t,r){var n=[];return r.members.forEach(function(i){var o;if(i){var s=(o=i.key)===null||o===void 0?void 0:o.value,l=t[s];l?rh(l,i.value).forEach(function(d){var h=kre(d,2),v=h[0],y=h[1];n.push(Sw(e,v,y))}):n.push(Sw(e,i.key,'Variable "$'.concat(s,'" does not appear in any GraphQL query.')))}}),n}function rh(e,t){if(!e||!t)return[];if(e instanceof Wc.GraphQLNonNull)return t.kind==="Null"?[[t,'Type "'.concat(e,'" is non-nullable and cannot be null.')]]:rh(e.ofType,t);if(t.kind==="Null")return[];if(e instanceof Wc.GraphQLList){var r=e.ofType;if(t.kind==="Array"){var n=t.values||[];return OG(n,function(s){return rh(r,s)})}return rh(r,t)}if(e instanceof Wc.GraphQLInputObjectType){if(t.kind!=="Object")return[[t,'Type "'.concat(e,'" must be an Object.')]];var i=Object.create(null),o=OG(t.members,function(s){var l,d=(l=s==null?void 0:s.key)===null||l===void 0?void 0:l.value;i[d]=!0;var h=e.getFields()[d];if(!h)return[[s.key,'Type "'.concat(e,'" does not have a field "').concat(d,'".')]];var v=h?h.type:void 0;return rh(v,s.value)});return Object.keys(e.getFields()).forEach(function(s){if(!i[s]){var l=e.getFields()[s].type;l instanceof Wc.GraphQLNonNull&&o.push([t,'Object of type "'.concat(e,'" is missing required field "').concat(s,'".')])}}),o}return e.name==="Boolean"&&t.kind!=="Boolean"||e.name==="String"&&t.kind!=="String"||e.name==="ID"&&t.kind!=="Number"&&t.kind!=="String"||e.name==="Float"&&t.kind!=="Number"||e.name==="Int"&&(t.kind!=="Number"||(t.value|0)!==t.value)?[[t,'Expected value of type "'.concat(e,'".')]]:(e instanceof Wc.GraphQLEnumType||e instanceof Wc.GraphQLScalarType)&&(t.kind!=="String"&&t.kind!=="Number"&&t.kind!=="Boolean"&&t.kind!=="Null"||Dre(e.parseValue(t.value)))?[[t,'Expected value of type "'.concat(e,'".')]]:[]}function Sw(e,t,r){return{message:r,severity:"error",type:"validation",from:e.posFromIndex(t.start),to:e.posFromIndex(t.end)}}function Dre(e){return e==null||e!==e}function OG(e,t){return Array.prototype.concat.apply([],e.map(t))}});var DG=G(Ay=>{"use strict";var xre=Ay&&Ay.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ay,"__esModule",{value:!0});var Cre=xre(Wt()),Or=Qc();Cre.default.defineMode("graphql-variables",function(e){var t=(0,Or.onlineParser)({eatWhitespace:function(r){return r.eatSpace()},lexRules:Ire,parseRules:Are,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:Lre,electricInput:/^\s*[}\]]/,fold:"brace",closeBrackets:{pairs:'[]{}""',explode:"[]{}"}}});function Lre(e,t){var r,n,i=e.levels,o=!i||i.length===0?e.indentLevel:i[i.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}var Ire={Punctuation:/^\[|]|\{|\}|:|,/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/,Keyword:/^true|false|null/},Are={Document:[(0,Or.p)("{"),(0,Or.list)("Variable",(0,Or.opt)((0,Or.p)(","))),(0,Or.p)("}")],Variable:[NG("variable"),(0,Or.p)(":"),"Value"],Value:function(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue"}return null;case"Keyword":switch(e.value){case"true":case"false":return"BooleanValue";case"null":return"NullValue"}return null}},NumberValue:[(0,Or.t)("Number","number")],StringValue:[(0,Or.t)("String","string")],BooleanValue:[(0,Or.t)("Keyword","builtin")],NullValue:[(0,Or.t)("Keyword","keyword")],ListValue:[(0,Or.p)("["),(0,Or.list)("Value",(0,Or.opt)((0,Or.p)(","))),(0,Or.p)("]")],ObjectValue:[(0,Or.p)("{"),(0,Or.list)("ObjectField",(0,Or.opt)((0,Or.p)(","))),(0,Or.p)("}")],ObjectField:[NG("attribute"),(0,Or.p)(":"),"Value"]};function NG(e){return{style:e,match:function(t){return t.kind==="String"},update:function(t,r){t.name=r.value.slice(1,-1)}}}});var LG=G((xG,CG)=>{(function(e){typeof xG=="object"&&typeof CG=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";e.defineMode("javascript",function(t,r){var n=t.indentUnit,i=r.statementIndent,o=r.jsonld,s=r.json||o,l=r.trackScope!==!1,d=r.typescript,h=r.wordCharacters||/[\w$\xa1-\uffff]/,v=function(){function j(Pr){return{type:Pr,style:"keyword"}}var H=j("keyword a"),W=j("keyword b"),ie=j("keyword c"),We=j("keyword d"),vt=j("operator"),_t={type:"atom",style:"atom"};return{if:j("if"),while:H,with:H,else:W,do:W,try:W,finally:W,return:We,break:We,continue:We,new:j("new"),delete:ie,void:ie,throw:ie,debugger:j("debugger"),var:j("var"),const:j("var"),let:j("var"),function:j("function"),catch:j("catch"),for:j("for"),switch:j("switch"),case:j("case"),default:j("default"),in:vt,typeof:vt,instanceof:vt,true:_t,false:_t,null:_t,undefined:_t,NaN:_t,Infinity:_t,this:j("this"),class:j("class"),super:j("atom"),yield:ie,export:j("export"),import:j("import"),extends:ie,await:ie}}(),y=/[+\-*&%=<>!?|~^@]/,b=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function D(j){for(var H=!1,W,ie=!1;(W=j.next())!=null;){if(!H){if(W=="/"&&!ie)return;W=="["?ie=!0:ie&&W=="]"&&(ie=!1)}H=!H&&W=="\\"}}var _,k;function T(j,H,W){return _=j,k=W,H}function S(j,H){var W=j.next();if(W=='"'||W=="'")return H.tokenize=m(W),H.tokenize(j,H);if(W=="."&&j.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return T("number","number");if(W=="."&&j.match(".."))return T("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(W))return T(W);if(W=="="&&j.eat(">"))return T("=>","operator");if(W=="0"&&j.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return T("number","number");if(/\d/.test(W))return j.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),T("number","number");if(W=="/")return j.eat("*")?(H.tokenize=w,w(j,H)):j.eat("/")?(j.skipToEnd(),T("comment","comment")):wa(j,H,1)?(D(j),j.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),T("regexp","string-2")):(j.eat("="),T("operator","operator",j.current()));if(W=="`")return H.tokenize=x,x(j,H);if(W=="#"&&j.peek()=="!")return j.skipToEnd(),T("meta","meta");if(W=="#"&&j.eatWhile(h))return T("variable","property");if(W=="<"&&j.match("!--")||W=="-"&&j.match("->")&&!/\S/.test(j.string.slice(0,j.start)))return j.skipToEnd(),T("comment","comment");if(y.test(W))return(W!=">"||!H.lexical||H.lexical.type!=">")&&(j.eat("=")?(W=="!"||W=="=")&&j.eat("="):/[<>*+\-|&?]/.test(W)&&(j.eat(W),W==">"&&j.eat(W))),W=="?"&&j.eat(".")?T("."):T("operator","operator",j.current());if(h.test(W)){j.eatWhile(h);var ie=j.current();if(H.lastType!="."){if(v.propertyIsEnumerable(ie)){var We=v[ie];return T(We.type,We.style,ie)}if(ie=="async"&&j.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return T("async","keyword",ie)}return T("variable","variable",ie)}}function m(j){return function(H,W){var ie=!1,We;if(o&&H.peek()=="@"&&H.match(b))return W.tokenize=S,T("jsonld-keyword","meta");for(;(We=H.next())!=null&&!(We==j&&!ie);)ie=!ie&&We=="\\";return ie||(W.tokenize=S),T("string","string")}}function w(j,H){for(var W=!1,ie;ie=j.next();){if(ie=="/"&&W){H.tokenize=S;break}W=ie=="*"}return T("comment","comment")}function x(j,H){for(var W=!1,ie;(ie=j.next())!=null;){if(!W&&(ie=="`"||ie=="$"&&j.eat("{"))){H.tokenize=S;break}W=!W&&ie=="\\"}return T("quasi","string-2",j.current())}var L="([{}])";function O(j,H){H.fatArrowAt&&(H.fatArrowAt=null);var W=j.string.indexOf("=>",j.start);if(!(W<0)){if(d){var ie=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(j.string.slice(j.start,W));ie&&(W=ie.index)}for(var We=0,vt=!1,_t=W-1;_t>=0;--_t){var Pr=j.string.charAt(_t),Si=L.indexOf(Pr);if(Si>=0&&Si<3){if(!We){++_t;break}if(--We==0){Pr=="("&&(vt=!0);break}}else if(Si>=3&&Si<6)++We;else if(h.test(Pr))vt=!0;else if(/["'\/`]/.test(Pr))for(;;--_t){if(_t==0)return;var Ye=j.string.charAt(_t-1);if(Ye==Pr&&j.string.charAt(_t-2)!="\\"){_t--;break}}else if(vt&&!We){++_t;break}}vt&&!We&&(H.fatArrowAt=_t)}}var R={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function M(j,H,W,ie,We,vt){this.indented=j,this.column=H,this.type=W,this.prev=We,this.info=vt,ie!=null&&(this.align=ie)}function q(j,H){if(!l)return!1;for(var W=j.localVars;W;W=W.next)if(W.name==H)return!0;for(var ie=j.context;ie;ie=ie.prev)for(var W=ie.vars;W;W=W.next)if(W.name==H)return!0}function z(j,H,W,ie,We){var vt=j.cc;for(B.state=j,B.stream=We,B.marked=null,B.cc=vt,B.style=H,j.lexical.hasOwnProperty("align")||(j.lexical.align=!0);;){var _t=vt.length?vt.pop():s?Me:we;if(_t(W,ie)){for(;vt.length&&vt[vt.length-1].lex;)vt.pop()();return B.marked?B.marked:W=="variable"&&q(j,ie)?"variable-2":H}}}var B={state:null,column:null,marked:null,cc:null};function Q(){for(var j=arguments.length-1;j>=0;j--)B.cc.push(arguments[j])}function P(){return Q.apply(null,arguments),!0}function he(j,H){for(var W=H;W;W=W.next)if(W.name==j)return!0;return!1}function xe(j){var H=B.state;if(B.marked="def",!!l){if(H.context){if(H.lexical.info=="var"&&H.context&&H.context.block){var W=ge(j,H.context);if(W!=null){H.context=W;return}}else if(!he(j,H.localVars)){H.localVars=new He(j,H.localVars);return}}r.globalVars&&!he(j,H.globalVars)&&(H.globalVars=new He(j,H.globalVars))}}function ge(j,H){if(H)if(H.block){var W=ge(j,H.prev);return W?W==H.prev?H:new Le(W,H.vars,!0):null}else return he(j,H.vars)?H:new Le(H.prev,new He(j,H.vars),!1);else return null}function Fe(j){return j=="public"||j=="private"||j=="protected"||j=="abstract"||j=="readonly"}function Le(j,H,W){this.prev=j,this.vars=H,this.block=W}function He(j,H){this.name=j,this.next=H}var Xe=new He("this",new He("arguments",null));function Ve(){B.state.context=new Le(B.state.context,B.state.localVars,!1),B.state.localVars=Xe}function At(){B.state.context=new Le(B.state.context,B.state.localVars,!0),B.state.localVars=null}Ve.lex=At.lex=!0;function Ot(){B.state.localVars=B.state.context.vars,B.state.context=B.state.context.prev}Ot.lex=!0;function Ie(j,H){var W=function(){var ie=B.state,We=ie.indented;if(ie.lexical.type=="stat")We=ie.lexical.indented;else for(var vt=ie.lexical;vt&&vt.type==")"&&vt.align;vt=vt.prev)We=vt.indented;ie.lexical=new M(We,B.stream.column(),j,null,ie.lexical,H)};return W.lex=!0,W}function te(){var j=B.state;j.lexical.prev&&(j.lexical.type==")"&&(j.indented=j.lexical.indented),j.lexical=j.lexical.prev)}te.lex=!0;function ce(j){function H(W){return W==j?P():j==";"||W=="}"||W==")"||W=="]"?Q():P(H)}return H}function we(j,H){return j=="var"?P(Ie("vardef",H),J,ce(";"),te):j=="keyword a"?P(Ie("form"),ze,we,te):j=="keyword b"?P(Ie("form"),we,te):j=="keyword d"?B.stream.match(/^\s*$/,!1)?P():P(Ie("stat"),oe,ce(";"),te):j=="debugger"?P(ce(";")):j=="{"?P(Ie("}"),At,zn,te,Ot):j==";"?P():j=="if"?(B.state.lexical.info=="else"&&B.state.cc[B.state.cc.length-1]==te&&B.state.cc.pop()(),P(Ie("form"),ze,we,te,Ut)):j=="function"?P(jr):j=="for"?P(Ie("form"),At,Rt,we,Ot,te):j=="class"||d&&H=="interface"?(B.marked="keyword",P(Ie("form",j=="class"?j:H),ch,te)):j=="variable"?d&&H=="declare"?(B.marked="keyword",P(we)):d&&(H=="module"||H=="enum"||H=="type")&&B.stream.match(/^\s*\w/,!1)?(B.marked="keyword",H=="enum"?P(Xs):H=="type"?P(sa,ce("operator"),_e,ce(";")):P(Ie("form"),V,ce("{"),Ie("}"),zn,te,te)):d&&H=="namespace"?(B.marked="keyword",P(Ie("form"),Me,we,te)):d&&H=="abstract"?(B.marked="keyword",P(we)):P(Ie("stat"),dn):j=="switch"?P(Ie("form"),ze,ce("{"),Ie("}","switch"),At,zn,te,te,Ot):j=="case"?P(Me,ce(":")):j=="default"?P(ce(":")):j=="catch"?P(Ie("form"),Ve,ot,we,te,Ot):j=="export"?P(Ie("stat"),jo,te):j=="import"?P(Ie("stat"),ao,te):j=="async"?P(we):H=="@"?P(Me,we):Q(Ie("stat"),Me,ce(";"),te)}function ot(j){if(j=="(")return P(Cn,ce(")"))}function Me(j,H){return mt(j,H,!1)}function Qe(j,H){return mt(j,H,!0)}function ze(j){return j!="("?Q():P(Ie(")"),oe,ce(")"),te)}function mt(j,H,W){if(B.state.fatArrowAt==B.stream.start){var ie=W?ct:at;if(j=="(")return P(Ve,Ie(")"),Kt(Cn,")"),te,ce("=>"),ie,Ot);if(j=="variable")return Q(Ve,V,ce("=>"),ie,Ot)}var We=W?fe:me;return R.hasOwnProperty(j)?P(We):j=="function"?P(jr,We):j=="class"||d&&H=="interface"?(B.marked="keyword",P(Ie("form"),la,te)):j=="keyword c"||j=="async"?P(W?Qe:Me):j=="("?P(Ie(")"),oe,ce(")"),te,We):j=="operator"||j=="spread"?P(W?Qe:Me):j=="["?P(Ie("]"),oo,te,We):j=="{"?hn(pn,"}",null,We):j=="quasi"?Q(se,We):j=="new"?P(st(W)):P()}function oe(j){return j.match(/[;\}\)\],]/)?Q():Q(Me)}function me(j,H){return j==","?P(oe):fe(j,H,!1)}function fe(j,H,W){var ie=W==!1?me:fe,We=W==!1?Me:Qe;if(j=="=>")return P(Ve,W?ct:at,Ot);if(j=="operator")return/\+\+|--/.test(H)||d&&H=="!"?P(ie):d&&H=="<"&&B.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?P(Ie(">"),Kt(_e,">"),te,ie):H=="?"?P(Me,ce(":"),We):P(We);if(j=="quasi")return Q(se,ie);if(j!=";"){if(j=="(")return hn(Qe,")","call",ie);if(j==".")return P(Hn,ie);if(j=="[")return P(Ie("]"),oe,ce("]"),te,ie);if(d&&H=="as")return B.marked="keyword",P(_e,ie);if(j=="regexp")return B.state.lastType=B.marked="operator",B.stream.backUp(B.stream.pos-B.stream.start-1),P(We)}}function se(j,H){return j!="quasi"?Q():H.slice(H.length-2)!="${"?P(se):P(oe,Ue)}function Ue(j){if(j=="}")return B.marked="string-2",B.state.tokenize=x,P(se)}function at(j){return O(B.stream,B.state),Q(j=="{"?we:Me)}function ct(j){return O(B.stream,B.state),Q(j=="{"?we:Qe)}function st(j){return function(H){return H=="."?P(j?Ei:Dn):H=="variable"&&d?P(ee,j?fe:me):Q(j?Qe:Me)}}function Dn(j,H){if(H=="target")return B.marked="keyword",P(me)}function Ei(j,H){if(H=="target")return B.marked="keyword",P(fe)}function dn(j){return j==":"?P(te,we):Q(me,ce(";"),te)}function Hn(j){if(j=="variable")return B.marked="property",P()}function pn(j,H){if(j=="async")return B.marked="property",P(pn);if(j=="variable"||B.style=="keyword"){if(B.marked="property",H=="get"||H=="set")return P(Pi);var W;return d&&B.state.fatArrowAt==B.stream.start&&(W=B.stream.match(/^\s*:\s*/,!1))&&(B.state.fatArrowAt=B.stream.pos+W[0].length),P(Qr)}else{if(j=="number"||j=="string")return B.marked=o?"property":B.style+" property",P(Qr);if(j=="jsonld-keyword")return P(Qr);if(d&&Fe(H))return B.marked="keyword",P(pn);if(j=="[")return P(Me,vr,ce("]"),Qr);if(j=="spread")return P(Qe,Qr);if(H=="*")return B.marked="keyword",P(pn);if(j==":")return Q(Qr)}}function Pi(j){return j!="variable"?Q(Qr):(B.marked="property",P(jr))}function Qr(j){if(j==":")return P(Qe);if(j=="(")return Q(jr)}function Kt(j,H,W){function ie(We,vt){if(W?W.indexOf(We)>-1:We==","){var _t=B.state.lexical;return _t.info=="call"&&(_t.pos=(_t.pos||0)+1),P(function(Pr,Si){return Pr==H||Si==H?Q():Q(j)},ie)}return We==H||vt==H?P():W&&W.indexOf(";")>-1?Q(j):P(ce(H))}return function(We,vt){return We==H||vt==H?P():Q(j,ie)}}function hn(j,H,W){for(var ie=3;ie"),_e);if(j=="quasi")return Q(nr,un)}function Gu(j){if(j=="=>")return P(_e)}function Ar(j){return j.match(/[\}\)\]]/)?P():j==","||j==";"?P(Ar):Q(Ft,Ar)}function Ft(j,H){if(j=="variable"||B.style=="keyword")return B.marked="property",P(Ft);if(H=="?"||j=="number"||j=="string")return P(Ft);if(j==":")return P(_e);if(j=="[")return P(ce("variable"),Ro,ce("]"),Ft);if(j=="(")return Q(et,Ft);if(!j.match(/[;\}\)\],]/))return P()}function nr(j,H){return j!="quasi"?Q():H.slice(H.length-2)!="${"?P(nr):P(_e,Ys)}function Ys(j){if(j=="}")return B.marked="string-2",B.state.tokenize=x,P(nr)}function on(j,H){return j=="variable"&&B.stream.match(/^\s*[?:]/,!1)||H=="?"?P(on):j==":"?P(_e):j=="spread"?P(on):Q(_e)}function un(j,H){if(H=="<")return P(Ie(">"),Kt(_e,">"),te,un);if(H=="|"||j=="."||H=="&")return P(_e);if(j=="[")return P(_e,ce("]"),un);if(H=="extends"||H=="implements")return B.marked="keyword",P(_e);if(H=="?")return P(_e,ce(":"),_e)}function ee(j,H){if(H=="<")return P(Ie(">"),Kt(_e,">"),te,un)}function F(){return Q(_e,Y)}function Y(j,H){if(H=="=")return P(_e)}function J(j,H){return H=="enum"?(B.marked="keyword",P(Xs)):Q(V,vr,ue,Ze)}function V(j,H){if(d&&Fe(H))return B.marked="keyword",P(V);if(j=="variable")return xe(H),P();if(j=="spread")return P(V);if(j=="[")return hn(re,"]");if(j=="{")return hn(A,"}")}function A(j,H){return j=="variable"&&!B.stream.match(/^\s*:/,!1)?(xe(H),P(ue)):(j=="variable"&&(B.marked="property"),j=="spread"?P(V):j=="}"?Q():j=="["?P(Me,ce("]"),ce(":"),A):P(ce(":"),V,ue))}function re(){return Q(V,ue)}function ue(j,H){if(H=="=")return P(Qe)}function Ze(j){if(j==",")return P(J)}function Ut(j,H){if(j=="keyword b"&&H=="else")return P(Ie("form","else"),we,te)}function Rt(j,H){if(H=="await")return P(Rt);if(j=="(")return P(Ie(")"),vn,te)}function vn(j){return j=="var"?P(J,Rr):j=="variable"?P(Rr):Q(Rr)}function Rr(j,H){return j==")"?P():j==";"?P(Rr):H=="in"||H=="of"?(B.marked="keyword",P(Me,Rr)):Q(Me,Rr)}function jr(j,H){if(H=="*")return B.marked="keyword",P(jr);if(j=="variable")return xe(H),P(jr);if(j=="(")return P(Ve,Ie(")"),Kt(Cn,")"),te,xn,we,Ot);if(d&&H=="<")return P(Ie(">"),Kt(F,">"),te,jr)}function et(j,H){if(H=="*")return B.marked="keyword",P(et);if(j=="variable")return xe(H),P(et);if(j=="(")return P(Ve,Ie(")"),Kt(Cn,")"),te,xn,Ot);if(d&&H=="<")return P(Ie(">"),Kt(F,">"),te,et)}function sa(j,H){if(j=="keyword"||j=="variable")return B.marked="type",P(sa);if(H=="<")return P(Ie(">"),Kt(F,">"),te)}function Cn(j,H){return H=="@"&&P(Me,Cn),j=="spread"?P(Cn):d&&Fe(H)?(B.marked="keyword",P(Cn)):d&&j=="this"?P(vr,ue):Q(V,vr,ue)}function la(j,H){return j=="variable"?ch(j,H):Js(j,H)}function ch(j,H){if(j=="variable")return xe(H),P(Js)}function Js(j,H){if(H=="<")return P(Ie(">"),Kt(F,">"),te,Js);if(H=="extends"||H=="implements"||d&&j==",")return H=="implements"&&(B.marked="keyword"),P(d?_e:Me,Js);if(j=="{")return P(Ie("}"),ui,te)}function ui(j,H){if(j=="async"||j=="variable"&&(H=="static"||H=="get"||H=="set"||d&&Fe(H))&&B.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return B.marked="keyword",P(ui);if(j=="variable"||B.style=="keyword")return B.marked="property",P(io,ui);if(j=="number"||j=="string")return P(io,ui);if(j=="[")return P(Me,vr,ce("]"),io,ui);if(H=="*")return B.marked="keyword",P(ui);if(d&&j=="(")return Q(et,ui);if(j==";"||j==",")return P(ui);if(j=="}")return P();if(H=="@")return P(Me,ui)}function io(j,H){if(H=="!"||H=="?")return P(io);if(j==":")return P(_e,ue);if(H=="=")return P(Qe);var W=B.state.lexical.prev,ie=W&&W.info=="interface";return Q(ie?et:jr)}function jo(j,H){return H=="*"?(B.marked="keyword",P(Ae,ce(";"))):H=="default"?(B.marked="keyword",P(Me,ce(";"))):j=="{"?P(Kt(fh,"}"),Ae,ce(";")):Q(we)}function fh(j,H){if(H=="as")return B.marked="keyword",P(ce("variable"));if(j=="variable")return Q(Qe,fh)}function ao(j){return j=="string"?P():j=="("?Q(Me):j=="."?Q(me):Q(Po,nf,Ae)}function Po(j,H){return j=="{"?hn(Po,"}"):(j=="variable"&&xe(H),H=="*"&&(B.marked="keyword"),P(gr))}function nf(j){if(j==",")return P(Po,nf)}function gr(j,H){if(H=="as")return B.marked="keyword",P(Po)}function Ae(j,H){if(H=="from")return B.marked="keyword",P(Me)}function oo(j){return j=="]"?P():Q(Kt(Qe,"]"))}function Xs(){return Q(Ie("form"),V,ce("{"),Ie("}"),Kt(Fi,"}"),te,te)}function Fi(){return Q(V,ue)}function wt(j,H){return j.lastType=="operator"||j.lastType==","||y.test(H.charAt(0))||/[,.]/.test(H.charAt(0))}function wa(j,H,W){return H.tokenize==S&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(H.lastType)||H.lastType=="quasi"&&/\{\s*$/.test(j.string.slice(0,j.pos-(W||0)))}return{startState:function(j){var H={tokenize:S,lastType:"sof",cc:[],lexical:new M((j||0)-n,0,"block",!1),localVars:r.localVars,context:r.localVars&&new Le(null,null,!1),indented:j||0};return r.globalVars&&typeof r.globalVars=="object"&&(H.globalVars=r.globalVars),H},token:function(j,H){if(j.sol()&&(H.lexical.hasOwnProperty("align")||(H.lexical.align=!1),H.indented=j.indentation(),O(j,H)),H.tokenize!=w&&j.eatSpace())return null;var W=H.tokenize(j,H);return _=="comment"?W:(H.lastType=_=="operator"&&(k=="++"||k=="--")?"incdec":_,z(H,W,_,k,j))},indent:function(j,H){if(j.tokenize==w||j.tokenize==x)return e.Pass;if(j.tokenize!=S)return 0;var W=H&&H.charAt(0),ie=j.lexical,We;if(!/^\s*else\b/.test(H))for(var vt=j.cc.length-1;vt>=0;--vt){var _t=j.cc[vt];if(_t==te)ie=ie.prev;else if(_t!=Ut&&_t!=Ot)break}for(;(ie.type=="stat"||ie.type=="form")&&(W=="}"||(We=j.cc[j.cc.length-1])&&(We==me||We==fe)&&!/^[,\.=+\-*:?[\(]/.test(H));)ie=ie.prev;i&&ie.type==")"&&ie.prev.type=="stat"&&(ie=ie.prev);var Pr=ie.type,Si=W==Pr;return Pr=="vardef"?ie.indented+(j.lastType=="operator"||j.lastType==","?ie.info.length+1:0):Pr=="form"&&W=="{"?ie.indented:Pr=="form"?ie.indented+n:Pr=="stat"?ie.indented+(wt(j,H)?i||n:0):ie.info=="switch"&&!Si&&r.doubleIndentSwitch!=!1?ie.indented+(/^(?:case|default)\b/.test(H)?n:2*n):ie.align?ie.column+(Si?0:1):ie.indented+(Si?0:n)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:s?null:"/*",blockCommentEnd:s?null:"*/",blockCommentContinue:s?null:" * ",lineComment:s?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:s?"json":"javascript",jsonldMode:o,jsonMode:s,expressionAllowed:wa,skipExpression:function(j){z(j,"atom","atom","true",new e.StringStream("",2,null))}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var IG=G(jy=>{"use strict";var Vre=jy&&jy.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(jy,"__esModule",{value:!0});var Ure=Vre(Wt()),Ir=Qc();Ure.default.defineMode("graphql-results",function(e){var t=(0,Ir.onlineParser)({eatWhitespace:function(r){return r.eatSpace()},lexRules:Qre,parseRules:Bre,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:Gre,electricInput:/^\s*[}\]]/,fold:"brace",closeBrackets:{pairs:'[]{}""',explode:"[]{}"}}});function Gre(e,t){var r,n,i=e.levels,o=!i||i.length===0?e.indentLevel:i[i.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}var Qre={Punctuation:/^\[|]|\{|\}|:|,/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/,Keyword:/^true|false|null/},Bre={Document:[(0,Ir.p)("{"),(0,Ir.list)("Entry",(0,Ir.p)(",")),(0,Ir.p)("}")],Entry:[(0,Ir.t)("String","def"),(0,Ir.p)(":"),"Value"],Value:function(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue"}return null;case"Keyword":switch(e.value){case"true":case"false":return"BooleanValue";case"null":return"NullValue"}return null}},NumberValue:[(0,Ir.t)("Number","number")],StringValue:[(0,Ir.t)("String","string")],BooleanValue:[(0,Ir.t)("Keyword","builtin")],NullValue:[(0,Ir.t)("Keyword","keyword")],ListValue:[(0,Ir.p)("["),(0,Ir.list)("Value",(0,Ir.p)(",")),(0,Ir.p)("]")],ObjectValue:[(0,Ir.p)("{"),(0,Ir.list)("ObjectField",(0,Ir.p)(",")),(0,Ir.p)("}")],ObjectField:[(0,Ir.t)("String","property"),(0,Ir.p)(":"),"Value"]}});var ZG=G((Ufe,XG)=>{"use strict";XG.exports=function(t){return typeof t=="object"?t===null:typeof t!="function"}});var eQ=G((Gfe,$G)=>{"use strict";$G.exports=function(t){return t!=null&&typeof t=="object"&&Array.isArray(t)===!1}});var nQ=G((Qfe,rQ)=>{"use strict";var kne=eQ();function tQ(e){return kne(e)===!0&&Object.prototype.toString.call(e)==="[object Object]"}rQ.exports=function(t){var r,n;return!(tQ(t)===!1||(r=t.constructor,typeof r!="function")||(n=r.prototype,tQ(n)===!1)||n.hasOwnProperty("isPrototypeOf")===!1)}});var sQ=G((Bfe,uQ)=>{"use strict";var{deleteProperty:One}=Reflect,wne=ZG(),iQ=nQ(),aQ=e=>typeof e=="object"&&e!==null||typeof e=="function",Nne=e=>e==="__proto__"||e==="constructor"||e==="prototype",Kw=e=>{if(!wne(e))throw new TypeError("Object keys must be strings or symbols");if(Nne(e))throw new Error(`Cannot set unsafe key: "${e}"`)},Dne=e=>Array.isArray(e)?e.flat().map(String).join(","):e,xne=(e,t)=>{if(typeof e!="string"||!t)return e;let r=e+";";return t.arrays!==void 0&&(r+=`arrays=${t.arrays};`),t.separator!==void 0&&(r+=`separator=${t.separator};`),t.split!==void 0&&(r+=`split=${t.split};`),t.merge!==void 0&&(r+=`merge=${t.merge};`),t.preservePaths!==void 0&&(r+=`preservePaths=${t.preservePaths};`),r},Cne=(e,t,r)=>{let n=Dne(t?xne(e,t):e);Kw(n);let i=Hs.cache.get(n)||r();return Hs.cache.set(n,i),i},Lne=(e,t={})=>{let r=t.separator||".",n=r==="/"?!1:t.preservePaths;if(typeof e=="string"&&n!==!1&&/\//.test(e))return[e];let i=[],o="",s=l=>{let d;l.trim()!==""&&Number.isInteger(d=Number(l))?i.push(d):i.push(l)};for(let l=0;lt&&typeof t.split=="function"?t.split(e):typeof e=="symbol"?[e]:Array.isArray(e)?e:Cne(e,t,()=>Lne(e,t)),Ine=(e,t,r,n)=>{if(Kw(t),r===void 0)One(e,t);else if(n&&n.merge){let i=n.merge==="function"?n.merge:Object.assign;i&&iQ(e[t])&&iQ(r)?e[t]=i(e[t],r):e[t]=r}else e[t]=r;return e},Hs=(e,t,r,n)=>{if(!t||!aQ(e))return e;let i=oQ(t,n),o=e;for(let s=0;s{Hs.cache=new Map};uQ.exports=Hs});var CQ=G((Pde,xQ)=>{xQ.exports=Zc;function Zc(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Zc.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-r:e+r}return Math.min(e,this.max)|0};Zc.prototype.reset=function(){this.attempts=0};Zc.prototype.setMin=function(e){this.ms=e};Zc.prototype.setMax=function(e){this.max=e};Zc.prototype.setJitter=function(e){this.jitter=e}});var IQ=G((Fde,Jw)=>{"use strict";var Zne=Object.prototype.hasOwnProperty,ai="~";function lh(){}Object.create&&(lh.prototype=Object.create(null),new lh().__proto__||(ai=!1));function $ne(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function LQ(e,t,r,n,i){if(typeof r!="function")throw new TypeError("The listener must be a function");var o=new $ne(r,n||e,i),s=ai?ai+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],o]:e._events[s].push(o):(e._events[s]=o,e._eventsCount++),e}function zy(e,t){--e._eventsCount==0?e._events=new lh:delete e._events[t]}function Kn(){this._events=new lh,this._eventsCount=0}Kn.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Zne.call(r,n)&&t.push(ai?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};Kn.prototype.listeners=function(t){var r=ai?ai+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,o=n.length,s=new Array(o);i{"use strict";Object.defineProperty(Xw,"__esModule",{value:!0});function eie(e){return typeof e=="string"}Xw.default=eie});var RQ=G(Zw=>{"use strict";Object.defineProperty(Zw,"__esModule",{value:!0});function tie(e){return e!==null&&typeof e=="object"}Zw.default=tie});var jQ=G($w=>{"use strict";Object.defineProperty($w,"__esModule",{value:!0});$w.default=rie;function rie(e){var t,r=e.Symbol;return typeof r=="function"?r.observable?t=r.observable:(t=r("observable"),r.observable=t):t="@@observable",t}});var PQ=G((eN,tN)=>{"use strict";Object.defineProperty(eN,"__esModule",{value:!0});var nie=jQ(),iie=aie(nie);function aie(e){return e&&e.__esModule?e:{default:e}}var $c;typeof self!="undefined"?$c=self:typeof window!="undefined"||typeof window!="undefined"?$c=window:typeof tN!="undefined"?$c=tN:$c=Function("return this")();var oie=(0,iie.default)($c);eN.default=oie});var FQ=G(ef=>{"use strict";Object.defineProperty(ef,"__esModule",{value:!0});ef.GRAPHQL_SUBSCRIPTIONS=ef.GRAPHQL_WS=void 0;var uie="graphql-ws";ef.GRAPHQL_WS=uie;var sie="graphql-subscriptions";ef.GRAPHQL_SUBSCRIPTIONS=sie});var MQ=G(tf=>{"use strict";Object.defineProperty(tf,"__esModule",{value:!0});tf.WS_TIMEOUT=tf.MIN_WS_TIMEOUT=void 0;var lie=1e3;tf.MIN_WS_TIMEOUT=lie;var cie=3e4;tf.WS_TIMEOUT=cie});var qQ=G(rN=>{"use strict";Object.defineProperty(rN,"__esModule",{value:!0});var fie=function(){function e(){throw new Error("Static Class")}return e.GQL_CONNECTION_INIT="connection_init",e.GQL_CONNECTION_ACK="connection_ack",e.GQL_CONNECTION_ERROR="connection_error",e.GQL_CONNECTION_KEEP_ALIVE="ka",e.GQL_CONNECTION_TERMINATE="connection_terminate",e.GQL_START="start",e.GQL_DATA="data",e.GQL_ERROR="error",e.GQL_COMPLETE="complete",e.GQL_STOP="stop",e.SUBSCRIPTION_START="subscription_start",e.SUBSCRIPTION_DATA="subscription_data",e.SUBSCRIPTION_SUCCESS="subscription_success",e.SUBSCRIPTION_FAIL="subscription_fail",e.SUBSCRIPTION_END="subscription_end",e.INIT="init",e.INIT_SUCCESS="init_success",e.INIT_FAIL="init_fail",e.KEEP_ALIVE="keepalive",e}();rN.default=fie});var KQ=G(ua=>{"use strict";var rf=ua&&ua.__assign||function(){return rf=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]0){var v=s.shift();v&&v.applyMiddleware.apply(l,[t,d])}else n(t)};d()};o(VQ(r.middlewares),r)})},e.prototype.use=function(t){var r=this;return t.map(function(n){if(typeof n.applyMiddleware=="function")r.middlewares.push(n);else throw new Error("Middleware must implement the applyMiddleware function.")}),this},e.prototype.getConnectionParams=function(t){return function(){return new Promise(function(r,n){if(typeof t=="function")try{return r(t.call(null))}catch(i){return n(i)}r(t)})}},e.prototype.executeOperation=function(t,r){var n=this;this.client===null&&this.connect();var i=this.generateOperationId();return this.operations[i]={options:t,handler:r},this.applyMiddlewares(t).then(function(o){n.checkOperationOptions(o,r),n.operations[i]&&(n.operations[i]={options:o,handler:r},n.sendMessage(i,oi.default.GQL_START,o))}).catch(function(o){n.unsubscribe(i),r(n.formatErrors(o))}),i},e.prototype.getObserver=function(t,r,n){return typeof t=="function"?{next:function(i){return t(i)},error:function(i){return r&&r(i)},complete:function(){return n&&n()}}:t},e.prototype.createMaxConnectTimeGenerator=function(){var t=this.minWsTimeout,r=this.wsTimeout;return new GQ({min:t,max:r,factor:1.2})},e.prototype.clearCheckConnectionInterval=function(){this.checkConnectionIntervalId&&(clearInterval(this.checkConnectionIntervalId),this.checkConnectionIntervalId=null)},e.prototype.clearMaxConnectTimeout=function(){this.maxConnectTimeoutId&&(clearTimeout(this.maxConnectTimeoutId),this.maxConnectTimeoutId=null)},e.prototype.clearTryReconnectTimeout=function(){this.tryReconnectTimeoutId&&(clearTimeout(this.tryReconnectTimeoutId),this.tryReconnectTimeoutId=null)},e.prototype.clearInactivityTimeout=function(){this.inactivityTimeoutId&&(clearTimeout(this.inactivityTimeoutId),this.inactivityTimeoutId=null)},e.prototype.setInactivityTimeout=function(){var t=this;this.inactivityTimeout>0&&Object.keys(this.operations).length===0&&(this.inactivityTimeoutId=setTimeout(function(){Object.keys(t.operations).length===0&&t.close()},this.inactivityTimeout))},e.prototype.checkOperationOptions=function(t,r){var n=t.query,i=t.variables,o=t.operationName;if(!n)throw new Error("Must provide a query.");if(!r)throw new Error("Must provide an handler.");if(!QQ.default(n)&&!yie.getOperationAST(n,o)||o&&!QQ.default(o)||i&&!gie.default(i))throw new Error("Incorrect option types. query must be a string or a document,`operationName` must be a string, and `variables` must be an object.")},e.prototype.buildMessage=function(t,r,n){var i=n&&n.query?rf(rf({},n),{query:typeof n.query=="string"?n.query:mie.print(n.query)}):n;return{id:t,type:r,payload:i}},e.prototype.formatErrors=function(t){return Array.isArray(t)?t:t&&t.errors?this.formatErrors(t.errors):t&&t.message?[t]:[{name:"FormatedError",message:"Unknown error",originalError:t}]},e.prototype.sendMessage=function(t,r,n){this.sendMessageRaw(this.buildMessage(t,r,n))},e.prototype.sendMessageRaw=function(t){switch(this.status){case this.wsImpl.OPEN:var r=JSON.stringify(t);try{JSON.parse(r)}catch(n){this.eventEmitter.emit("error",new Error("Message must be JSON-serializable. Got: "+t))}this.client.send(r);break;case this.wsImpl.CONNECTING:this.unsentMessagesQueue.push(t);break;default:this.reconnecting||this.eventEmitter.emit("error",new Error("A message was not sent because socket is not connected, is closing or is already closed. Message was: "+JSON.stringify(t)))}},e.prototype.generateOperationId=function(){return String(++this.nextOperationId)},e.prototype.tryReconnect=function(){var t=this;if(!(!this.reconnect||this.backoff.attempts>=this.reconnectionAttempts)){this.reconnecting||(Object.keys(this.operations).forEach(function(n){t.unsentMessagesQueue.push(t.buildMessage(n,oi.default.GQL_START,t.operations[n].options))}),this.reconnecting=!0),this.clearTryReconnectTimeout();var r=this.backoff.duration();this.tryReconnectTimeoutId=setTimeout(function(){t.connect()},r)}},e.prototype.flushUnsentMessagesQueue=function(){var t=this;this.unsentMessagesQueue.forEach(function(r){t.sendMessageRaw(r)}),this.unsentMessagesQueue=[]},e.prototype.checkConnection=function(){if(this.wasKeepAliveReceived){this.wasKeepAliveReceived=!1;return}this.reconnecting||this.close(!1,!0)},e.prototype.checkMaxConnectTimeout=function(){var t=this;this.clearMaxConnectTimeout(),this.maxConnectTimeoutId=setTimeout(function(){t.status!==t.wsImpl.OPEN&&(t.reconnecting=!0,t.close(!1,!0))},this.maxConnectTimeGenerator.duration())},e.prototype.connect=function(){var t,r=this;this.client=new((t=this.wsImpl).bind.apply(t,VQ([void 0,this.url,this.wsProtocols],this.wsOptionArguments))),this.checkMaxConnectTimeout(),this.client.onopen=function(){return die(r,void 0,void 0,function(){var n,i;return pie(this,function(o){switch(o.label){case 0:if(this.status!==this.wsImpl.OPEN)return[3,4];this.clearMaxConnectTimeout(),this.closedByUser=!1,this.eventEmitter.emit(this.reconnecting?"reconnecting":"connecting"),o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this.connectionParams()];case 2:return n=o.sent(),this.sendMessage(void 0,oi.default.GQL_CONNECTION_INIT,n),this.flushUnsentMessagesQueue(),[3,4];case 3:return i=o.sent(),this.sendMessage(void 0,oi.default.GQL_CONNECTION_ERROR,i),this.flushUnsentMessagesQueue(),[3,4];case 4:return[2]}})})},this.client.onclose=function(){r.closedByUser||r.close(!1,!1)},this.client.onerror=function(n){r.eventEmitter.emit("error",n)},this.client.onmessage=function(n){var i=n.data;r.processReceivedData(i)}},e.prototype.processReceivedData=function(t){var r,n;try{r=JSON.parse(t),n=r.id}catch(l){throw new Error("Message must be JSON-parseable. Got: "+t)}if([oi.default.GQL_DATA,oi.default.GQL_COMPLETE,oi.default.GQL_ERROR].indexOf(r.type)!==-1&&!this.operations[n]){this.unsubscribe(n);return}switch(r.type){case oi.default.GQL_CONNECTION_ERROR:this.connectionCallback&&this.connectionCallback(r.payload);break;case oi.default.GQL_CONNECTION_ACK:this.eventEmitter.emit(this.reconnecting?"reconnected":"connected",r.payload),this.reconnecting=!1,this.backoff.reset(),this.maxConnectTimeGenerator.reset(),this.connectionCallback&&this.connectionCallback();break;case oi.default.GQL_COMPLETE:var i=this.operations[n].handler;delete this.operations[n],i.call(this,null,null);break;case oi.default.GQL_ERROR:this.operations[n].handler(this.formatErrors(r.payload),null),delete this.operations[n];break;case oi.default.GQL_DATA:var o=r.payload.errors?rf(rf({},r.payload),{errors:this.formatErrors(r.payload.errors)}):r.payload;this.operations[n].handler(null,o);break;case oi.default.GQL_CONNECTION_KEEP_ALIVE:var s=typeof this.wasKeepAliveReceived=="undefined";this.wasKeepAliveReceived=!0,s&&this.checkConnection(),this.checkConnectionIntervalId&&(clearInterval(this.checkConnectionIntervalId),this.checkConnection()),this.checkConnectionIntervalId=setInterval(this.checkConnection.bind(this),this.wsTimeout);break;default:throw new Error("Invalid message type!")}},e.prototype.unsubscribe=function(t){this.operations[t]&&(delete this.operations[t],this.setInactivityTimeout(),this.sendMessage(t,oi.default.GQL_STOP,void 0))},e}();ua.SubscriptionClient=_ie});var Eie=Ee(zt()),Sie=Ee(a_());var ut=Ee(zt()),ii=Ee(ht()),hQ=Ee(aP());var it=Ee(ht());"use strict";var oP;(function(e){function t(r){return typeof r=="string"}e.is=t})(oP||(oP={}));var Vk;(function(e){function t(r){return typeof r=="string"}e.is=t})(Vk||(Vk={}));var uP;(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}e.is=t})(uP||(uP={}));var Nm;(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}e.is=t})(Nm||(Nm={}));var ka;(function(e){function t(n,i){return n===Number.MAX_VALUE&&(n=Nm.MAX_VALUE),i===Number.MAX_VALUE&&(i=Nm.MAX_VALUE),{line:n,character:i}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.uinteger(i.line)&&ne.uinteger(i.character)}e.is=r})(ka||(ka={}));var Lr;(function(e){function t(n,i,o,s){if(ne.uinteger(n)&&ne.uinteger(i)&&ne.uinteger(o)&&ne.uinteger(s))return{start:ka.create(n,i),end:ka.create(o,s)};if(ka.is(n)&&ka.is(i))return{start:n,end:i};throw new Error("Range#create called with invalid arguments[".concat(n,", ").concat(i,", ").concat(o,", ").concat(s,"]"))}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ka.is(i.start)&&ka.is(i.end)}e.is=r})(Lr||(Lr={}));var Dm;(function(e){function t(n,i){return{uri:n,range:i}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&Lr.is(i.range)&&(ne.string(i.uri)||ne.undefined(i.uri))}e.is=r})(Dm||(Dm={}));var sP;(function(e){function t(n,i,o,s){return{targetUri:n,targetRange:i,targetSelectionRange:o,originSelectionRange:s}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&Lr.is(i.targetRange)&&ne.string(i.targetUri)&&Lr.is(i.targetSelectionRange)&&(Lr.is(i.originSelectionRange)||ne.undefined(i.originSelectionRange))}e.is=r})(sP||(sP={}));var Uk;(function(e){function t(n,i,o,s){return{red:n,green:i,blue:o,alpha:s}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.numberRange(i.red,0,1)&&ne.numberRange(i.green,0,1)&&ne.numberRange(i.blue,0,1)&&ne.numberRange(i.alpha,0,1)}e.is=r})(Uk||(Uk={}));var lP;(function(e){function t(n,i){return{range:n,color:i}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&Lr.is(i.range)&&Uk.is(i.color)}e.is=r})(lP||(lP={}));var cP;(function(e){function t(n,i,o){return{label:n,textEdit:i,additionalTextEdits:o}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.string(i.label)&&(ne.undefined(i.textEdit)||Co.is(i))&&(ne.undefined(i.additionalTextEdits)||ne.typedArray(i.additionalTextEdits,Co.is))}e.is=r})(cP||(cP={}));var fP;(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(fP||(fP={}));var dP;(function(e){function t(n,i,o,s,l,d){var h={startLine:n,endLine:i};return ne.defined(o)&&(h.startCharacter=o),ne.defined(s)&&(h.endCharacter=s),ne.defined(l)&&(h.kind=l),ne.defined(d)&&(h.collapsedText=d),h}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.uinteger(i.startLine)&&ne.uinteger(i.startLine)&&(ne.undefined(i.startCharacter)||ne.uinteger(i.startCharacter))&&(ne.undefined(i.endCharacter)||ne.uinteger(i.endCharacter))&&(ne.undefined(i.kind)||ne.string(i.kind))}e.is=r})(dP||(dP={}));var Gk;(function(e){function t(n,i){return{location:n,message:i}}e.create=t;function r(n){var i=n;return ne.defined(i)&&Dm.is(i.location)&&ne.string(i.message)}e.is=r})(Gk||(Gk={}));var pP;(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(pP||(pP={}));var hP;(function(e){e.Unnecessary=1,e.Deprecated=2})(hP||(hP={}));var vP;(function(e){function t(r){var n=r;return ne.objectLiteral(n)&&ne.string(n.href)}e.is=t})(vP||(vP={}));var xm;(function(e){function t(n,i,o,s,l,d){var h={range:n,message:i};return ne.defined(o)&&(h.severity=o),ne.defined(s)&&(h.code=s),ne.defined(l)&&(h.source=l),ne.defined(d)&&(h.relatedInformation=d),h}e.create=t;function r(n){var i,o=n;return ne.defined(o)&&Lr.is(o.range)&&ne.string(o.message)&&(ne.number(o.severity)||ne.undefined(o.severity))&&(ne.integer(o.code)||ne.string(o.code)||ne.undefined(o.code))&&(ne.undefined(o.codeDescription)||ne.string((i=o.codeDescription)===null||i===void 0?void 0:i.href))&&(ne.string(o.source)||ne.undefined(o.source))&&(ne.undefined(o.relatedInformation)||ne.typedArray(o.relatedInformation,Gk.is))}e.is=r})(xm||(xm={}));var Dc;(function(e){function t(n,i){for(var o=[],s=2;s0&&(l.arguments=o),l}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.title)&&ne.string(i.command)}e.is=r})(Dc||(Dc={}));var Co;(function(e){function t(o,s){return{range:o,newText:s}}e.replace=t;function r(o,s){return{range:{start:o,end:o},newText:s}}e.insert=r;function n(o){return{range:o,newText:""}}e.del=n;function i(o){var s=o;return ne.objectLiteral(s)&&ne.string(s.newText)&&Lr.is(s.range)}e.is=i})(Co||(Co={}));var xc;(function(e){function t(n,i,o){var s={label:n};return i!==void 0&&(s.needsConfirmation=i),o!==void 0&&(s.description=o),s}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.string(i.label)&&(ne.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(ne.string(i.description)||i.description===void 0)}e.is=r})(xc||(xc={}));var Vn;(function(e){function t(r){var n=r;return ne.string(n)}e.is=t})(Vn||(Vn={}));var Cu;(function(e){function t(o,s,l){return{range:o,newText:s,annotationId:l}}e.replace=t;function r(o,s,l){return{range:{start:o,end:o},newText:s,annotationId:l}}e.insert=r;function n(o,s){return{range:o,newText:"",annotationId:s}}e.del=n;function i(o){var s=o;return Co.is(s)&&(xc.is(s.annotationId)||Vn.is(s.annotationId))}e.is=i})(Cu||(Cu={}));var Cm;(function(e){function t(n,i){return{textDocument:n,edits:i}}e.create=t;function r(n){var i=n;return ne.defined(i)&&Im.is(i.textDocument)&&Array.isArray(i.edits)}e.is=r})(Cm||(Cm={}));var Dp;(function(e){function t(n,i,o){var s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),o!==void 0&&(s.annotationId=o),s}e.create=t;function r(n){var i=n;return i&&i.kind==="create"&&ne.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||ne.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||ne.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Vn.is(i.annotationId))}e.is=r})(Dp||(Dp={}));var xp;(function(e){function t(n,i,o,s){var l={kind:"rename",oldUri:n,newUri:i};return o!==void 0&&(o.overwrite!==void 0||o.ignoreIfExists!==void 0)&&(l.options=o),s!==void 0&&(l.annotationId=s),l}e.create=t;function r(n){var i=n;return i&&i.kind==="rename"&&ne.string(i.oldUri)&&ne.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||ne.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||ne.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Vn.is(i.annotationId))}e.is=r})(xp||(xp={}));var Cp;(function(e){function t(n,i,o){var s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),o!==void 0&&(s.annotationId=o),s}e.create=t;function r(n){var i=n;return i&&i.kind==="delete"&&ne.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||ne.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||ne.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||Vn.is(i.annotationId))}e.is=r})(Cp||(Cp={}));var Qk;(function(e){function t(r){var n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(function(i){return ne.string(i.kind)?Dp.is(i)||xp.is(i)||Cp.is(i):Cm.is(i)}))}e.is=t})(Qk||(Qk={}));var Lm=function(){function e(t,r){this.edits=t,this.changeAnnotations=r}return e.prototype.insert=function(t,r,n){var i,o;if(n===void 0?i=Co.insert(t,r):Vn.is(n)?(o=n,i=Cu.insert(t,r,n)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(n),i=Cu.insert(t,r,o)),this.edits.push(i),o!==void 0)return o},e.prototype.replace=function(t,r,n){var i,o;if(n===void 0?i=Co.replace(t,r):Vn.is(n)?(o=n,i=Cu.replace(t,r,n)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(n),i=Cu.replace(t,r,o)),this.edits.push(i),o!==void 0)return o},e.prototype.delete=function(t,r){var n,i;if(r===void 0?n=Co.del(t):Vn.is(r)?(i=r,n=Cu.del(t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Cu.del(t,i)),this.edits.push(n),i!==void 0)return i},e.prototype.add=function(t){this.edits.push(t)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(t){if(t===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),gP=function(){function e(t){this._annotations=t===void 0?Object.create(null):t,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(t,r){var n;if(Vn.is(t)?n=t:(n=this.nextId(),r=t),this._annotations[n]!==void 0)throw new Error("Id ".concat(n," is already in use."));if(r===void 0)throw new Error("No annotation provided for id ".concat(n));return this._annotations[n]=r,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}(),eue=function(){function e(t){var r=this;this._textEditChanges=Object.create(null),t!==void 0?(this._workspaceEdit=t,t.documentChanges?(this._changeAnnotations=new gP(t.changeAnnotations),t.changeAnnotations=this._changeAnnotations.all(),t.documentChanges.forEach(function(n){if(Cm.is(n)){var i=new Lm(n.edits,r._changeAnnotations);r._textEditChanges[n.textDocument.uri]=i}})):t.changes&&Object.keys(t.changes).forEach(function(n){var i=new Lm(t.changes[n]);r._textEditChanges[n]=i})):this._workspaceEdit={}}return Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(t){if(Im.is(t)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var r={uri:t.uri,version:t.version},n=this._textEditChanges[r.uri];if(!n){var i=[],o={textDocument:r,edits:i};this._workspaceEdit.documentChanges.push(o),n=new Lm(i,this._changeAnnotations),this._textEditChanges[r.uri]=n}return n}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var n=this._textEditChanges[t];if(!n){var i=[];this._workspaceEdit.changes[t]=i,n=new Lm(i),this._textEditChanges[t]=n}return n}},e.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new gP,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(t,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i;xc.is(r)||Vn.is(r)?i=r:n=r;var o,s;if(i===void 0?o=Dp.create(t,n):(s=Vn.is(i)?i:this._changeAnnotations.manage(i),o=Dp.create(t,n,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},e.prototype.renameFile=function(t,r,n,i){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var o;xc.is(n)||Vn.is(n)?o=n:i=n;var s,l;if(o===void 0?s=xp.create(t,r,i):(l=Vn.is(o)?o:this._changeAnnotations.manage(o),s=xp.create(t,r,i,l)),this._workspaceEdit.documentChanges.push(s),l!==void 0)return l},e.prototype.deleteFile=function(t,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i;xc.is(r)||Vn.is(r)?i=r:n=r;var o,s;if(i===void 0?o=Cp.create(t,n):(s=Vn.is(i)?i:this._changeAnnotations.manage(i),o=Cp.create(t,n,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},e}();var mP;(function(e){function t(n){return{uri:n}}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.uri)}e.is=r})(mP||(mP={}));var yP;(function(e){function t(n,i){return{uri:n,version:i}}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.uri)&&ne.integer(i.version)}e.is=r})(yP||(yP={}));var Im;(function(e){function t(n,i){return{uri:n,version:i}}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.uri)&&(i.version===null||ne.integer(i.version))}e.is=r})(Im||(Im={}));var bP;(function(e){function t(n,i,o,s){return{uri:n,languageId:i,version:o,text:s}}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.uri)&&ne.string(i.languageId)&&ne.integer(i.version)&&ne.string(i.text)}e.is=r})(bP||(bP={}));var Bk;(function(e){e.PlainText="plaintext",e.Markdown="markdown";function t(r){var n=r;return n===e.PlainText||n===e.Markdown}e.is=t})(Bk||(Bk={}));var Lp;(function(e){function t(r){var n=r;return ne.objectLiteral(r)&&Bk.is(n.kind)&&ne.string(n.value)}e.is=t})(Lp||(Lp={}));var TP;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(TP||(TP={}));var Am;(function(e){e.PlainText=1,e.Snippet=2})(Am||(Am={}));var _P;(function(e){e.Deprecated=1})(_P||(_P={}));var EP;(function(e){function t(n,i,o){return{newText:n,insert:i,replace:o}}e.create=t;function r(n){var i=n;return i&&ne.string(i.newText)&&Lr.is(i.insert)&&Lr.is(i.replace)}e.is=r})(EP||(EP={}));var SP;(function(e){e.asIs=1,e.adjustIndentation=2})(SP||(SP={}));var kP;(function(e){function t(r){var n=r;return n&&(ne.string(n.detail)||n.detail===void 0)&&(ne.string(n.description)||n.description===void 0)}e.is=t})(kP||(kP={}));var OP;(function(e){function t(r){return{label:r}}e.create=t})(OP||(OP={}));var wP;(function(e){function t(r,n){return{items:r||[],isIncomplete:!!n}}e.create=t})(wP||(wP={}));var Rm;(function(e){function t(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}e.fromPlainText=t;function r(n){var i=n;return ne.string(i)||ne.objectLiteral(i)&&ne.string(i.language)&&ne.string(i.value)}e.is=r})(Rm||(Rm={}));var NP;(function(e){function t(r){var n=r;return!!n&&ne.objectLiteral(n)&&(Lp.is(n.contents)||Rm.is(n.contents)||ne.typedArray(n.contents,Rm.is))&&(r.range===void 0||Lr.is(r.range))}e.is=t})(NP||(NP={}));var DP;(function(e){function t(r,n){return n?{label:r,documentation:n}:{label:r}}e.create=t})(DP||(DP={}));var xP;(function(e){function t(r,n){for(var i=[],o=2;o=0;v--){var y=d[v],b=o.offsetAt(y.range.start),D=o.offsetAt(y.range.end);if(D<=h)l=l.substring(0,b)+y.newText+l.substring(D,l.length);else throw new Error("Overlapping edit");h=b}return l}e.applyEdits=n;function i(o,s){if(o.length<=1)return o;var l=o.length/2|0,d=o.slice(0,l),h=o.slice(l);i(d,s),i(h,s);for(var v=0,y=0,b=0;v0&&t.push(r.length),this._lineOffsets=t}return this._lineOffsets},e.prototype.positionAt=function(t){t=Math.max(Math.min(t,this._content.length),0);var r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return ka.create(0,t);for(;nt?i=o:n=o+1}var s=n-1;return ka.create(s,t-r[s])},e.prototype.offsetAt=function(t){var r=this.getLineOffsets();if(t.line>=r.length)return this._content.length;if(t.line<0)return 0;var n=r[t.line],i=t.line+1{let i=!1;return r&&(i=r(n)),i&&t.every(o=>o.match&&!o.match(n))},e}function Cc(e,t){return{style:t,match:r=>r.kind===e}}function nt(e,t){return{style:t||"punctuation",match:r=>r.kind==="Punctuation"&&r.value===e}}var Un=Ee(ht());var Wk={Document:[gt("Definition")],Definition(e){switch(e.value){case"{":return"ShortQuery";case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription";case"fragment":return Un.Kind.FRAGMENT_DEFINITION;case"schema":return"SchemaDef";case"scalar":return"ScalarDef";case"type":return"ObjectTypeDef";case"interface":return"InterfaceDef";case"union":return"UnionDef";case"enum":return"EnumDef";case"input":return"InputDef";case"extend":return"ExtendDef";case"directive":return"DirectiveDef"}},ShortQuery:["SelectionSet"],Query:[Sn("query"),hr(er("def")),hr("VariableDefinitions"),gt("Directive"),"SelectionSet"],Mutation:[Sn("mutation"),hr(er("def")),hr("VariableDefinitions"),gt("Directive"),"SelectionSet"],Subscription:[Sn("subscription"),hr(er("def")),hr("VariableDefinitions"),gt("Directive"),"SelectionSet"],VariableDefinitions:[nt("("),gt("VariableDefinition"),nt(")")],VariableDefinition:["Variable",nt(":"),"Type",hr("DefaultValue")],Variable:[nt("$","variable"),er("variable")],DefaultValue:[nt("="),"Value"],SelectionSet:[nt("{"),gt("Selection"),nt("}")],Selection(e,t){return e.value==="..."?t.match(/[\s\u00a0,]*(on\b|@|{)/,!1)?"InlineFragment":"FragmentSpread":t.match(/[\s\u00a0,]*:/,!1)?"AliasedField":"Field"},AliasedField:[er("property"),nt(":"),er("qualifier"),hr("Arguments"),gt("Directive"),hr("SelectionSet")],Field:[er("property"),hr("Arguments"),gt("Directive"),hr("SelectionSet")],Arguments:[nt("("),gt("Argument"),nt(")")],Argument:[er("attribute"),nt(":"),"Value"],FragmentSpread:[nt("..."),er("def"),gt("Directive")],InlineFragment:[nt("..."),hr("TypeCondition"),gt("Directive"),"SelectionSet"],FragmentDefinition:[Sn("fragment"),hr(zk(er("def"),[Sn("on")])),"TypeCondition",gt("Directive"),"SelectionSet"],TypeCondition:[Sn("on"),"NamedType"],Value(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue";case"$":return"Variable";case"&":return"NamedType"}return null;case"Name":switch(e.value){case"true":case"false":return"BooleanValue"}return e.value==="null"?"NullValue":"EnumValue"}},NumberValue:[Cc("Number","number")],StringValue:[{style:"string",match:e=>e.kind==="String",update(e,t){t.value.startsWith('"""')&&(e.inBlockstring=!t.value.slice(3).endsWith('"""'))}}],BooleanValue:[Cc("Name","builtin")],NullValue:[Cc("Name","keyword")],EnumValue:[er("string-2")],ListValue:[nt("["),gt("Value"),nt("]")],ObjectValue:[nt("{"),gt("ObjectField"),nt("}")],ObjectField:[er("attribute"),nt(":"),"Value"],Type(e){return e.value==="["?"ListType":"NonNullType"},ListType:[nt("["),"Type",nt("]"),hr(nt("!"))],NonNullType:["NamedType",hr(nt("!"))],NamedType:[lX("atom")],Directive:[nt("@","meta"),er("meta"),hr("Arguments")],DirectiveDef:[Sn("directive"),nt("@","meta"),er("meta"),hr("ArgumentsDef"),Sn("on"),gt("DirectiveLocation",nt("|"))],InterfaceDef:[Sn("interface"),er("atom"),hr("Implements"),gt("Directive"),nt("{"),gt("FieldDef"),nt("}")],Implements:[Sn("implements"),gt("NamedType",nt("&"))],DirectiveLocation:[er("string-2")],SchemaDef:[Sn("schema"),gt("Directive"),nt("{"),gt("OperationTypeDef"),nt("}")],OperationTypeDef:[er("keyword"),nt(":"),er("atom")],ScalarDef:[Sn("scalar"),er("atom"),gt("Directive")],ObjectTypeDef:[Sn("type"),er("atom"),hr("Implements"),gt("Directive"),nt("{"),gt("FieldDef"),nt("}")],FieldDef:[er("property"),hr("ArgumentsDef"),nt(":"),"Type",gt("Directive")],ArgumentsDef:[nt("("),gt("InputValueDef"),nt(")")],InputValueDef:[er("attribute"),nt(":"),"Type",hr("DefaultValue"),gt("Directive")],UnionDef:[Sn("union"),er("atom"),gt("Directive"),nt("="),gt("UnionMember",nt("|"))],UnionMember:["NamedType"],EnumDef:[Sn("enum"),er("atom"),gt("Directive"),nt("{"),gt("EnumValueDef"),nt("}")],EnumValueDef:[er("string-2"),gt("Directive")],InputDef:[Sn("input"),er("atom"),gt("Directive"),nt("{"),gt("InputValueDef"),nt("}")],ExtendDef:[Sn("extend"),"ExtensionDefinition"],ExtensionDefinition(e){switch(e.value){case"schema":return Un.Kind.SCHEMA_EXTENSION;case"scalar":return Un.Kind.SCALAR_TYPE_EXTENSION;case"type":return Un.Kind.OBJECT_TYPE_EXTENSION;case"interface":return Un.Kind.INTERFACE_TYPE_EXTENSION;case"union":return Un.Kind.UNION_TYPE_EXTENSION;case"enum":return Un.Kind.ENUM_TYPE_EXTENSION;case"input":return Un.Kind.INPUT_OBJECT_TYPE_EXTENSION}},[Un.Kind.SCHEMA_EXTENSION]:["SchemaDef"],[Un.Kind.SCALAR_TYPE_EXTENSION]:["ScalarDef"],[Un.Kind.OBJECT_TYPE_EXTENSION]:["ObjectTypeDef"],[Un.Kind.INTERFACE_TYPE_EXTENSION]:["InterfaceDef"],[Un.Kind.UNION_TYPE_EXTENSION]:["UnionDef"],[Un.Kind.ENUM_TYPE_EXTENSION]:["EnumDef"],[Un.Kind.INPUT_OBJECT_TYPE_EXTENSION]:["InputDef"]};function Sn(e){return{style:"keyword",match:t=>t.kind==="Name"&&t.value===e}}function er(e){return{style:e,match:t=>t.kind==="Name",update(t,r){t.name=r.value}}}function lX(e){return{style:e,match:t=>t.kind==="Name",update(t,r){var n;((n=t.prevState)===null||n===void 0?void 0:n.prevState)&&(t.name=r.value,t.prevState.prevState.type=r.value)}}}var rF=Ee(ht()),cX={ALIASED_FIELD:"AliasedField",ARGUMENTS:"Arguments",SHORT_QUERY:"ShortQuery",QUERY:"Query",MUTATION:"Mutation",SUBSCRIPTION:"Subscription",TYPE_CONDITION:"TypeCondition",INVALID:"Invalid",COMMENT:"Comment",SCHEMA_DEF:"SchemaDef",SCALAR_DEF:"ScalarDef",OBJECT_TYPE_DEF:"ObjectTypeDef",OBJECT_VALUE:"ObjectValue",LIST_VALUE:"ListValue",INTERFACE_DEF:"InterfaceDef",UNION_DEF:"UnionDef",ENUM_DEF:"EnumDef",ENUM_VALUE:"EnumValue",FIELD_DEF:"FieldDef",INPUT_DEF:"InputDef",INPUT_VALUE_DEF:"InputValueDef",ARGUMENTS_DEF:"ArgumentsDef",EXTEND_DEF:"ExtendDef",EXTENSION_DEFINITION:"ExtensionDefinition",DIRECTIVE_DEF:"DirectiveDef",IMPLEMENTS:"Implements",VARIABLE_DEFINITIONS:"VariableDefinitions",TYPE:"Type"},nF=Object.assign(Object.assign({},rF.Kind),cX);var Sue=[it.Kind.SCHEMA_DEFINITION,it.Kind.OPERATION_TYPE_DEFINITION,it.Kind.SCALAR_TYPE_DEFINITION,it.Kind.OBJECT_TYPE_DEFINITION,it.Kind.INTERFACE_TYPE_DEFINITION,it.Kind.UNION_TYPE_DEFINITION,it.Kind.ENUM_TYPE_DEFINITION,it.Kind.INPUT_OBJECT_TYPE_DEFINITION,it.Kind.DIRECTIVE_DEFINITION,it.Kind.SCHEMA_EXTENSION,it.Kind.SCALAR_TYPE_EXTENSION,it.Kind.OBJECT_TYPE_EXTENSION,it.Kind.INTERFACE_TYPE_EXTENSION,it.Kind.UNION_TYPE_EXTENSION,it.Kind.ENUM_TYPE_EXTENSION,it.Kind.INPUT_OBJECT_TYPE_EXTENSION];var iF;(function(e){e.TYPE_SYSTEM="TYPE_SYSTEM",e.EXECUTABLE="EXECUTABLE"})(iF||(iF={}));var Mm=Ee(ht()),Zk=Ee(Xk());var qm=(e,t)=>{if(!t)return[];let r=new Map,n=new Set;(0,Mm.visit)(e,{FragmentDefinition(s){r.set(s.name.value,!0)},FragmentSpread(s){n.has(s.name.value)||n.add(s.name.value)}});let i=new Set;for(let s of n)!r.has(s)&&t.has(s)&&i.add((0,Zk.default)(t.get(s)));let o=[];for(let s of i)(0,Mm.visit)(s,{FragmentSpread(l){!n.has(l.name.value)&&t.get(l.name.value)&&(i.add((0,Zk.default)(t.get(l.name.value))),n.add(l.name.value))}}),r.has(s.name.value)||o.push(s);return o};var Lc=Ee(ht());function Vm(e,t){let r=Object.create(null);for(let n of t.definitions)if(n.kind==="OperationDefinition"){let{variableDefinitions:i}=n;if(i)for(let{variable:o,type:s}of i){let l=(0,Lc.typeFromAST)(e,s);l?r[o.name.value]=l:s.kind===Lc.Kind.NAMED_TYPE&&s.name.value==="Float"&&(r[o.name.value]=Lc.GraphQLFloat)}}return r}var Um=Ee(ht());function $k(e,t){let r=t?Vm(t,e):void 0,n=[];return(0,Um.visit)(e,{OperationDefinition(i){n.push(i)}}),{variableToType:r,operations:n}}function js(e,t){if(!!t)try{let r=(0,Um.parse)(t);return Object.assign(Object.assign({},$k(r,e)),{documentAST:r})}catch(r){return}}var Ip={Error:"Error",Warning:"Warning",Information:"Information",Hint:"Hint"},bX={[Ip.Error]:1,[Ip.Warning]:2,[Ip.Information]:3,[Ip.Hint]:4};var Lo=Ee(zt()),kX=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),lF=function(e){kX(t,e);function t(r){var n=e.call(this,r)||this;return n._onClick=function(){n.props.isRunning?n.props.onStop():n.props.onRun()},n._onOptionSelected=function(i){n.setState({optionsOpen:!1}),n.props.onRun(i.name&&i.name.value)},n._onOptionsOpen=function(i){var o=!0,s=i.currentTarget;n.setState({highlight:null,optionsOpen:!0});var l=function(d){var h;if(o&&d.target===s)o=!1;else{document.removeEventListener("mouseup",l),l=null;var v=d.currentTarget&&((h=s.parentNode)===null||h===void 0?void 0:h.compareDocumentPosition(d.currentTarget))&&Node.DOCUMENT_POSITION_CONTAINED_BY;v||n.setState({optionsOpen:!1})}};document.addEventListener("mouseup",l)},n.state={optionsOpen:!1,highlight:null},n}return t.prototype.render=function(){var r=this,n=this.props.operations||[],i=this.state.optionsOpen,o=n&&n.length>1,s=null;if(o&&i){var l=this.state.highlight;s=Lo.default.createElement("ul",{className:"execute-options"},n.map(function(y,b){var D=y.name?y.name.value:"";return Lo.default.createElement("li",{key:D+"-"+b,className:y===l?"selected":void 0,onMouseOver:function(){return r.setState({highlight:y})},onMouseOut:function(){return r.setState({highlight:null})},onMouseUp:function(){return r._onOptionSelected(y)}},D)}))}var d;(this.props.isRunning||!o)&&(d=this._onClick);var h=function(){};!this.props.isRunning&&o&&!i&&(h=this._onOptionsOpen);var v=this.props.isRunning?Lo.default.createElement("path",{d:"M 10 10 L 23 10 L 23 23 L 10 23 z"}):Lo.default.createElement("path",{d:"M 11 9 L 24 16 L 11 23 z"});return Lo.default.createElement("div",{className:"execute-button-wrap"},Lo.default.createElement("button",{type:"button",className:"execute-button",onMouseDown:h,onClick:d,title:"Execute Query (Ctrl-Enter)"},Lo.default.createElement("svg",{width:"34",height:"34"},v)),s)},t}(Lo.default.Component);var Ap=Ee(zt()),OX=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();function cF(e){if(e.type==="string"){var t=e.string.slice(1).slice(0,-1).trim();try{var r=window.location;return new URL(t,r.protocol+"//"+r.host)}catch(n){return}}}function wX(e){return/(bmp|gif|jpeg|jpg|png|svg)$/.test(e.pathname)}var fF=function(e){OX(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r._node=null,r.state={width:null,height:null,src:null,mime:null},r}return t.shouldRender=function(r){var n=cF(r);return n?wX(n):!1},t.prototype.componentDidMount=function(){this._updateMetadata()},t.prototype.componentDidUpdate=function(){this._updateMetadata()},t.prototype.render=function(){var r=this,n,i=null;if(this.state.width!==null&&this.state.height!==null){var o=this.state.width+"x"+this.state.height;this.state.mime!==null&&(o+=" "+this.state.mime),i=Ap.default.createElement("div",null,o)}return Ap.default.createElement("div",null,Ap.default.createElement("img",{onLoad:function(){return r._updateMetadata()},ref:function(s){r._node=s},src:(n=cF(this.props.token))===null||n===void 0?void 0:n.href}),i)},t.prototype._updateMetadata=function(){var r=this;if(!!this._node){var n=this._node.naturalWidth,i=this._node.naturalHeight,o=this._node.src;o!==this.state.src&&(this.setState({src:o}),fetch(o,{method:"HEAD"}).then(function(s){r.setState({mime:s.headers.get("Content-Type")})})),(n!==this.state.width||i!==this.state.height)&&this.setState({height:i,width:n})}},t}(Ap.default.Component);var tO=Ee(zt()),NX=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Lu=function(e){NX(t,e);function t(r){var n=e.call(this,r)||this;return n.handleClick=function(){try{n.props.onClick(),n.setState({error:null})}catch(i){n.setState({error:i})}},n.state={error:null},n}return t.prototype.render=function(){var r=this.state.error;return tO.default.createElement("button",{className:"toolbar-button"+(r?" error":""),onClick:this.handleClick,title:r?r.message:this.props.title,"aria-invalid":r?"true":"false"},this.props.label)},t}(tO.default.Component);var dF=Ee(zt());function rO(e){var t=e.children;return dF.default.createElement("div",{className:"toolbar-button-group"},t)}var Ps=Ee(zt()),DX=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),nO=function(e){DX(t,e);function t(r){var n=e.call(this,r)||this;return n._node=null,n._listener=null,n.handleOpen=function(i){aO(i),n.setState({visible:!0}),n._subscribe()},n.state={visible:!1},n}return t.prototype.componentWillUnmount=function(){this._release()},t.prototype.render=function(){var r=this,n=this.state.visible;return Ps.default.createElement("a",{className:"toolbar-menu toolbar-button",onClick:this.handleOpen.bind(this),onMouseDown:aO,ref:function(i){i&&(r._node=i)},title:this.props.title},this.props.label,Ps.default.createElement("svg",{width:"14",height:"8"},Ps.default.createElement("path",{fill:"#666",d:"M 5 1.5 L 14 1.5 L 9.5 7 z"})),Ps.default.createElement("ul",{className:"toolbar-menu-items"+(n?" open":"")},this.props.children))},t.prototype._subscribe=function(){this._listener||(this._listener=this.handleClick.bind(this),document.addEventListener("click",this._listener))},t.prototype._release=function(){this._listener&&(document.removeEventListener("click",this._listener),this._listener=null)},t.prototype.handleClick=function(r){this._node!==r.target&&(r.preventDefault(),this.setState({visible:!1}),this._release())},t}(Ps.default.Component);var iO=function(e){var t=e.onSelect,r=e.title,n=e.label;return Ps.default.createElement("li",{onMouseOver:function(i){i.currentTarget.className="hover"},onMouseOut:function(i){i.currentTarget.className=""},onMouseDown:aO,onMouseUp:t,title:r},n)};function aO(e){e.preventDefault()}var yw=Ee(zt()),vG=Ee(ry());var U$=Array.from({length:11},function(e,t){return String.fromCharCode(8192+t)}).concat(["\u2028","\u2029","\u202F","\xA0"]),G$=new RegExp("["+U$.join("")+"]","g");function mV(e){return e.replace(G$," ")}var ny=Ee(ht()),TV=Ee(bV()),_V=Ee(ry()),EV=new _V.default;function Iu(e,t,r){Promise.resolve().then(()=>Ee(Wt())).then(function(n){var i=n.default,o,s;i.on(t,"select",function(l,d){if(!o){var h=d.parentNode;o=document.createElement("div"),o.className="CodeMirror-hint-information",h.appendChild(o),s=document.createElement("div"),s.className="CodeMirror-hint-deprecation",h.appendChild(s);var v;h.addEventListener("DOMNodeRemoved",v=function(_){_.target===h&&(h.removeEventListener("DOMNodeRemoved",v),o=null,s=null,v=null)})}var y=l.description?EV.render(l.description):"Self descriptive.",b=l.type?''+RO(l.type)+"":"";if(o.innerHTML='
'+(y.slice(0,3)==="

"?"

"+b+y.slice(3):b+y)+"

",l&&s&&l.deprecationReason){var D=l.deprecationReason?EV.render(l.deprecationReason):"";s.innerHTML='Deprecated'+D,s.style.display="block"}else s&&(s.style.display="none");r&&r(o)})})}function RO(e){return e instanceof ny.GraphQLNonNull?RO(e.ofType)+"!":e instanceof ny.GraphQLList?"["+RO(e.ofType)+"]":''+(0,TV.default)(e.name)+""}var Io,SV=!1;typeof window=="object"&&(SV=window.navigator.platform==="MacIntel");var K$=(Io={},Io[SV?"Cmd-F":"Ctrl-F"]="findPersistent",Io["Cmd-G"]="findPersistent",Io["Ctrl-G"]="findPersistent",Io["Ctrl-Left"]="goSubwordLeft",Io["Ctrl-Right"]="goSubwordRight",Io["Alt-Left"]="goGroupLeft",Io["Alt-Right"]="goGroupRight",Io),Au=K$;var H$=function(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(v){try{h(n.next(v))}catch(y){s(y)}}function d(v){try{h(n.throw(v))}catch(y){s(y)}}function h(v){v.done?o(v.value):i(v.value).then(l,d)}h((n=n.apply(e,t||[])).next())})},z$=function(e,t){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,s;return s={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function l(h){return function(v){return d([h,v])}}function d(h){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(o=h[0]&2?i.return:h[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,h[1])).done)return o;switch(i=0,o&&(h=[h[0]&2,o.value]),h[0]){case 0:case 1:o=h;break;case 4:return r.label++,{value:h[1],done:!1};case 5:r.label++,i=h[1],h=[0];continue;case 7:h=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(jO())),Promise.resolve().then(()=>Ee(PO())),Promise.resolve().then(()=>Ee(CV())),Promise.resolve().then(()=>Ee(FO())),Promise.resolve().then(()=>Ee(MO())),Promise.resolve().then(()=>Ee(VV())),Promise.resolve().then(()=>Ee(qp())),Promise.resolve().then(()=>Ee(qO())),Promise.resolve().then(()=>Ee(Vp())),Promise.resolve().then(()=>Ee(VO()))];function Ru(e,t){return H$(this,void 0,void 0,function(){var r,n;return z$(this,function(i){switch(i.label){case 0:return[4,Promise.resolve().then(()=>Ee(Wt()))];case 1:return r=i.sent().default,n=(t==null?void 0:t.useCommonAddons)===!1?e:W$.concat(e),[4,Promise.all(n.map(function(o){return o}))];case 2:return i.sent(),[2,r]}})})}var nre=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Oy=function(){return Oy=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(XV())),Promise.resolve().then(()=>Ee(UO())),Promise.resolve().then(()=>Ee(YU())),Promise.resolve().then(()=>Ee(XU())),Promise.resolve().then(()=>Ee(aG())),Promise.resolve().then(()=>Ee(cG())),Promise.resolve().then(()=>Ee(hG()))]},n._onKeyUp=function(i,o){ure.test(o.key)&&n.editor&&n.editor.execCommand("autocomplete")},n._onEdit=function(){!n.ignoreChangeEvent&&n.editor&&(n.cachedValue=n.editor.getValue(),n.props.onEdit&&n.props.onEdit(n.cachedValue))},n._onHasCompletion=function(i,o){Iu(i,o,n.props.onHintInformationRender)},n.cachedValue=r.value||"",n}return t.prototype.componentDidMount=function(){var r=this;this.initializeEditor().then(function(n){n&&(n.on("change",r._onEdit),n.on("keyup",r._onKeyUp),n.on("hasCompletion",r._onHasCompletion),n.on("beforeChange",r._onBeforeChange))}).catch(console.error)},t.prototype.componentDidUpdate=function(r){this.ignoreChangeEvent=!0;var n=!1;this.props.schema!==r.schema&&this.editor&&(this.editor.options.lint.schema=this.props.schema,this.editor.options.hintOptions.schema=this.props.schema,this.editor.options.info.schema=this.props.schema,this.editor.options.jump.schema=this.props.schema,n=!0),this.props.externalFragments!==r.externalFragments&&this.editor&&(this.editor.options.lint.externalFragments=this.props.externalFragments,this.editor.options.hintOptions.externalFragments=this.props.externalFragments,n=!0),n&&this.CodeMirror.signal(this.editor,"change",this.editor),this.props.value!==r.value&&this.props.value!==this.cachedValue&&this.editor&&(this.cachedValue=this.props.value,this.editor.setValue(this.props.value)),this.ignoreChangeEvent=!1},t.prototype.componentWillUnmount=function(){this.editor&&(this.editor.off("change",this._onEdit),this.editor.off("keyup",this._onKeyUp),this.editor.off("hasCompletion",this._onHasCompletion))},t.prototype.render=function(){var r=this;return yw.default.createElement("section",{className:"query-editor","aria-label":"Query Editor",ref:function(n){r._node=n}})},t.prototype.initializeEditor=function(){var r,n,i,o;return ire(this,void 0,void 0,function(){var s,l,d,h=this;return are(this,function(v){switch(v.label){case 0:return l=this,[4,Ru(this.addonModules())];case 1:return s=l.CodeMirror=v.sent(),d=this.editor=s(this._node,{value:(r=this.props.value)!==null&&r!==void 0?r:"",lineNumbers:!0,tabSize:2,foldGutter:{minFoldSize:4},mode:"graphql",theme:this.props.editorTheme||"graphiql",keyMap:"sublime",autoCloseBrackets:!0,matchBrackets:!0,showCursorWhenSelecting:!0,readOnly:this.props.readOnly?"nocursor":!1,lint:{schema:this.props.schema,validationRules:(n=this.props.validationRules)!==null&&n!==void 0?n:null,externalFragments:(i=this.props)===null||i===void 0?void 0:i.externalFragments},hintOptions:{schema:this.props.schema,closeOnUnfocus:!1,completeSingle:!1,container:this._node,externalFragments:(o=this.props)===null||o===void 0?void 0:o.externalFragments},info:{schema:this.props.schema,renderDescription:function(y){return ore.render(y)},onClick:function(y){return h.props.onClickReference&&h.props.onClickReference(y)}},jump:{schema:this.props.schema,onClick:function(y){return h.props.onClickReference&&h.props.onClickReference(y)}},gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],extraKeys:Oy(Oy({"Cmd-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Ctrl-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Alt-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Shift-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Shift-Alt-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Cmd-Enter":function(){h.props.onRunQuery&&h.props.onRunQuery()},"Ctrl-Enter":function(){h.props.onRunQuery&&h.props.onRunQuery()},"Shift-Ctrl-C":function(){h.props.onCopyQuery&&h.props.onCopyQuery()},"Shift-Ctrl-P":function(){h.props.onPrettifyQuery&&h.props.onPrettifyQuery()},"Shift-Ctrl-F":function(){h.props.onPrettifyQuery&&h.props.onPrettifyQuery()},"Shift-Ctrl-M":function(){h.props.onMergeQuery&&h.props.onMergeQuery()}},Au),{"Cmd-S":function(){h.props.onRunQuery},"Ctrl-S":function(){h.props.onRunQuery}})}),[2,d]}})})},t.prototype.getCodeMirror=function(){return this.editor},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t.prototype._onBeforeChange=function(r,n){if(n.origin==="paste"){var i=n.text.map(mV);n.update(n.from,n.to,i)}},t}(yw.default.Component);var Ow=Ee(zt());var Rre=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),kw=function(){return kw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(yG())),Promise.resolve().then(()=>Ee(wG())),Promise.resolve().then(()=>Ee(DG()))]},n._onKeyUp=function(i,o){var s=o.keyCode;!n.editor||(s>=65&&s<=90||!o.shiftKey&&s>=48&&s<=57||o.shiftKey&&s===189||o.shiftKey&&s===222)&&n.editor.execCommand("autocomplete")},n._onEdit=function(){!n.editor||n.ignoreChangeEvent||(n.cachedValue=n.editor.getValue(),n.props.onEdit&&n.props.onEdit(n.cachedValue))},n._onHasCompletion=function(i,o){Iu(i,o,n.props.onHintInformationRender)},n.cachedValue=r.value||"",n}return t.prototype.componentDidMount=function(){var r=this;this.initializeEditor().then(function(n){n.on("change",r._onEdit),n.on("keyup",r._onKeyUp),n.on("hasCompletion",r._onHasCompletion)}).catch(console.error)},t.prototype.componentDidUpdate=function(r){if(!!this.editor&&!!this.CodeMirror){if(this.ignoreChangeEvent=!0,this.props.variableToType!==r.variableToType&&(this.editor.options.lint.variableToType=this.props.variableToType,this.editor.options.hintOptions.variableToType=this.props.variableToType,this.CodeMirror.signal(this.editor,"change",this.editor)),this.props.value!==r.value&&this.props.value!==this.cachedValue){var n=this.props.value||"";this.cachedValue=n,this.editor.setValue(n)}this.ignoreChangeEvent=!1}},t.prototype.componentWillUnmount=function(){!this.editor||(this.editor.off("change",this._onEdit),this.editor.off("keyup",this._onKeyUp),this.editor.off("hasCompletion",this._onHasCompletion),this.editor=null)},t.prototype.render=function(){var r=this;return Ow.default.createElement("div",{className:"codemirrorWrap",style:{position:this.props.active?"relative":"absolute",visibility:this.props.active?"visible":"hidden"},ref:function(n){r._node=n}})},t.prototype.initializeEditor=function(){return jre(this,void 0,void 0,function(){var r,n,i=this;return Pre(this,function(o){switch(o.label){case 0:return r=this,[4,Ru(this.addonModules())];case 1:return r.CodeMirror=o.sent(),n=this.editor=this.CodeMirror(this._node,{value:this.props.value||"",lineNumbers:!0,tabSize:2,mode:"graphql-variables",theme:this.props.editorTheme||"graphiql",keyMap:"sublime",autoCloseBrackets:!0,matchBrackets:!0,showCursorWhenSelecting:!0,readOnly:this.props.readOnly?"nocursor":!1,foldGutter:{minFoldSize:4},lint:{variableToType:this.props.variableToType},hintOptions:{variableToType:this.props.variableToType,closeOnUnfocus:!1,completeSingle:!1,container:this._node},gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],extraKeys:kw({"Cmd-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Ctrl-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Alt-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Shift-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Cmd-Enter":function(){i.props.onRunQuery&&i.props.onRunQuery()},"Ctrl-Enter":function(){i.props.onRunQuery&&i.props.onRunQuery()},"Shift-Ctrl-P":function(){i.props.onPrettifyQuery&&i.props.onPrettifyQuery()},"Shift-Ctrl-M":function(){i.props.onMergeQuery&&i.props.onMergeQuery()}},Au)}),[2,n]}})})},t.prototype.getCodeMirror=function(){return this.editor},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(Ow.default.Component);var Nw=Ee(zt());var Fre=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),ww=function(){return ww=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(LG()))]},n._onKeyUp=function(i,o){var s=o.keyCode;!n.editor||(s>=65&&s<=90||!o.shiftKey&&s>=48&&s<=57||o.shiftKey&&s===189||o.shiftKey&&s===222)&&n.editor.execCommand("autocomplete")},n._onEdit=function(){!n.editor||n.ignoreChangeEvent||(n.cachedValue=n.editor.getValue(),n.props.onEdit&&n.props.onEdit(n.cachedValue))},n._onHasCompletion=function(i,o){Iu(i,o,n.props.onHintInformationRender)},n.cachedValue=r.value||"",n}return t.prototype.componentDidMount=function(){var r=this;this.initializeEditor().then(function(n){n.on("change",r._onEdit),n.on("keyup",r._onKeyUp),n.on("hasCompletion",r._onHasCompletion)}).catch(console.error)},t.prototype.componentDidUpdate=function(r){if(!!this.editor){if(this.ignoreChangeEvent=!0,this.props.value!==r.value&&this.props.value!==this.cachedValue){var n=this.props.value||"";this.cachedValue=n,this.editor.setValue(n)}this.ignoreChangeEvent=!1}},t.prototype.componentWillUnmount=function(){!this.editor||(this.editor.off("change",this._onEdit),this.editor.off("keyup",this._onKeyUp),this.editor.off("hasCompletion",this._onHasCompletion),this.editor=null)},t.prototype.render=function(){var r=this;return Nw.default.createElement("div",{className:"codemirrorWrap",style:{position:this.props.active?"relative":"absolute",visibility:this.props.active?"visible":"hidden"},ref:function(n){r._node=n}})},t.prototype.initializeEditor=function(){return Mre(this,void 0,void 0,function(){var r,n,i=this;return qre(this,function(o){switch(o.label){case 0:return r=this,[4,Ru(this.addonModules())];case 1:return r.CodeMirror=o.sent(),n=this.editor=this.CodeMirror(this._node,{value:this.props.value||"",lineNumbers:!0,tabSize:2,mode:{name:"javascript",json:!0},theme:this.props.editorTheme||"graphiql",keyMap:"sublime",autoCloseBrackets:!0,matchBrackets:!0,showCursorWhenSelecting:!0,readOnly:this.props.readOnly?"nocursor":!1,foldGutter:{minFoldSize:4},gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],extraKeys:ww({"Cmd-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Ctrl-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Alt-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Shift-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Cmd-Enter":function(){i.props.onRunQuery&&i.props.onRunQuery()},"Ctrl-Enter":function(){i.props.onRunQuery&&i.props.onRunQuery()},"Shift-Ctrl-P":function(){i.props.onPrettifyQuery&&i.props.onPrettifyQuery()},"Shift-Ctrl-M":function(){i.props.onMergeQuery&&i.props.onMergeQuery()}},Au)}),[2,n]}})})},t.prototype.getCodeMirror=function(){return this.editor},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(Nw.default.Component);var Yc=Ee(zt()),xw=Ee(a_());var Kre=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hre=function(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(v){try{h(n.next(v))}catch(y){s(y)}}function d(v){try{h(n.throw(v))}catch(y){s(y)}}function h(v){v.done?o(v.value):i(v.value).then(l,d)}h((n=n.apply(e,t||[])).next())})},zre=function(e,t){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,s;return s={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function l(h){return function(v){return d([h,v])}}function d(h){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(o=h[0]&2?i.return:h[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,h[1])).done)return o;switch(i=0,o&&(h=[h[0]&2,o.value]),h[0]){case 0:case 1:o=h;break;case 4:return r.label++,{value:h[1],done:!1};case 5:r.label++,i=h[1],h=[0];continue;case 7:h=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(MO())),Promise.resolve().then(()=>Ee(FO())),Promise.resolve().then(()=>Ee(Vp())),Promise.resolve().then(()=>Ee(UO())),Promise.resolve().then(()=>Ee(qp())),Promise.resolve().then(()=>Ee(qO())),Promise.resolve().then(()=>Ee(VO())),Promise.resolve().then(()=>Ee(IG()))]},r}return t.prototype.componentDidMount=function(){this.initializeEditor()},t.prototype.shouldComponentUpdate=function(r){return this.props.value!==r.value},t.prototype.componentDidUpdate=function(){this.viewer&&this.viewer.setValue(this.props.value||"")},t.prototype.componentWillUnmount=function(){this.viewer=null},t.prototype.render=function(){var r=this;return Yc.default.createElement("section",{className:"result-window","aria-label":"Result Window","aria-live":"polite","aria-atomic":"true",ref:function(n){n&&(r.props.registerRef(n),r._node=n)}})},t.prototype.initializeEditor=function(){return Hre(this,void 0,void 0,function(){var r,n,i,o;return zre(this,function(s){switch(s.label){case 0:return[4,Ru(this.allAddons(),{useCommonAddons:!1})];case 1:return r=s.sent(),n=this.props.ResultsTooltip,i=this.props.ImagePreview,n||i?[4,Promise.resolve().then(()=>Ee(gw()))]:[3,3];case 2:s.sent(),o=document.createElement("div"),r.registerHelper("info","graphql-results",function(l,d,h,v){var y=[];return n&&y.push(Yc.default.createElement(n,{pos:v})),i&&typeof i.shouldRender=="function"&&i.shouldRender(l)&&y.push(Yc.default.createElement(i,{token:l})),y.length?(xw.default.render(Yc.default.createElement("div",null,y),o),o):(xw.default.unmountComponentAtNode(o),null)}),s.label=3;case 3:return this.viewer=r(this._node,{lineWrapping:!0,value:this.props.value||"",readOnly:!0,theme:this.props.editorTheme||"graphiql",mode:"graphql-results",keyMap:"sublime",foldGutter:{minFoldSize:4},gutters:["CodeMirror-foldgutter"],info:Boolean(this.props.ResultsTooltip||this.props.ImagePreview),extraKeys:Au}),[2]}})})},t.prototype.getCodeMirror=function(){return this.viewer},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(Yc.default.Component);var wn=Ee(zt()),Mw=Ee(ht());var Yt=Ee(zt());var ih=Ee(zt());var Py=Ee(zt()),Fy=Ee(ht());function ni(e){var t=e.onClick?e.onClick:function(){return null};return Lw(e.type,t)}function Lw(e,t){return e instanceof Fy.GraphQLNonNull?Py.default.createElement("span",null,Lw(e.ofType,t),"!"):e instanceof Fy.GraphQLList?Py.default.createElement("span",null,"[",Lw(e.ofType,t),"]"):Py.default.createElement("a",{className:"type-name",onClick:function(r){r.preventDefault(),t(e,r)},href:"#"},e==null?void 0:e.name)}var Iw=Ee(zt()),My=Ee(ht()),Wre=function(e){return e?(0,My.print)(e):""};function nh(e){var t=e.field;return"defaultValue"in t&&t.defaultValue!==void 0?Iw.default.createElement("span",null," = ",Iw.default.createElement("span",{className:"arg-default-value"},Wre((0,My.astFromValue)(t.defaultValue,t.type)))):null}function qu(e){var t=e.arg,r=e.onClickType,n=e.showDefaultValue;return ih.default.createElement("span",{className:"arg"},ih.default.createElement("span",{className:"arg-name"},t.name),": ",ih.default.createElement(ni,{type:t.type,onClick:r}),n!==!1&&ih.default.createElement(nh,{field:t}))}var AG=Ee(zt());function Aw(e){var t=e.directive;return AG.default.createElement("span",{className:"doc-category-item",id:t.name.value},"@",t.name.value)}var Rw=Ee(zt()),RG=Ee(ry()),Yre=new RG.default({breaks:!0,linkify:!0});function Bn(e){var t=e.markdown,r=e.className;return t?Rw.default.createElement("div",{className:r,dangerouslySetInnerHTML:{__html:Yre.render(t)}}):Rw.default.createElement("div",null)}var Jre=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o};function jw(e){var t=e.field,r=e.onClickType,n=Jre(Yt.default.useState(!1),2),i=n[0],o=n[1],s,l;if(t&&"args"in t&&t.args.length>0){s=Yt.default.createElement("div",{id:"doc-args",className:"doc-category"},Yt.default.createElement("div",{className:"doc-category-title"},"arguments"),t.args.filter(function(v){return!v.deprecationReason}).map(function(v){return Yt.default.createElement("div",{key:v.name,className:"doc-category-item"},Yt.default.createElement("div",null,Yt.default.createElement(qu,{arg:v,onClickType:r})),Yt.default.createElement(Bn,{className:"doc-value-description",markdown:v.description}),v&&"deprecationReason"in v&&Yt.default.createElement(Bn,{className:"doc-deprecation",markdown:v==null?void 0:v.deprecationReason}))}));var d=t.args.filter(function(v){return Boolean(v.deprecationReason)});d.length>0&&(l=Yt.default.createElement("div",{id:"doc-deprecated-args",className:"doc-category"},Yt.default.createElement("div",{className:"doc-category-title"},"deprecated arguments"),i?d.map(function(v,y){return Yt.default.createElement("div",{key:y},Yt.default.createElement("div",null,Yt.default.createElement(qu,{arg:v,onClickType:r})),Yt.default.createElement(Bn,{className:"doc-value-description",markdown:v.description}),v&&"deprecationReason"in v&&Yt.default.createElement(Bn,{className:"doc-deprecation",markdown:v==null?void 0:v.deprecationReason}))}):Yt.default.createElement("button",{className:"show-btn",onClick:function(){return o(!i)}},"Show deprecated arguments...")))}var h;return t&&t.astNode&&t.astNode.directives&&t.astNode.directives.length>0&&(h=Yt.default.createElement("div",{id:"doc-directives",className:"doc-category"},Yt.default.createElement("div",{className:"doc-category-title"},"directives"),t.astNode.directives.map(function(v){return Yt.default.createElement("div",{key:v.name.value,className:"doc-category-item"},Yt.default.createElement("div",null,Yt.default.createElement(Aw,{directive:v})))}))),Yt.default.createElement("div",null,Yt.default.createElement(Bn,{className:"doc-type-description",markdown:(t==null?void 0:t.description)||"No Description"}),t&&"deprecationReason"in t&&Yt.default.createElement(Bn,{className:"doc-deprecation",markdown:t==null?void 0:t.deprecationReason}),Yt.default.createElement("div",{className:"doc-category"},Yt.default.createElement("div",{className:"doc-category-title"},"type"),Yt.default.createElement(ni,{type:t==null?void 0:t.type,onClick:r})),s,h,l)}var Ti=Ee(zt());function Pw(e){var t=e.schema,r=e.onClickType,n=t.getQueryType(),i=t.getMutationType&&t.getMutationType(),o=t.getSubscriptionType&&t.getSubscriptionType();return Ti.default.createElement("div",null,Ti.default.createElement(Bn,{className:"doc-type-description",markdown:t.description||"A GraphQL schema provides a root type for each kind of operation."}),Ti.default.createElement("div",{className:"doc-category"},Ti.default.createElement("div",{className:"doc-category-title"},"root types"),Ti.default.createElement("div",{className:"doc-category-item"},Ti.default.createElement("span",{className:"keyword"},"query"),": ",Ti.default.createElement(ni,{type:n,onClick:r})),i&&Ti.default.createElement("div",{className:"doc-category-item"},Ti.default.createElement("span",{className:"keyword"},"mutation"),": ",Ti.default.createElement(ni,{type:i,onClick:r})),o&&Ti.default.createElement("div",{className:"doc-category-item"},Ti.default.createElement("span",{className:"keyword"},"subscription"),": ",Ti.default.createElement(ni,{type:o,onClick:r}))))}var Jc=Ee(zt());function ji(e,t){var r;return function(){for(var n=this,i=[],o=0;o=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},tne=function(e){$re(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.shouldComponentUpdate=function(r){return this.props.schema!==r.schema||this.props.searchValue!==r.searchValue},t.prototype.render=function(){var r,n,i=this.props.searchValue,o=this.props.withinType,s=this.props.schema,l=this.props.onClickType,d=this.props.onClickField,h=[],v=[],y=[],b=s.getTypeMap(),D=Object.keys(b);o&&(D=D.filter(function(w){return w!==o.name}),D.unshift(o.name));var _=function(w){if(h.length+v.length+y.length>=100)return"break";var x=b[w];if(o!==x&&Fw(w,i)&&v.push(_i.default.createElement("div",{className:"doc-category-item",key:w},_i.default.createElement(ni,{type:x,onClick:l}))),x&&"getFields"in x){var L=x.getFields();Object.keys(L).forEach(function(O){var R=L[O],M;if(!Fw(O,i))if("args"in R&&R.args.length){if(M=R.args.filter(function(z){return Fw(z.name,i)}),M.length===0)return}else return;var q=_i.default.createElement("div",{className:"doc-category-item",key:w+"."+O},o!==x&&[_i.default.createElement(ni,{key:"type",type:x,onClick:l}),"."],_i.default.createElement("a",{className:"field-name",onClick:function(z){return d(R,x,z)}},R.name),M&&["(",_i.default.createElement("span",{key:"args"},M.map(function(z){return _i.default.createElement(qu,{key:z.name,arg:z,onClickType:l,showDefaultValue:!1})})),")"]);o===x?h.push(q):y.push(q)})}};try{for(var k=ene(D),T=k.next();!T.done;T=k.next()){var S=T.value,m=_(S);if(m==="break")break}}catch(w){r={error:w}}finally{try{T&&!T.done&&(n=k.return)&&n.call(k)}finally{if(r)throw r.error}}return h.length+v.length+y.length===0?_i.default.createElement("span",{className:"doc-alert-text"},"No results found."):o&&v.length+y.length>0?_i.default.createElement("div",null,h,_i.default.createElement("div",{className:"doc-category"},_i.default.createElement("div",{className:"doc-category-title"},"other results"),v,y)):_i.default.createElement("div",{className:"doc-search-items"},h,v,y)},t}(_i.default.Component),PG=tne;function Fw(e,t){try{var r=t.replace(/[^_0-9A-Za-z]/g,function(n){return"\\"+n});return e.search(new RegExp(r,"i"))!==-1}catch(n){return e.toLowerCase().indexOf(t.toLowerCase())!==-1}}var Tt=Ee(zt()),no=Ee(ht());var rne=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),nne=function(e){rne(t,e);function t(r){var n=e.call(this,r)||this;return n.handleShowDeprecated=function(){return n.setState({showDeprecated:!0})},n.state={showDeprecated:!1},n}return t.prototype.shouldComponentUpdate=function(r,n){return this.props.type!==r.type||this.props.schema!==r.schema||this.state.showDeprecated!==n.showDeprecated},t.prototype.render=function(){var r=this.props.schema,n=this.props.type,i=this.props.onClickType,o=this.props.onClickField,s=null,l=[];n instanceof no.GraphQLUnionType?(s="possible types",l=r.getPossibleTypes(n)):n instanceof no.GraphQLInterfaceType?(s="implementations",l=r.getPossibleTypes(n)):n instanceof no.GraphQLObjectType&&(s="implements",l=n.getInterfaces());var d;l&&l.length>0&&(d=Tt.default.createElement("div",{id:"doc-types",className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},s),l.map(function(m){return Tt.default.createElement("div",{key:m.name,className:"doc-category-item"},Tt.default.createElement(ni,{type:m,onClick:i}))})));var h,v;if(n&&"getFields"in n){var y=n.getFields(),b=Object.keys(y).map(function(m){return y[m]});h=Tt.default.createElement("div",{id:"doc-fields",className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},"fields"),b.filter(function(m){return!m.deprecationReason}).map(function(m){return Tt.default.createElement(MG,{key:m.name,type:n,field:m,onClickType:i,onClickField:o})}));var D=b.filter(function(m){return Boolean(m.deprecationReason)});D.length>0&&(v=Tt.default.createElement("div",{id:"doc-deprecated-fields",className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},"deprecated fields"),this.state.showDeprecated?D.map(function(m){return Tt.default.createElement(MG,{key:m.name,type:n,field:m,onClickType:i,onClickField:o})}):Tt.default.createElement("button",{className:"show-btn",onClick:this.handleShowDeprecated},"Show deprecated fields...")))}var _,k;if(n instanceof no.GraphQLEnumType){var T=n.getValues();_=Tt.default.createElement("div",{className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},"values"),T.filter(function(m){return Boolean(!m.deprecationReason)}).map(function(m){return Tt.default.createElement(qG,{key:m.name,value:m})}));var S=T.filter(function(m){return Boolean(m.deprecationReason)});S.length>0&&(k=Tt.default.createElement("div",{className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},"deprecated values"),this.state.showDeprecated?S.map(function(m){return Tt.default.createElement(qG,{key:m.name,value:m})}):Tt.default.createElement("button",{className:"show-btn",onClick:this.handleShowDeprecated},"Show deprecated values...")))}return Tt.default.createElement("div",null,Tt.default.createElement(Bn,{className:"doc-type-description",markdown:"description"in n&&n.description||"No Description"}),n instanceof no.GraphQLObjectType&&d,h,v,_,k,!(n instanceof no.GraphQLObjectType)&&d)},t}(Tt.default.Component),FG=nne;function MG(e){var t=e.type,r=e.field,n=e.onClickType,i=e.onClickField;return Tt.default.createElement("div",{className:"doc-category-item"},Tt.default.createElement("a",{className:"field-name",onClick:function(o){return i(r,t,o)}},r.name),"args"in r&&r.args&&r.args.length>0&&["(",Tt.default.createElement("span",{key:"args"},r.args.filter(function(o){return!o.deprecationReason}).map(function(o){return Tt.default.createElement(qu,{key:o.name,arg:o,onClickType:n})})),")"],": ",Tt.default.createElement(ni,{type:r.type,onClick:n}),Tt.default.createElement(nh,{field:r}),r.description&&Tt.default.createElement(Bn,{className:"field-short-description",markdown:r.description}),"deprecationReason"in r&&r.deprecationReason&&Tt.default.createElement(Bn,{className:"doc-deprecation",markdown:r.deprecationReason}))}function qG(e){var t=e.value;return Tt.default.createElement("div",{className:"doc-category-item"},Tt.default.createElement("div",{className:"enum-value"},t.name),Tt.default.createElement(Bn,{className:"doc-value-description",markdown:t.description}),t.deprecationReason&&Tt.default.createElement(Bn,{className:"doc-deprecation",markdown:t.deprecationReason}))}var ine=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),qy=function(){return qy=Object.assign||function(e){for(var t,r=1,n=arguments.length;r1&&n.setState({navStack:n.state.navStack.slice(0,-1)})},n.handleClickType=function(i){n.showDoc(i)},n.handleClickField=function(i){n.showDoc(i)},n.handleSearch=function(i){n.showSearch(i)},n.state={navStack:[VG]},n}return t.prototype.shouldComponentUpdate=function(r,n){return this.props.schema!==r.schema||this.state.navStack!==n.navStack||this.props.schemaErrors!==r.schemaErrors},t.prototype.render=function(){var r=this.props,n=r.schema,i=r.schemaErrors,o=this.state.navStack,s=o[o.length-1],l;i?l=wn.default.createElement("div",{className:"error-container"},"Error fetching schema"):n===void 0?l=wn.default.createElement("div",{className:"spinner-container"},wn.default.createElement("div",{className:"spinner"})):n?s.search?l=wn.default.createElement(PG,{searchValue:s.search,withinType:s.def,schema:n,onClickType:this.handleClickType,onClickField:this.handleClickField}):o.length===1?l=wn.default.createElement(Pw,{schema:n,onClickType:this.handleClickType}):(0,Mw.isType)(s.def)?l=wn.default.createElement(FG,{schema:n,type:s.def,onClickType:this.handleClickType,onClickField:this.handleClickField}):l=wn.default.createElement(jw,{field:s.def,onClickType:this.handleClickType}):l=wn.default.createElement("div",{className:"error-container"},"No Schema Available");var d=o.length===1||(0,Mw.isType)(s.def)&&"getFields"in s.def,h;return o.length>1&&(h=o[o.length-2].name),wn.default.createElement("section",{className:"doc-explorer",key:s.name,"aria-label":"Documentation Explorer"},wn.default.createElement("div",{className:"doc-explorer-title-bar"},h&&wn.default.createElement("button",{className:"doc-explorer-back",onClick:this.handleNavBackClick,"aria-label":"Go back to "+h},h),wn.default.createElement("div",{className:"doc-explorer-title"},s.title||s.name),wn.default.createElement("div",{className:"doc-explorer-rhs"},this.props.children)),wn.default.createElement("div",{className:"doc-explorer-contents"},d&&wn.default.createElement(jG,{value:s.search,placeholder:"Search "+s.name+"...",onSearch:this.handleSearch}),l))},t.prototype.showDoc=function(r){var n=this.state.navStack,i=n[n.length-1];i.def!==r&&this.setState({navStack:n.concat([{name:r.name,def:r}])})},t.prototype.showDocForReference=function(r){r&&r.kind==="Type"?this.showDoc(r.type):r.kind==="Field"?this.showDoc(r.field):r.kind==="Argument"&&r.field?this.showDoc(r.field):r.kind==="EnumValue"&&r.type&&this.showDoc(r.type)},t.prototype.showSearch=function(r){var n=this.state.navStack.slice(),i=n[n.length-1];n[n.length-1]=qy(qy({},i),{search:r}),this.setState({navStack:n})},t.prototype.reset=function(){this.setState({navStack:[VG]})},t}(wn.default.Component);var Vu=Ee(zt());var Ks=Ee(zt()),ane=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),one=function(e){ane(t,e);function t(r){var n=e.call(this,r)||this;return n.state={editable:!1},n.editField=null,n}return t.prototype.render=function(){var r=this,n,i=this.props.label||this.props.operationName||((n=this.props.query)===null||n===void 0?void 0:n.split(` -`).filter(function(s){return s.indexOf("#")!==0}).join("")),o=this.props.favorite?"\u2605":"\u2606";return Ks.default.createElement("li",{className:this.state.editable?"editable":void 0},this.state.editable?Ks.default.createElement("input",{type:"text",defaultValue:this.props.label,ref:function(s){r.editField=s},onBlur:this.handleFieldBlur.bind(this),onKeyDown:this.handleFieldKeyDown.bind(this),placeholder:"Type a label"}):Ks.default.createElement("button",{className:"history-label",onClick:this.handleClick.bind(this)},i),Ks.default.createElement("button",{onClick:this.handleEditClick.bind(this),"aria-label":"Edit label"},"\u270E"),Ks.default.createElement("button",{className:this.props.favorite?"favorited":void 0,onClick:this.handleStarClick.bind(this),"aria-label":this.props.favorite?"Remove favorite":"Add favorite"},o))},t.prototype.handleClick=function(){this.props.onSelect(this.props.query,this.props.variables,this.props.headers,this.props.operationName,this.props.label)},t.prototype.handleStarClick=function(r){r.stopPropagation(),this.props.handleToggleFavorite(this.props.query,this.props.variables,this.props.headers,this.props.operationName,this.props.label,this.props.favorite)},t.prototype.handleFieldBlur=function(r){r.stopPropagation(),this.setState({editable:!1}),this.props.handleEditLabel(this.props.query,this.props.variables,this.props.headers,this.props.operationName,r.target.value,this.props.favorite)},t.prototype.handleFieldKeyDown=function(r){r.keyCode===13&&(r.stopPropagation(),this.setState({editable:!1}),this.props.handleEditLabel(this.props.query,this.props.variables,this.props.headers,this.props.operationName,r.currentTarget.value,this.props.favorite))},t.prototype.handleEditClick=function(r){var n=this;r.stopPropagation(),this.setState({editable:!0},function(){n.editField&&n.editField.focus()})},t}(Ks.default.Component),UG=one;var une=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},sne=function(){for(var e=[],t=0;tthis.maxSize&&n.shift();for(var i=0;i<5;i++){var o=this.storage.set(this.key,JSON.stringify((r={},r[this.key]=n,r)));if(!o||!o.error)this.items=n;else if(o.isQuotaError&&this.maxSize)n.shift();else return}},e.prototype.save=function(){var t;this.storage.set(this.key,JSON.stringify((t={},t[this.key]=this.items,t)))},e}(),Vw=lne;var QG=Ee(ht()),Vy=function(){return Vy=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},GG=function(){for(var e=[],t=0;tfne?!1:l?!(JSON.stringify(i)===JSON.stringify(l.query)&&(JSON.stringify(o)===JSON.stringify(l.variables)&&(JSON.stringify(s)===JSON.stringify(l.headers)||s&&!l.headers)||o&&!l.variables)):!0},this.fetchAllQueries=function(){var i=n.history.fetchAll(),o=n.favorite.fetchAll();return i.concat(o)},this.updateHistory=function(i,o,s,l){if(n.shouldSaveQuery(i,o,s,n.history.fetchRecent())){n.history.push({query:i,variables:o,headers:s,operationName:l});var d=n.history.items,h=n.favorite.items;n.queries=d.concat(h)}},this.toggleFavorite=function(i,o,s,l,d,h){var v={query:i,variables:o,headers:s,operationName:l,label:d};n.favorite.contains(v)?h&&(v.favorite=!1,n.favorite.delete(v)):(v.favorite=!0,n.favorite.push(v)),n.queries=GG(n.history.items,n.favorite.items)},this.editLabel=function(i,o,s,l,d,h){var v={query:i,variables:o,headers:s,operationName:l,label:d};h?n.favorite.edit(Vy(Vy({},v),{favorite:h})):n.history.edit(v),n.queries=GG(n.history.items,n.favorite.items)},this.history=new Vw("queries",this.storage,this.maxHistoryLength),this.favorite=new Vw("favorites",this.storage,null),this.queries=this.fetchAllQueries()}return e}(),Uy=dne;var pne=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Uw=function(){return Uw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},_ne=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},WG=function(){for(var e=[],t=0;t=0)continue;d.push(b)}var D=e[y.name.value];if(D){var _=D.typeCondition,k=D.directives,T=D.selectionSet;y={kind:aa.Kind.INLINE_FRAGMENT,typeCondition:_,directives:k,selectionSet:T}}}if(y.kind===aa.Kind.INLINE_FRAGMENT&&(!y.directives||((o=y.directives)===null||o===void 0?void 0:o.length)===0)){var S=y.typeCondition?y.typeCondition.name.value:null;if(!S||S===s){l.push.apply(l,WG(YG(e,y.selectionSet.selections,r)));continue}}l.push(y)}}catch(m){n={error:m}}finally{try{v&&!v.done&&(i=h.return)&&i.call(h)}finally{if(n)throw n.error}}return l}function Gy(e,t){var r,n,i=t?new aa.TypeInfo(t):null,o=Object.create(null);try{for(var s=Bw(e.definitions),l=s.next();!l.done;l=s.next()){var d=l.value;d.kind===aa.Kind.FRAGMENT_DEFINITION&&(o[d.name.value]=d)}}catch(v){r={error:v}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}var h={SelectionSet:function(v){var y=i?i.getParentType():null,b=v.selections;return b=YG(o,b,y),b=Ene(b,function(D){return D.alias?D.alias.value:D.name.value}),Xc(Xc({},v),{selections:b})},FragmentDefinition:function(){return null}};return(0,aa.visit)(e,i?(0,aa.visitWithTypeInfo)(i,h):h)}var Sne="IntrospectionQuery",JG=Sne;var vQ=Ee(sQ());var Ky=Ee(ht());var zs=Ee(zt()),Qy=function(){return Qy=Object.assign||function(e){for(var t,r=1,n=arguments.length;r"}function Uu(e){var t,r,n;return[(t=e.query)!==null&&t!==void 0?t:"",(r=e.variables)!==null&&r!==void 0?r:"",(n=e.headers)!==null&&n!==void 0?n:""].join("|")}function By(){var e=function(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)};return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}var Rne=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ke=function(){return Ke=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},pQ=function(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},gQ=350,Mne=parseInt(ut.default.version.slice(0,2),10);if(Mne<16)throw Error(["GraphiQL 0.18.0 and after is not compatible with React 15 or below.","If you are using a CDN source (jsdelivr, unpkg, etc), follow this example:","https://github.com/graphql/graphiql/blob/master/examples/graphiql-cdn/index.html#L49"].join(` -`));var mQ=function(e){return JSON.stringify(e,null,2)},qne=function(e){return Ke(Ke({},e),{message:e.message,stack:e.stack})},yQ=function(e){return e instanceof ii.GraphQLError?e.toString():e instanceof Error?qne(e):e},bQ=function(e){Rne(t,e);function t(r){var n,i,o,s,l,d,h,v,y,b,D,_=e.call(this,r)||this;if(_._editorQueryID=0,_.safeSetState=function(te,ce){_.componentIsMounted&&_.setState(te,ce)},_.persistTabsState=function(){var te,ce;_.props.tabs&&(_._storage.set("tabState",JSON.stringify(_.state.tabs,function(we,ot){return we==="response"||_.state.shouldPersistHeaders&&we==="headers"?void 0:ot})),typeof _.props.tabs=="object"&&((ce=(te=_.props.tabs).onTabChange)===null||ce===void 0||ce.call(te,_.state.tabs)))},_.makeHandleOnSelectTab=function(te){return function(){_.handleStopQuery(),_.setState(function(ce){return Hne(te,ce)},function(){_.persistTabsState(),_.state.query&&_.handleEditQuery(_.state.query)})}},_.makeHandleOnCloseTab=function(te){return function(){_.state.tabs.activeTabIndex===te&&_.handleStopQuery(),_.setState(function(ce){return zne(te,ce)},_.persistTabsState)}},_.handleOnAddTab=function(){_.setState(function(te){return Wne(te)},_.persistTabsState)},_.handleClickReference=function(te){_.setState({docExplorerOpen:!0},function(){_.docExplorerComponent&&_.docExplorerComponent.showDocForReference(te)}),_._storage.set("docExplorerOpen",JSON.stringify(_.state.docExplorerOpen))},_.handleRunQuery=function(te){return Hw(_,void 0,void 0,function(){var ce,we,ot,Me,Qe,ze,mt,oe,me,fe=this;return zw(this,function(se){switch(se.label){case 0:this._editorQueryID++,ce=this._editorQueryID,we=this.autoCompleteLeafs()||this.state.query||"",ot=this.state.variables,Me=this.state.headers,Qe=this.state.shouldPersistHeaders,ze=this.state.operationName,te&&te!==ze&&(ze=te,this.handleEditOperationName(ze)),se.label=1;case 1:return se.trys.push([1,3,,4]),this.setState({isWaitingForResponse:!0,response:void 0,operationName:ze}),this._storage.set("operationName",ze),this._queryHistory?this._queryHistory.onUpdateHistory(we,ot,Me,ze):this._historyStore&&this._historyStore.updateHistory(we,ot,Me,ze),mt={data:{}},[4,this._fetchQuery(we,ot,Me,ze,Qe,function(Ue){var at,ct;if(ce===fe._editorQueryID){var st=Array.isArray(Ue)?Ue:!1;if(!st&&typeof Ue!="string"&&Ue!==null&&"hasNext"in Ue&&(st=[Ue]),st){var Dn={data:mt.data},Ei=pQ((mt==null?void 0:mt.errors)||[],st.map(function(vr){return vr.errors}).flat().filter(Boolean));Ei.length&&(Dn.errors=Ei);try{for(var dn=sh(st),Hn=dn.next();!Hn.done;Hn=dn.next()){var pn=Hn.value,Pi=pn.path,Qr=pn.data,Kt=pn.errors,hn=jne(pn,["path","data","errors"]);if(Pi){if(!Qr)throw new Error("Expected part to contain a data property, but got "+pn);(0,vQ.default)(Dn.data,Pi,Qr,{merge:!0})}else Qr&&(Dn.data=pn.data);mt=Ke(Ke({},Dn),hn)}}catch(vr){at={error:vr}}finally{try{Hn&&!Hn.done&&(ct=dn.return)&&ct.call(dn)}finally{if(at)throw at.error}}fe.setState({isWaitingForResponse:!1,response:t.formatResult(mt)})}else{var zn=t.formatResult(Ue);fe.setState(function(vr){return Ke(Ke({},vr),{tabs:Ke(Ke({},vr.tabs),{tabs:vr.tabs.tabs.map(function(Ro,xn){return xn!==vr.tabs.activeTabIndex?Ro:Ke(Ke({},Ro),{response:zn})})}),isWaitingForResponse:!1,response:zn})},fe.persistTabsState)}}})];case 2:return oe=se.sent(),this.setState({subscription:oe}),[3,4];case 3:return me=se.sent(),this.setState({isWaitingForResponse:!1,response:me.message}),[3,4];case 4:return[2]}})})},_.handleStopQuery=function(){var te=_.state.subscription;_.setState({isWaitingForResponse:!1,subscription:null}),te&&te.unsubscribe()},_.handlePrettifyQuery=function(){var te,ce,we,ot=_.getQueryEditor(),Me=(te=ot==null?void 0:ot.getValue())!==null&&te!==void 0?te:"",Qe=(0,ii.print)((0,ii.parse)(Me));Qe!==Me&&(ot==null||ot.setValue(Qe));var ze=_.getVariableEditor(),mt=(ce=ze==null?void 0:ze.getValue())!==null&&ce!==void 0?ce:"";try{var oe=JSON.stringify(JSON.parse(mt),null,2);oe!==mt&&(ze==null||ze.setValue(oe))}catch(Ue){}var me=_.getHeaderEditor(),fe=(we=me==null?void 0:me.getValue())!==null&&we!==void 0?we:"";try{var se=JSON.stringify(JSON.parse(fe),null,2);se!==fe&&(me==null||me.setValue(se))}catch(Ue){}},_.handleMergeQuery=function(){var te=_.getQueryEditor(),ce=te.getValue();if(!!ce){var we=_.state.documentAST;te.setValue((0,ii.print)(Gy(we,_.state.schema)))}},_.handleEditQuery=ji(100,function(te){var ce=_._updateQueryFacts(te,_.state.operationName,_.state.operations,_.state.schema);if(_.setState(function(we){return Ke(Ke(Ke(Ke({},we),{query:te}),ce),{tabs:Kne(te,we.tabs,ce==null?void 0:ce.operationName)})},_.persistTabsState),_._storage.set("query",te),_.props.onEditQuery)return _.props.onEditQuery(te,ce==null?void 0:ce.documentAST)}),_.handleCopyQuery=function(){var te=_.getQueryEditor(),ce=te&&te.getValue();if(!!ce&&((0,hQ.default)(ce),_.props.onCopyQuery))return _.props.onCopyQuery(ce)},_._updateQueryFacts=function(te,ce,we,ot){var Me=js(ot,te);if(Me){var Qe=ah(we,ce,Me.operations),ze=_.props.onEditOperationName;return ze&&Qe&&ce!==Qe&&ze(Qe),Ke({operationName:Qe},Me)}},_.handleEditVariables=function(te){_.setState(function(ce){return Ke(Ke({},ce),{variables:te,tabs:Bne(te,ce.tabs)})},_.persistTabsState),ji(500,function(){return _._storage.set("variables",te)})(),_.props.onEditVariables&&_.props.onEditVariables(te)},_.handleEditHeaders=function(te){_.setState(function(ce){return Ke(Ke({},ce),{headers:te,tabs:Qne(te,ce.tabs)})},_.persistTabsState),_.props.shouldPersistHeaders&&ji(500,function(){return _._storage.set("headers",te)})(),_.props.onEditHeaders&&_.props.onEditHeaders(te)},_.handleEditOperationName=function(te){var ce=_.props.onEditOperationName;ce&&ce(te)},_.handleHintInformationRender=function(te){te.addEventListener("click",_._onClickHintInformation);var ce;te.addEventListener("DOMNodeRemoved",ce=function(){te.removeEventListener("DOMNodeRemoved",ce),te.removeEventListener("click",_._onClickHintInformation)})},_.handleEditorRunQuery=function(){_._runQueryAtCursor()},_._onClickHintInformation=function(te){if((te==null?void 0:te.currentTarget)&&"className"in te.currentTarget&&te.currentTarget.className==="typeName"){var ce=te.currentTarget.innerHTML,we=_.state.schema;if(we){var ot=we.getType(ce);ot&&(_.setState({docExplorerOpen:!0},function(){_.docExplorerComponent&&_.docExplorerComponent.showDoc(ot)}),ji(500,function(){return _._storage.set("docExplorerOpen",JSON.stringify(_.state.docExplorerOpen))})())}}},_.handleToggleDocs=function(){typeof _.props.onToggleDocs=="function"&&_.props.onToggleDocs(!_.state.docExplorerOpen),_._storage.set("docExplorerOpen",JSON.stringify(!_.state.docExplorerOpen)),_.setState({docExplorerOpen:!_.state.docExplorerOpen})},_.handleToggleHistory=function(){typeof _.props.onToggleHistory=="function"&&_.props.onToggleHistory(!_.state.historyPaneOpen),_._storage.set("historyPaneOpen",JSON.stringify(!_.state.historyPaneOpen)),_.setState({historyPaneOpen:!_.state.historyPaneOpen})},_.handleSelectHistoryQuery=function(te,ce,we,ot){te&&_.handleEditQuery(te),ce&&_.handleEditVariables(ce),we&&_.handleEditHeaders(we),ot&&_.handleEditOperationName(ot)},_.handleResizeStart=function(te){if(!!_._didClickDragBar(te)){te.preventDefault();var ce=te.clientX-uh(te.target),we=function(Me){if(Me.buttons===0)return ot();var Qe=_.editorBarComponent,ze=Me.clientX-uh(Qe)-ce,mt=Qe.clientWidth-ze;_.setState({editorFlex:ze/mt}),ji(500,function(){return _._storage.set("editorFlex",JSON.stringify(_.state.editorFlex))})()},ot=function(){document.removeEventListener("mousemove",we),document.removeEventListener("mouseup",ot),we=null,ot=null};document.addEventListener("mousemove",we),document.addEventListener("mouseup",ot)}},_.handleResetResize=function(){_.setState({editorFlex:1}),_._storage.set("editorFlex",JSON.stringify(_.state.editorFlex))},_.handleDocsResizeStart=function(te){te.preventDefault();var ce=_.state.docExplorerWidth,we=te.clientX-uh(te.target),ot=function(Qe){if(Qe.buttons===0)return Me();var ze=_.graphiqlContainer,mt=Qe.clientX-uh(ze)-we,oe=ze.clientWidth-mt;oe<100?(typeof _.props.onToggleDocs=="function"&&_.props.onToggleDocs(!_.state.docExplorerOpen),_._storage.set("docExplorerOpen",JSON.stringify(_.state.docExplorerOpen)),_.setState({docExplorerOpen:!1})):(_.setState({docExplorerOpen:!0,docExplorerWidth:Math.min(oe,650)}),ji(500,function(){return _._storage.set("docExplorerWidth",JSON.stringify(_.state.docExplorerWidth))})()),_._storage.set("docExplorerOpen",JSON.stringify(_.state.docExplorerOpen))},Me=function(){_.state.docExplorerOpen||(_.setState({docExplorerWidth:ce}),ji(500,function(){return _._storage.set("docExplorerWidth",JSON.stringify(_.state.docExplorerWidth))})()),document.removeEventListener("mousemove",ot),document.removeEventListener("mouseup",Me),ot=null,Me=null};document.addEventListener("mousemove",ot),document.addEventListener("mouseup",Me)},_.handleDocsResetResize=function(){_.setState({docExplorerWidth:gQ}),ji(500,function(){return _._storage.set("docExplorerWidth",JSON.stringify(_.state.docExplorerWidth))})()},_.handleTabClickPropogation=function(te){te.preventDefault(),te.stopPropagation()},_.handleOpenHeaderEditorTab=function(te){_.setState({headerEditorActive:!0,variableEditorActive:!1,secondaryEditorOpen:!0})},_.handleOpenVariableEditorTab=function(te){_.setState({headerEditorActive:!1,variableEditorActive:!0,secondaryEditorOpen:!0})},_.handleSecondaryEditorResizeStart=function(te){te.preventDefault();var ce=!1,we=_.state.secondaryEditorOpen,ot=_.state.secondaryEditorHeight,Me=te.clientY-Qw(te.target),Qe=function(mt){if(mt.buttons===0)return ze();ce=!0;var oe=_.editorBarComponent,me=mt.clientY-Qw(oe)-Me,fe=oe.clientHeight-me;fe<60?_.setState({secondaryEditorOpen:!1,secondaryEditorHeight:ot}):_.setState({secondaryEditorOpen:!0,secondaryEditorHeight:fe}),ji(500,function(){return _._storage.set("secondaryEditorHeight",JSON.stringify(_.state.secondaryEditorHeight))})()},ze=function(){ce||_.setState({secondaryEditorOpen:!we}),document.removeEventListener("mousemove",Qe),document.removeEventListener("mouseup",ze),Qe=null,ze=null};document.addEventListener("mousemove",Qe),document.addEventListener("mouseup",ze)},typeof r.fetcher!="function")throw new TypeError("GraphiQL requires a fetcher function.");_._storage=new HG(r.storage);var k=(l=r.maxHistoryLength)!==null&&l!==void 0?l:20;_._historyStore=new Uy(_._storage,k),_.componentIsMounted=!1;var T=r.query!==void 0?r.query:_._storage.get("query")?_._storage.get("query"):r.defaultQuery!==void 0?r.defaultQuery:Vne,S=js(r.schema,T),m=r.variables!==void 0?r.variables:_._storage.get("variables"),w=r.headers!==void 0?r.headers:_._storage.get("headers"),x=r.operationName!==void 0?r.operationName:ah(void 0,_._storage.get("operationName"),S&&S.operations),L=r.docExplorerOpen||!1;_._storage.get("docExplorerOpen")&&(L=_._storage.get("docExplorerOpen")==="true");var O;r.defaultVariableEditorOpen!==void 0?O=r.defaultVariableEditorOpen:r.defaultSecondaryEditorOpen!==void 0?O=r.defaultSecondaryEditorOpen:O=Boolean(m||w);var R=(d=r.headerEditorEnabled)!==null&&d!==void 0?d:!0,M=(h=r.shouldPersistHeaders)!==null&&h!==void 0?h:!1,q=r.schema,z=r.response,B=void 0;if(q&&!_.props.dangerouslyAssumeSchemaIsValid){var Q=(0,Ky.validateSchema)(q);Q&&Q.length>0&&(z=t.formatError(Q),q=void 0,B=Q)}_._introspectionQuery=(0,ii.getIntrospectionQuery)({schemaDescription:(v=r.schemaDescription)!==null&&v!==void 0?v:void 0,inputValueDeprecation:(y=r.inputValueDeprecation)!==null&&y!==void 0?y:void 0}),_._introspectionQueryName=(b=r.introspectionQueryName)!==null&&b!==void 0?b:JG,_._introspectionQuerySansSubscriptions=_._introspectionQuery.replace("subscriptionType { name }","");var P=Uu({query:T,variables:m,headers:w}),he={id:By(),hash:P,title:x!=null?x:"",query:T,variables:m,headers:w,operationName:x,response:void 0},xe=null;_.props.tabs&&(xe=_._storage.get("tabState"));var ge;if(xe===null)ge={activeTabIndex:0,tabs:[he]};else{ge=JSON.parse(xe);var Fe=!1;try{for(var Le=sh(ge.tabs),He=Le.next();!He.done;He=Le.next()){var Xe=He.value;Xe.query=Xe.query,Xe.variables=Xe.variables,Xe.headers=M?Xe.headers:void 0,Xe.response=void 0,Xe.operationName=void 0,Xe.id=By(),Xe.hash=Uu(Xe),Xe.hash===P&&(Fe=!0)}}catch(te){n={error:te}}finally{try{He&&!He.done&&(i=Le.return)&&i.call(Le)}finally{if(n)throw n.error}}Fe===!1&&(ge.tabs.push(he),ge.activeTabIndex=ge.tabs.length-1)}var Ve=ge.tabs[0],At=0;try{for(var Ot=sh(ge.tabs),Ie=Ot.next();!Ie.done;Ie=Ot.next()){var Xe=Ie.value;if(Xe.hash===P){ge.activeTabIndex=At,Ve=Xe;break}At++}}catch(te){o={error:te}}finally{try{Ie&&!Ie.done&&(s=Ot.return)&&s.call(Ot)}finally{if(o)throw o.error}}return _.state=Ke({tabs:ge,schema:q,query:Ve==null?void 0:Ve.query,variables:Ve==null?void 0:Ve.variables,headers:Ve==null?void 0:Ve.headers,operationName:Ve==null?void 0:Ve.operationName,response:(D=Ve==null?void 0:Ve.response)!==null&&D!==void 0?D:z,docExplorerOpen:L,schemaErrors:B,editorFlex:Number(_._storage.get("editorFlex"))||1,secondaryEditorOpen:O,secondaryEditorHeight:Number(_._storage.get("secondaryEditorHeight"))||200,variableEditorActive:_._storage.get("variableEditorActive")==="true"||r.headerEditorEnabled?_._storage.get("headerEditorActive")!=="true":!0,headerEditorActive:_._storage.get("headerEditorActive")==="true",headerEditorEnabled:R,shouldPersistHeaders:M,historyPaneOpen:_._storage.get("historyPaneOpen")==="true"||!1,docExplorerWidth:Number(_._storage.get("docExplorerWidth"))||gQ,isWaitingForResponse:!1,subscription:null,maxHistoryLength:k},S),_.state.query&&_.handleEditQuery(_.state.query),_}return t.formatResult=function(r){return JSON.stringify(r,null,2)},t.prototype.componentDidMount=function(){this.componentIsMounted=!0,this.state.schema===void 0&&this.fetchSchema(),this.codeMirrorSizer=new KG,typeof window!="undefined"&&(window.g=this)},t.prototype.UNSAFE_componentWillMount=function(){this.componentIsMounted=!1},t.prototype.UNSAFE_componentWillReceiveProps=function(r){var n=this,i=this.state.schema,o=this.state.query,s=this.state.variables,l=this.state.headers,d=this.state.operationName,h=this.state.response;if(r.schema!==void 0&&(i=r.schema),r.query!==void 0&&this.props.query!==r.query&&(o=r.query),r.variables!==void 0&&this.props.variables!==r.variables&&(s=r.variables),r.headers!==void 0&&this.props.headers!==r.headers&&(l=r.headers),r.operationName!==void 0&&(d=r.operationName),r.response!==void 0&&(h=r.response),o&&i&&(i!==this.state.schema||o!==this.state.query||d!==this.state.operationName)){if(!this.props.dangerouslyAssumeSchemaIsValid){var v=(0,Ky.validateSchema)(i);v&&v.length>0&&(this.handleSchemaErrors(v),i=void 0)}var y=this._updateQueryFacts(o,d,this.state.operations,i);y!==void 0&&(d=y.operationName,this.setState(y))}r.schema===void 0&&r.fetcher!==this.props.fetcher&&(i=void 0),this._storage.set("operationName",d),this.setState({schema:i,query:o,variables:s,headers:l,operationName:d,response:h},function(){n.state.schema===void 0&&(n.docExplorerComponent&&n.docExplorerComponent.reset(),n.fetchSchema())})},t.prototype.componentDidUpdate=function(){this.codeMirrorSizer.updateSizes([this.queryEditorComponent,this.variableEditorComponent,this.headerEditorComponent,this.resultComponent])},t.prototype.render=function(){var r=this,n,i=ut.default.Children.toArray(this.props.children),o=oh(i,function(k){return Ww(k,t.Logo)})||ut.default.createElement(t.Logo,null),s=oh(i,function(k){return Ww(k,t.Toolbar)})||ut.default.createElement(t.Toolbar,null,ut.default.createElement(Lu,{onClick:this.handlePrettifyQuery,title:"Prettify Query (Shift-Ctrl-P)",label:"Prettify"}),ut.default.createElement(Lu,{onClick:this.handleMergeQuery,title:"Merge Query (Shift-Ctrl-M)",label:"Merge"}),ut.default.createElement(Lu,{onClick:this.handleCopyQuery,title:"Copy Query (Shift-Ctrl-C)",label:"Copy"}),ut.default.createElement(Lu,{onClick:this.handleToggleHistory,title:"Show History",label:"History"}),((n=this.props.toolbar)===null||n===void 0?void 0:n.additionalContent)?this.props.toolbar.additionalContent:null),l=oh(i,function(k){return Ww(k,t.Footer)}),d={WebkitFlex:this.state.editorFlex,flex:this.state.editorFlex},h={display:"block",width:this.state.docExplorerWidth},v="docExplorerWrap"+(this.state.docExplorerWidth<200?" doc-explorer-narrow":""),y={display:this.state.historyPaneOpen?"block":"none",width:"230px",zIndex:7},b=this.state.secondaryEditorOpen,D={height:b?this.state.secondaryEditorHeight:void 0},_=this.state.tabs;return ut.default.createElement("div",{ref:function(k){r.graphiqlContainer=k},"data-testid":"graphiql-container",className:"graphiql-container"},this.state.historyPaneOpen&&ut.default.createElement("div",{className:"historyPaneWrap",style:y},ut.default.createElement(BG,{ref:function(k){r._queryHistory=k},operationName:this.state.operationName,query:this.state.query,variables:this.state.variables,onSelectQuery:this.handleSelectHistoryQuery,storage:this._storage,maxHistoryLength:this.state.maxHistoryLength,queryID:this._editorQueryID},ut.default.createElement("button",{className:"docExplorerHide",onClick:this.handleToggleHistory,"aria-label":"Close History"},"\u2715"))),ut.default.createElement("div",{className:"editorWrap"},ut.default.createElement("div",{className:"topBarWrap"},this.props.beforeTopBarContent,ut.default.createElement("div",{className:"topBar"},o,ut.default.createElement(lF,{isRunning:Boolean(this.state.subscription),onRun:this.handleRunQuery,onStop:this.handleStopQuery,operations:this.state.operations}),s),!this.state.docExplorerOpen&&ut.default.createElement("button",{className:"docExplorerShow",onClick:this.handleToggleDocs,"aria-label":"Open Documentation Explorer"},"Docs")),this.props.tabs?ut.default.createElement(fQ,{tabsProps:{"aria-label":"Select active operation"}},_.tabs.map(function(k,T){return ut.default.createElement(lQ,{key:k.id,isActive:T===_.activeTabIndex,title:k.title,isCloseable:_.tabs.length>1,onSelect:r.makeHandleOnSelectTab(T),onClose:r.makeHandleOnCloseTab(T),tabProps:{"aria-controls":"sessionWrap",id:"session-tab-"+T}})}),ut.default.createElement(cQ,{onClick:this.handleOnAddTab})):null,ut.default.createElement("div",{ref:function(k){r.editorBarComponent=k},role:"tabpanel",id:"sessionWrap",className:"editorBar","aria-labelledby":"session-tab-"+_.activeTabIndex,onDoubleClick:this.handleResetResize,onMouseDown:this.handleResizeStart},ut.default.createElement("div",{className:"queryWrap",style:d},ut.default.createElement(wy,{ref:function(k){r.queryEditorComponent=k},schema:this.state.schema,validationRules:this.props.validationRules,value:this.state.query,onEdit:this.handleEditQuery,onHintInformationRender:this.handleHintInformationRender,onClickReference:this.handleClickReference,onCopyQuery:this.handleCopyQuery,onPrettifyQuery:this.handlePrettifyQuery,onMergeQuery:this.handleMergeQuery,onRunQuery:this.handleEditorRunQuery,editorTheme:this.props.editorTheme,readOnly:this.props.readOnly,externalFragments:this.props.externalFragments}),ut.default.createElement("section",{className:"variable-editor secondary-editor",style:D,"aria-label":this.state.variableEditorActive?"Query Variables":"Request Headers"},ut.default.createElement("div",{className:"secondary-editor-title variable-editor-title",id:"secondary-editor-title",style:{cursor:b?"row-resize":"n-resize"},onMouseDown:this.handleSecondaryEditorResizeStart},ut.default.createElement("div",{className:"variable-editor-title-text"+(this.state.variableEditorActive?" active":""),onClick:this.handleOpenVariableEditorTab,onMouseDown:this.handleTabClickPropogation},"Query Variables"),this.state.headerEditorEnabled&&ut.default.createElement("div",{style:{marginLeft:"20px"},className:"variable-editor-title-text"+(this.state.headerEditorActive?" active":""),onClick:this.handleOpenHeaderEditorTab,onMouseDown:this.handleTabClickPropogation},"Request Headers")),ut.default.createElement(Ry,{ref:function(k){r.variableEditorComponent=k},value:this.state.variables,variableToType:this.state.variableToType,onEdit:this.handleEditVariables,onHintInformationRender:this.handleHintInformationRender,onPrettifyQuery:this.handlePrettifyQuery,onMergeQuery:this.handleMergeQuery,onRunQuery:this.handleEditorRunQuery,editorTheme:this.props.editorTheme,readOnly:this.props.readOnly,active:this.state.variableEditorActive}),this.state.headerEditorEnabled&&ut.default.createElement(Dw,{ref:function(k){r.headerEditorComponent=k},value:this.state.headers,onEdit:this.handleEditHeaders,onHintInformationRender:this.handleHintInformationRender,onPrettifyQuery:this.handlePrettifyQuery,onMergeQuery:this.handleMergeQuery,onRunQuery:this.handleEditorRunQuery,editorTheme:this.props.editorTheme,readOnly:this.props.readOnly,active:this.state.headerEditorActive}))),ut.default.createElement("div",{className:"resultWrap"},this.state.isWaitingForResponse&&ut.default.createElement("div",{className:"spinner-container"},ut.default.createElement("div",{className:"spinner"})),ut.default.createElement(Cw,{registerRef:function(k){r.resultViewerElement=k},ref:function(k){r.resultComponent=k},value:this.state.response,editorTheme:this.props.editorTheme,ResultsTooltip:this.props.ResultsTooltip,ImagePreview:fF}),l))),this.state.docExplorerOpen&&ut.default.createElement("div",{className:v,style:h},ut.default.createElement("div",{className:"docExplorerResizer",onDoubleClick:this.handleDocsResetResize,onMouseDown:this.handleDocsResizeStart}),ut.default.createElement(qw,{ref:function(k){r.docExplorerComponent=k},schemaErrors:this.state.schemaErrors,schema:this.state.schema},ut.default.createElement("button",{className:"docExplorerHide",onClick:this.handleToggleDocs,"aria-label":"Close Documentation Explorer"},"\u2715"))))},t.prototype.getQueryEditor=function(){if(this.queryEditorComponent)return this.queryEditorComponent.getCodeMirror()},t.prototype.getVariableEditor=function(){return this.variableEditorComponent?this.variableEditorComponent.getCodeMirror():null},t.prototype.getHeaderEditor=function(){return this.headerEditorComponent?this.headerEditorComponent.getCodeMirror():null},t.prototype.refresh=function(){this.queryEditorComponent&&this.queryEditorComponent.getCodeMirror().refresh(),this.variableEditorComponent&&this.variableEditorComponent.getCodeMirror().refresh(),this.headerEditorComponent&&this.headerEditorComponent.getCodeMirror().refresh(),this.resultComponent&&this.resultComponent.getCodeMirror().refresh()},t.prototype.autoCompleteLeafs=function(){var r=Gw(this.state.schema,this.state.query,this.props.getDefaultFieldNames),n=r.insertions,i=r.result;if(n&&n.length>0){var o=this.getQueryEditor();o&&o.operation(function(){var s=o.getCursor(),l=o.indexFromPos(s);o.setValue(i||"");var d=0,h=n.map(function(y){var b=y.index,D=y.string;return o.markText(o.posFromIndex(b+d),o.posFromIndex(b+(d+=D.length)),{className:"autoInsertedLeaf",clearOnEnter:!0,title:"Automatically added leaf fields"})});setTimeout(function(){return h.forEach(function(y){return y.clear()})},7e3);var v=l;n.forEach(function(y){var b=y.index,D=y.string;b2?i.headers=JSON.parse(this.state.headers):this.props.headers&&(i.headers=JSON.parse(this.props.headers))}catch(s){this.setState({response:"Introspection failed as headers are invalid."});return}var o=wQ(n({query:this._introspectionQuery,operationName:this._introspectionQueryName},i));if(!SQ(o)){this.setState({response:"Fetcher did not return a Promise for introspection."});return}o.then(function(s){if(typeof s!="string"&&"data"in s)return s;var l=wQ(n({query:r._introspectionQuerySansSubscriptions,operationName:r._introspectionQueryName},i));if(!SQ(o))throw new Error("Fetcher did not return a Promise for introspection.");return l}).then(function(s){var l,d;if(r.state.schema===void 0)if(s&&s.data&&"__schema"in(s==null?void 0:s.data)){var h=(0,ii.buildClientSchema)(s.data);if(!r.props.dangerouslyAssumeSchemaIsValid){var v=(0,Ky.validateSchema)(h);v&&v.length>0&&(h=void 0,r.handleSchemaErrors(v))}if(h){var y=js(h,r.state.query);r.safeSetState(Ke(Ke({schema:h},y),{schemaErrors:void 0})),(d=(l=r.props).onSchemaChange)===null||d===void 0||d.call(l,h)}}else{var b=typeof s=="string"?s:t.formatResult(s);r.handleSchemaErrors([b])}}).catch(function(s){r.handleSchemaErrors([s])})},t.prototype.handleSchemaErrors=function(r){this.safeSetState({response:r?t.formatError(r):void 0,schema:void 0,schemaErrors:r})},t.prototype._fetchQuery=function(r,n,i,o,s,l){return Hw(this,void 0,void 0,function(){var d,h,v,y,b,D,_=this;return zw(this,function(k){d=this.props.fetcher,h=null,v=null;try{h=n&&n.trim()!==""?JSON.parse(n):null}catch(T){throw new Error("Variables are invalid JSON: "+T.message+".")}if(typeof h!="object")throw new Error("Variables are not a JSON object.");try{v=i&&i.trim()!==""?JSON.parse(i):null}catch(T){throw new Error("Headers are invalid JSON: "+T.message+".")}if(typeof v!="object")throw new Error("Headers are not a JSON object.");return this.props.externalFragments&&(y=new Map,Array.isArray(this.props.externalFragments)?this.props.externalFragments.forEach(function(T){y.set(T.name.value,T)}):(0,ii.visit)((0,ii.parse)(this.props.externalFragments,{}),{FragmentDefinition:function(T){y.set(T.name.value,T)}}),b=qm(this.state.documentAST,y),b.length>0&&(r+=` -`+b.map(function(T){return(0,ii.print)(T)}).join(` -`))),D=d({query:r,variables:h,operationName:o},{headers:v,shouldPersistHeaders:s,documentAST:this.state.documentAST}),[2,Promise.resolve(D).then(function(T){if(kQ(T)){var S=T.subscribe({next:l,error:function(m){_.safeSetState({isWaitingForResponse:!1,response:m?t.formatError(m):void 0,subscription:null})},complete:function(){_.safeSetState({isWaitingForResponse:!1,subscription:null})}});return S}else return OQ(T)?(function(){return Hw(_,void 0,void 0,function(){var m,w,x,L,O,R,M;return zw(this,function(q){switch(q.label){case 0:q.trys.push([0,13,,14]),q.label=1;case 1:q.trys.push([1,6,7,12]),m=Pne(T),q.label=2;case 2:return[4,m.next()];case 3:if(w=q.sent(),!!w.done)return[3,5];x=w.value,l(x),q.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return L=q.sent(),R={error:L},[3,12];case 7:return q.trys.push([7,,10,11]),w&&!w.done&&(M=m.return)?[4,M.call(m)]:[3,9];case 8:q.sent(),q.label=9;case 9:return[3,11];case 10:if(R)throw R.error;return[7];case 11:return[7];case 12:return this.safeSetState({isWaitingForResponse:!1,subscription:null}),[3,14];case 13:return O=q.sent(),this.safeSetState({isWaitingForResponse:!1,response:O?t.formatError(O):void 0,subscription:null}),[3,14];case 14:return[2]}})})}(),{unsubscribe:function(){var m,w;return(w=(m=T[Symbol.asyncIterator]()).return)===null||w===void 0?void 0:w.call(m)}}):(l(T),null)}).catch(function(T){return _.safeSetState({isWaitingForResponse:!1,response:T?t.formatError(T):void 0}),null})]})})},t.prototype._runQueryAtCursor=function(){if(this.state.subscription){this.handleStopQuery();return}var r,n=this.state.operations;if(n){var i=this.getQueryEditor();if(i&&i.hasFocus())for(var o=i.getCursor(),s=i.indexFromPos(o),l=0;l=s){r=d.name&&d.name.value;break}}}this.handleRunQuery(r)},t.prototype._didClickDragBar=function(r){if(r.button!==0||r.ctrlKey)return!1;var n=r.target;if(n.className.indexOf("CodeMirror-gutter")!==0)return!1;for(var i=this.resultViewerElement;n;){if(n===i)return!0;n=n.parentNode}return!1},t.formatError=function(r){return Array.isArray(r)?mQ({errors:r.map(function(n){return yQ(n)})}):mQ({errors:yQ(r)})},t.Logo=TQ,t.Toolbar=_Q,t.Footer=EQ,t.QueryEditor=wy,t.VariableEditor=Ry,t.HeaderEditor=Dw,t.ResultViewer=Cw,t.Button=Lu,t.ToolbarButton=Lu,t.Group=rO,t.Menu=nO,t.MenuItem=iO,t}(ut.default.Component);function TQ(e){return ut.default.createElement("div",{className:"title"},e.children||ut.default.createElement("span",null,"Graph",ut.default.createElement("em",null,"i"),"QL"))}TQ.displayName="GraphiQLLogo";function _Q(e){return ut.default.createElement("div",{className:"toolbar",role:"toolbar","aria-label":"Editor Commands"},e.children)}_Q.displayName="GraphiQLToolbar";function EQ(e){return ut.default.createElement("div",{className:"footer"},e.children)}EQ.displayName="GraphiQLFooter";var Vne=`# Welcome to GraphiQL -# -# GraphiQL is an in-browser tool for writing, validating, and -# testing GraphQL queries. -# -# Type queries into this side of the screen, and you will see intelligent -# typeaheads aware of the current GraphQL type schema and live syntax and -# validation errors highlighted within the text. -# -# GraphQL queries typically start with a "{" character. Lines that start -# with a # are ignored. -# -# An example GraphQL query might look like: -# -# { -# field(arg: "value") { -# subField -# } -# } -# -# Keyboard shortcuts: -# -# Prettify Query: Shift-Ctrl-P (or press the prettify button above) -# -# Merge Query: Shift-Ctrl-M (or press the merge button above) -# -# Run Query: Ctrl-Enter (or press the play button above) -# -# Auto Complete: Ctrl-Space (or just start typing) -# - -`;function SQ(e){return typeof e=="object"&&typeof e.then=="function"}function Une(e){return new Promise(function(t,r){var n=e.subscribe({next:function(i){t(i),n.unsubscribe()},error:r,complete:function(){r(new Error("no value resolved"))}})})}function kQ(e){return typeof e=="object"&&"subscribe"in e&&typeof e.subscribe=="function"}function OQ(e){return typeof e=="object"&&e!==null&&(e[Symbol.toStringTag]==="AsyncGenerator"||Symbol.asyncIterator in e)}function Gne(e){return new Promise(function(t,r){var n,i=(n=("return"in e?e:e[Symbol.asyncIterator]()).return)===null||n===void 0?void 0:n.bind(e),o=("next"in e?e:e[Symbol.asyncIterator]()).next.bind(e);o().then(function(s){t(s.value),i==null||i()}).catch(function(s){r(s)})})}function wQ(e){return Promise.resolve(e).then(function(t){return OQ(t)?Gne(t):kQ(t)?Une(t):t})}function Ww(e,t){var r;return((r=e==null?void 0:e.type)===null||r===void 0?void 0:r.displayName)&&e.type.displayName===t.displayName?!0:e.type===t}function Qne(e,t){return Ke(Ke({},t),{tabs:t.tabs.map(function(r,n){return n!==t.activeTabIndex?r:Ke(Ke({},r),{headers:e,hash:Uu({query:r.query,headers:e,variables:r.variables})})})})}function Bne(e,t){return Ke(Ke({},t),{tabs:t.tabs.map(function(r,n){return n!==t.activeTabIndex?r:Ke(Ke({},r),{variables:e,hash:Uu({query:r.query,headers:r.headers,variables:e})})})})}function Kne(e,t,r){return Ke(Ke({},t),{tabs:t.tabs.map(function(n,i){return i!==t.activeTabIndex?n:Ke(Ke({},n),{title:r!=null?r:dQ(e),query:e,hash:Uu({query:e,headers:n.headers,variables:n.variables})})})})}function Hne(e,t){var r=t.tabs.activeTabIndex,n=t.tabs.tabs.map(function(o,s){return s!==r?o:Ke(Ke({},o),{query:t.query,variables:t.variables,operationName:t.operationName,headers:t.headers,response:t.response,hash:Uu({query:t.query,variables:t.variables,headers:t.headers})})}),i=t.tabs.tabs[e];return Ke(Ke({},t),{query:i.query,variables:i.variables,operationName:i.operationName,headers:i.headers,response:i.response,tabs:Ke(Ke({},t.tabs),{tabs:n,activeTabIndex:e})})}function zne(e,t){var r=t.tabs.activeTabIndex>0?t.tabs.activeTabIndex-1:0,n=Ke(Ke({},t.tabs),{activeTabIndex:r,tabs:t.tabs.tabs.filter(function(o,s){return e!==s})}),i=n.tabs[r];return Ke(Ke({},t),{query:i.query,variables:i.variables,operationName:i.operationName,headers:i.headers,response:i.response,tabs:n})}function Wne(e){var t=e.tabs.activeTabIndex,r={id:By(),title:"",headers:"",variables:"",query:"",operationName:"",response:"",hash:Uu({query:"",variables:"",headers:""})},n=e.tabs.tabs.map(function(i,o){return o!==t?i:Ke(Ke({},i),{headers:e.headers,variables:e.variables,query:e.query,operationName:e.operationName,response:e.response})});return Ke(Ke({},e),{headers:r.headers,variables:r.variables,query:r.query,operationName:r.operationName,response:r.response,tabs:Ke(Ke({},e.tabs),{activeTabIndex:e.tabs.tabs.length,tabs:pQ(n,[r])})})}var oa=Ee(zt()),Yne=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yw=function(){return Yw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-primitive - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * isobject - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * set-value - * - * Copyright (c) Jon Schlinkert (https://github.com/jonschlinkert). - * Released under the MIT License. - */ -/** @license React v0.20.2 - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** @license React v17.0.2 - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** @license React v17.0.2 - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ diff --git a/netbox/project-static/dist/graphiql.js.map b/netbox/project-static/dist/graphiql.js.map deleted file mode 100644 index 23c20b9a45f..00000000000 --- a/netbox/project-static/dist/graphiql.js.map +++ /dev/null @@ -1,6 +0,0 @@ -{ - "version": 3, - "sources": ["../node_modules/object-assign/index.js", "../node_modules/react/cjs/react.production.min.js", "../node_modules/react/index.js", "../node_modules/scheduler/cjs/scheduler.production.min.js", "../node_modules/scheduler/index.js", "../node_modules/react-dom/cjs/react-dom.production.min.js", "../node_modules/react-dom/index.js", "../node_modules/graphql/version.js", "../node_modules/graphql/jsutils/isPromise.js", "../node_modules/graphql/jsutils/isObjectLike.js", "../node_modules/graphql/polyfills/symbols.js", "../node_modules/graphql/language/location.js", "../node_modules/graphql/language/printLocation.js", "../node_modules/graphql/error/GraphQLError.js", "../node_modules/graphql/error/syntaxError.js", "../node_modules/graphql/language/kinds.js", "../node_modules/graphql/jsutils/invariant.js", "../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js", "../node_modules/graphql/jsutils/defineInspect.js", "../node_modules/graphql/language/ast.js", "../node_modules/graphql/language/tokenKind.js", "../node_modules/graphql/jsutils/inspect.js", "../node_modules/graphql/jsutils/devAssert.js", "../node_modules/graphql/jsutils/instanceOf.js", "../node_modules/graphql/language/source.js", "../node_modules/graphql/language/directiveLocation.js", "../node_modules/graphql/language/blockString.js", "../node_modules/graphql/language/lexer.js", "../node_modules/graphql/language/parser.js", "../node_modules/graphql/language/visitor.js", "../node_modules/graphql/polyfills/find.js", "../node_modules/graphql/polyfills/objectValues.js", "../node_modules/graphql/error/locatedError.js", "../node_modules/graphql/utilities/assertValidName.js", "../node_modules/graphql/polyfills/objectEntries.js", "../node_modules/graphql/jsutils/keyMap.js", "../node_modules/graphql/jsutils/mapValue.js", "../node_modules/graphql/jsutils/toObjMap.js", "../node_modules/graphql/jsutils/keyValMap.js", "../node_modules/graphql/jsutils/didYouMean.js", "../node_modules/graphql/jsutils/identityFunc.js", "../node_modules/graphql/jsutils/naturalCompare.js", "../node_modules/graphql/jsutils/suggestionList.js", "../node_modules/graphql/language/printer.js", "../node_modules/graphql/utilities/valueFromASTUntyped.js", "../node_modules/graphql/type/definition.js", "../node_modules/graphql/utilities/typeComparators.js", "../node_modules/graphql/polyfills/arrayFrom.js", "../node_modules/graphql/polyfills/isFinite.js", "../node_modules/graphql/jsutils/safeArrayFrom.js", "../node_modules/graphql/polyfills/isInteger.js", "../node_modules/graphql/type/scalars.js", "../node_modules/graphql/utilities/astFromValue.js", "../node_modules/graphql/type/introspection.js", "../node_modules/graphql/type/directives.js", "../node_modules/graphql/type/schema.js", "../node_modules/graphql/type/validate.js", "../node_modules/graphql/utilities/typeFromAST.js", "../node_modules/graphql/utilities/TypeInfo.js", "../node_modules/graphql/language/predicates.js", "../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js", "../node_modules/graphql/validation/rules/UniqueOperationNamesRule.js", "../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js", "../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js", "../node_modules/graphql/validation/rules/KnownTypeNamesRule.js", "../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js", "../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js", "../node_modules/graphql/validation/rules/ScalarLeafsRule.js", "../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js", "../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js", "../node_modules/graphql/validation/rules/KnownFragmentNamesRule.js", "../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js", "../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js", "../node_modules/graphql/validation/rules/NoFragmentCyclesRule.js", "../node_modules/graphql/validation/rules/UniqueVariableNamesRule.js", "../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js", "../node_modules/graphql/validation/rules/NoUnusedVariablesRule.js", "../node_modules/graphql/validation/rules/KnownDirectivesRule.js", "../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js", "../node_modules/graphql/validation/rules/KnownArgumentNamesRule.js", "../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js", "../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js", "../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js", "../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js", "../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js", "../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js", "../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js", "../node_modules/graphql/validation/rules/UniqueOperationTypesRule.js", "../node_modules/graphql/validation/rules/UniqueTypeNamesRule.js", "../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js", "../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js", "../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js", "../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js", "../node_modules/graphql/validation/specifiedRules.js", "../node_modules/graphql/validation/ValidationContext.js", "../node_modules/graphql/validation/validate.js", "../node_modules/graphql/jsutils/memoize3.js", "../node_modules/graphql/jsutils/promiseReduce.js", "../node_modules/graphql/jsutils/promiseForObject.js", "../node_modules/graphql/jsutils/Path.js", "../node_modules/graphql/utilities/getOperationRootType.js", "../node_modules/graphql/jsutils/printPathArray.js", "../node_modules/graphql/utilities/valueFromAST.js", "../node_modules/graphql/utilities/coerceInputValue.js", "../node_modules/graphql/execution/values.js", "../node_modules/graphql/execution/execute.js", "../node_modules/graphql/graphql.js", "../node_modules/graphql/type/index.js", "../node_modules/graphql/language/index.js", "../node_modules/graphql/execution/index.js", "../node_modules/graphql/jsutils/isAsyncIterable.js", "../node_modules/graphql/subscription/mapAsyncIterator.js", "../node_modules/graphql/subscription/subscribe.js", "../node_modules/graphql/subscription/index.js", "../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js", "../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js", "../node_modules/graphql/validation/index.js", "../node_modules/graphql/error/formatError.js", "../node_modules/graphql/error/index.js", "../node_modules/graphql/utilities/getIntrospectionQuery.js", "../node_modules/graphql/utilities/getOperationAST.js", "../node_modules/graphql/utilities/introspectionFromSchema.js", "../node_modules/graphql/utilities/buildClientSchema.js", "../node_modules/graphql/utilities/extendSchema.js", "../node_modules/graphql/utilities/buildASTSchema.js", "../node_modules/graphql/utilities/lexicographicSortSchema.js", "../node_modules/graphql/utilities/printSchema.js", "../node_modules/graphql/utilities/concatAST.js", "../node_modules/graphql/utilities/separateOperations.js", "../node_modules/graphql/utilities/stripIgnoredCharacters.js", "../node_modules/graphql/utilities/findBreakingChanges.js", "../node_modules/graphql/utilities/findDeprecatedUsages.js", "../node_modules/graphql/utilities/index.js", "../node_modules/graphql/index.js", "../node_modules/toggle-selection/index.js", "../node_modules/copy-to-clipboard/index.js", "../node_modules/nullthrows/nullthrows.js", "../node_modules/markdown-it/lib/common/entities.js", "../node_modules/uc.micro/categories/P/regex.js", "../node_modules/mdurl/encode.js", "../node_modules/mdurl/decode.js", "../node_modules/mdurl/format.js", "../node_modules/mdurl/parse.js", "../node_modules/mdurl/index.js", "../node_modules/uc.micro/properties/Any/regex.js", "../node_modules/uc.micro/categories/Cc/regex.js", "../node_modules/uc.micro/categories/Cf/regex.js", "../node_modules/uc.micro/categories/Z/regex.js", "../node_modules/uc.micro/index.js", "../node_modules/markdown-it/lib/common/utils.js", "../node_modules/markdown-it/lib/helpers/parse_link_label.js", "../node_modules/markdown-it/lib/helpers/parse_link_destination.js", "../node_modules/markdown-it/lib/helpers/parse_link_title.js", "../node_modules/markdown-it/lib/helpers/index.js", "../node_modules/markdown-it/lib/renderer.js", "../node_modules/markdown-it/lib/ruler.js", "../node_modules/markdown-it/lib/rules_core/normalize.js", "../node_modules/markdown-it/lib/rules_core/block.js", "../node_modules/markdown-it/lib/rules_core/inline.js", "../node_modules/markdown-it/lib/rules_core/linkify.js", "../node_modules/markdown-it/lib/rules_core/replacements.js", "../node_modules/markdown-it/lib/rules_core/smartquotes.js", "../node_modules/markdown-it/lib/token.js", "../node_modules/markdown-it/lib/rules_core/state_core.js", "../node_modules/markdown-it/lib/parser_core.js", "../node_modules/markdown-it/lib/rules_block/table.js", "../node_modules/markdown-it/lib/rules_block/code.js", "../node_modules/markdown-it/lib/rules_block/fence.js", "../node_modules/markdown-it/lib/rules_block/blockquote.js", "../node_modules/markdown-it/lib/rules_block/hr.js", "../node_modules/markdown-it/lib/rules_block/list.js", "../node_modules/markdown-it/lib/rules_block/reference.js", "../node_modules/markdown-it/lib/common/html_blocks.js", "../node_modules/markdown-it/lib/common/html_re.js", "../node_modules/markdown-it/lib/rules_block/html_block.js", "../node_modules/markdown-it/lib/rules_block/heading.js", "../node_modules/markdown-it/lib/rules_block/lheading.js", "../node_modules/markdown-it/lib/rules_block/paragraph.js", "../node_modules/markdown-it/lib/rules_block/state_block.js", "../node_modules/markdown-it/lib/parser_block.js", "../node_modules/markdown-it/lib/rules_inline/text.js", "../node_modules/markdown-it/lib/rules_inline/newline.js", "../node_modules/markdown-it/lib/rules_inline/escape.js", "../node_modules/markdown-it/lib/rules_inline/backticks.js", "../node_modules/markdown-it/lib/rules_inline/strikethrough.js", "../node_modules/markdown-it/lib/rules_inline/emphasis.js", "../node_modules/markdown-it/lib/rules_inline/link.js", "../node_modules/markdown-it/lib/rules_inline/image.js", "../node_modules/markdown-it/lib/rules_inline/autolink.js", "../node_modules/markdown-it/lib/rules_inline/html_inline.js", "../node_modules/markdown-it/lib/rules_inline/entity.js", "../node_modules/markdown-it/lib/rules_inline/balance_pairs.js", "../node_modules/markdown-it/lib/rules_inline/text_collapse.js", "../node_modules/markdown-it/lib/rules_inline/state_inline.js", "../node_modules/markdown-it/lib/parser_inline.js", "../node_modules/linkify-it/lib/re.js", "../node_modules/linkify-it/index.js", "../node_modules/punycode/punycode.js", "../node_modules/markdown-it/lib/presets/default.js", "../node_modules/markdown-it/lib/presets/zero.js", "../node_modules/markdown-it/lib/presets/commonmark.js", "../node_modules/markdown-it/lib/index.js", "../node_modules/markdown-it/index.js", "../node_modules/escape-html/index.js", "../node_modules/codemirror/lib/codemirror.js", "../node_modules/codemirror/addon/hint/show-hint.js", "../node_modules/codemirror/addon/edit/matchbrackets.js", "../node_modules/codemirror/addon/edit/closebrackets.js", "../node_modules/codemirror/addon/fold/brace-fold.js", "../node_modules/codemirror/addon/fold/foldcode.js", "../node_modules/codemirror/addon/fold/foldgutter.js", "../node_modules/codemirror/addon/lint/lint.js", "../node_modules/codemirror/addon/search/searchcursor.js", "../node_modules/codemirror/addon/dialog/dialog.js", "../node_modules/codemirror/addon/search/jump-to-line.js", "../node_modules/codemirror/keymap/sublime.js", "../node_modules/codemirror/addon/comment/comment.js", "../node_modules/codemirror/addon/search/search.js", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/autocompleteUtils.ts", "../node_modules/codemirror-graphql/node_modules/vscode-languageserver-types/lib/umd/main.js", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/CharacterStream.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/RuleHelpers.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/Rules.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/onlineParser.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/types.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getAutocompleteSuggestions.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/fragmentDependencies.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getVariablesJSONSchema.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getASTNodeAtPosition.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/Range.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/validateWithCustomRules.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/collectVariables.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getOperationFacts.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getDefinition.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getDiagnostics.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getOutline.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getHoverInformation.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/types.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/index.ts", "../node_modules/codemirror-graphql/src/hint.ts", "../node_modules/codemirror-graphql/src/lint.ts", "../node_modules/codemirror-graphql/src/utils/forEachState.ts", "../node_modules/codemirror-graphql/src/utils/getTypeInfo.ts", "../node_modules/codemirror-graphql/src/utils/SchemaReference.ts", "../node_modules/codemirror-graphql/src/utils/info-addon.ts", "../node_modules/codemirror-graphql/src/info.ts", "../node_modules/codemirror-graphql/src/utils/jump-addon.ts", "../node_modules/codemirror-graphql/src/jump.ts", "../node_modules/codemirror-graphql/src/utils/mode-indent.ts", "../node_modules/codemirror-graphql/src/utils/mode-factory.ts", "../node_modules/codemirror-graphql/src/mode.ts", "../node_modules/codemirror-graphql/src/utils/hintList.ts", "../node_modules/codemirror-graphql/src/variables/hint.ts", "../node_modules/codemirror-graphql/src/utils/jsonParse.ts", "../node_modules/codemirror-graphql/src/variables/lint.ts", "../node_modules/codemirror-graphql/src/variables/mode.ts", "../node_modules/codemirror/mode/javascript/javascript.js", "../node_modules/codemirror-graphql/src/results/mode.ts", "../node_modules/is-primitive/index.js", "../node_modules/isobject/index.js", "../node_modules/is-plain-object/index.js", "../node_modules/set-value/index.js", "../node_modules/backo2/index.js", "../node_modules/eventemitter3/index.js", "../node_modules/subscriptions-transport-ws/src/utils/is-string.ts", "../node_modules/subscriptions-transport-ws/src/utils/is-object.ts", "../node_modules/symbol-observable/lib/ponyfill.js", "../node_modules/symbol-observable/lib/index.js", "../node_modules/subscriptions-transport-ws/src/protocol.ts", "../node_modules/subscriptions-transport-ws/src/defaults.ts", "../node_modules/subscriptions-transport-ws/src/message-types.ts", "../node_modules/subscriptions-transport-ws/src/client.ts", "../netbox-graphiql/index.ts", "../node_modules/graphiql/src/components/GraphiQL.tsx", "../node_modules/graphql-language-service/src/interface/getAutocompleteSuggestions.ts", "../node_modules/vscode-languageserver-types/lib/esm/main.js", "../node_modules/graphql-language-service/src/types.ts", "../node_modules/graphql-language-service/src/parser/RuleHelpers.ts", "../node_modules/graphql-language-service/src/parser/Rules.ts", "../node_modules/graphql-language-service/src/parser/types.ts", "../node_modules/graphql-language-service/src/utils/fragmentDependencies.ts", "../node_modules/graphql-language-service/src/utils/collectVariables.ts", "../node_modules/graphql-language-service/src/utils/getOperationFacts.ts", "../node_modules/graphql-language-service/src/interface/getDiagnostics.ts", "../node_modules/graphiql/src/components/ExecuteButton.tsx", "../node_modules/graphiql/src/components/ImagePreview.tsx", "../node_modules/graphiql/src/components/ToolbarButton.tsx", "../node_modules/graphiql/src/components/ToolbarGroup.tsx", "../node_modules/graphiql/src/components/ToolbarMenu.tsx", "../node_modules/graphiql/src/components/QueryEditor.tsx", "../node_modules/graphiql/src/utility/normalizeWhitespace.ts", "../node_modules/graphiql/src/utility/onHasCompletion.ts", "../node_modules/graphiql/src/utility/commonKeys.ts", "../node_modules/graphiql/src/utility/importCodeMirror.ts", "../node_modules/graphiql/src/components/VariableEditor.tsx", "../node_modules/graphiql/src/components/HeaderEditor.tsx", "../node_modules/graphiql/src/components/ResultViewer.tsx", "../node_modules/graphiql/src/components/DocExplorer.tsx", "../node_modules/graphiql/src/components/DocExplorer/FieldDoc.tsx", "../node_modules/graphiql/src/components/DocExplorer/Argument.tsx", "../node_modules/graphiql/src/components/DocExplorer/TypeLink.tsx", "../node_modules/graphiql/src/components/DocExplorer/DefaultValue.tsx", "../node_modules/graphiql/src/components/DocExplorer/Directive.tsx", "../node_modules/graphiql/src/components/DocExplorer/MarkdownContent.tsx", "../node_modules/graphiql/src/components/DocExplorer/SchemaDoc.tsx", "../node_modules/graphiql/src/components/DocExplorer/SearchBox.tsx", "../node_modules/graphiql/src/utility/debounce.ts", "../node_modules/graphiql/src/components/DocExplorer/SearchResults.tsx", "../node_modules/graphiql/src/components/DocExplorer/TypeDoc.tsx", "../node_modules/graphiql/src/components/QueryHistory.tsx", "../node_modules/graphiql/src/components/HistoryQuery.tsx", "../node_modules/graphiql/src/utility/QueryStore.ts", "../node_modules/graphiql/src/utility/HistoryStore.ts", "../node_modules/graphiql/src/utility/CodeMirrorSizer.ts", "../node_modules/graphiql/src/utility/StorageAPI.ts", "../node_modules/graphiql/src/utility/getSelectedOperationName.ts", "../node_modules/graphiql/src/utility/find.ts", "../node_modules/graphiql/src/utility/fillLeafs.ts", "../node_modules/graphiql/src/utility/elementPosition.ts", "../node_modules/graphiql/src/utility/mergeAst.ts", "../node_modules/graphiql/src/utility/introspectionQueries.ts", "../node_modules/graphiql/src/components/Tabs.tsx", "../node_modules/graphiql/src/utility/fuzzyExtractOperationTitle.ts", "../node_modules/graphiql/src/utility/id-from-tab-contents.ts", "../node_modules/graphiql/src/utility/guid.ts", "../node_modules/graphiql/src/components/ToolbarSelect.tsx", "../node_modules/graphiql/src/index.ts"], - "mappings": "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", - "names": [] -} diff --git a/netbox/project-static/dist/graphiql.min.css b/netbox/project-static/dist/graphiql.min.css deleted file mode 100644 index 6318023d0e6..00000000000 --- a/netbox/project-static/dist/graphiql.min.css +++ /dev/null @@ -1,641 +0,0 @@ -/*!*********************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/roboto.css ***! - \*********************************************************************************************/ -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, - U+FE2E-FE2F; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,d09GMgABAAAAAAMwAA4AAAAABZgAAALdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI4ghsLEAABNgIkAxwEIAWDCgcgG3YEyI7DdHsjE9IUV+CFDh74vPL9/MmgO0un0soqjWt7En2kQoCMtXsRxyxkMqP9iO6NfSiUaLJuoRIKnhI0+ImbcWOB5XOAFVmCgxZQQmuBJRhZtsUCXm/492Dyuk2YZJdkdApZeOzyEQgKOwDgRjASBEEBVmAlgACtOHEhpjLyyrACMAB0vaLa6cAw5bc5bvhA2uwO7zXAyKPmkYNnAJgBxLEMDxFLqVBPI6EQ/daTr/QOAgfCngRoZc4UZiL623qCkf/oHVsfRCOuAIbJyF4ajQQKQLmQhNBAA4aygH9b19Xw4iAC8DkKM6WrYw/ABMAOWEAamA7sgBWACgAUSlc3SCmlc95o45idYD92Qt/+5gF19v3FALtB9+7dq/h6/Ljyu/zzYfnngwdlHxO+k39nOcO/e7nPf2vCoo3HVlmNTdnWwW3JZffuVU6cQX14kb3qUGOOJ+mjP9iMeb1Nivq5gXpJUWm+cmVK56e6PjI2uce23hHlG48vyDvym5/5q+wbkjq90rN+z53D6zXqmVUPVshZoVtrZgc4vleS1NNrni6VR8I/vTrpzpPwu1+1Pel4xBIzK16W3KcLNnVGl2RGZHbPXBAvhw4M02Ci/t0BBfw/p79XS9V7CKAMF0++DK9rtI/7MXvGATjz0TEA4K4oef476t9dS555BAoLBYCA6ei/FSzVgvg/cIR45gpTaLWeLiB+oa4xJuTks7r7/xwCmCzlpoJKALCDQmkyEsCsN0mELUADghGsGgAF6c9IXkabDYyqg6WMkZd9z7BT5gaphhhqnOH66aOvkTQhggQLpsk0xBB9DNSLJttgPQTQJBtoIE0JEY2wb+1lhF6GG62XngKUGKLFECMNkW2kZgP10+M31GZUwfojwkU0uAcQkISKFNtqGMlau3vIjjRUjMANjYkDNKeouYh7CRBmuD4CHQgHG6GXET8oT7ZU6QqUStddiABBJPSv6P315AAA) - format('woff2'); - unicode-range: U+1F00-1FFF; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,d09GMgABAAAAABX0AA4AAAAAJRAAABWfAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbjEocNgZgAIFkEQwKrnCmEwuBSAABNgIkA4MMBCAFgwoHIBv2HiMRwsYBgKA2n+CvErg5YHVUkRAJo8aMqlEXjSMQVVUI6BratcEu3sY+K7ZekZeA+A0njZBklodqv8j3p3tmdw+YExmNDtAheGKX00EoHxYmFQmkWBjkHp7m9u9iY7vbmoqRigEWosAXkErltiNG5XAoTBmcQQn+AUahfoRWfpmA0V8wEmSBYEEbCfqjFvQsfYGTMtEF8B8A/Q/gH/Cv6Te7j3ct9L3rjt41CA3K4LLvWjZl/uaX4W9oNRdKPr2H7jgL6jQS1ZoqpSsOBRLXhEI4hwUJGhujCVj/LcbY6dJ0qD2ma4OVuMgfXDi53SubwDhW8tKexpmpkSF27EEcOWQ+hyzkkMUc4mIyd7WCu/HmPmK5VAppTwWWnVdAgFxyvMoF0LPPDSWAw3VF+bnA4ab8dBlwuD1ZIQcOoNtuyJcDHgiHPlDsNFpZIAmo0nzO01UoYE+jI1djPK62RW11i25b2/4sa0daU8CIV+Tk/iiJyuiU+hla6b4Ymsp/SdD1c54WYrICuy+DAnm6W+LBnUx2DVCOxqn53kqk+eZrgq/O7P74j7aIk+5z1vtg/Lj/SWHqK7OfGWUqjh35+oQWvdQg5a8d64pqw6dbvqMlDoZHj9/Hqzc//TxeY5mToe174gl9Z2qQ2k6OWKlP6mwi72fEfM5dCn1fuVRWDLlqPpr+5U0wKzsnN69AwUJFihUvWSYoW75ipWq16ukbmVpY29ja2Tt6ePnhBCWL28URN/PpHCv5T5T4q/x99f/W/pTgmIFEvTPrMyTHpKDfQEq9k9YnsWzjXOPAqJZx/QNGx+0O2H/ieADJ9pDrobwvLQ+NPoSCJKiS9/QinokZEfdBwqSUmbS3Ml7L+pQzpeCZomdKxpQ9V/FIlVrNsNNnLmdun3vUeh3x/dyv1v9zsohPMc+kvQPJct4o+FT0qaRH2UcVU04/3X70+sz3R/8fcWJ6pX0AKeW8UyJS9vn282uv78//n0kRUyBZwZSi7rpTUKV4vGPTou4R915OoDAtpyEtOMnIj2+88H6FmJjZl74WQtCEkH6QWskdmBHdVzXOyN7z9J0QnpmAT/CWEBf3VfQL+YMeADgBd9lWQyarMqSzhjI5ZQpmS8BMgHrJp7T308pXIEzBBP9AHPaSPg71xrOet8zDhtfrai2qaYvr4jS8hvswNPU21BZfBHfetK0hy+KIMIwZS0AojprPaRZfjs6DNz2+orBJiFuI5Zak3ErSdxWBmPHHBYPATjrPdEsTM4h3IG36hMlLTnJwzpsLNBsGASu5UIdIzeLJQcz5o4MnTE7iJBDQsrij4tG6YfDJJcYByHmkBCAv1CBxJnsvRfuhFDugJdqgzd427d48qhCZN+1GA/rTfSkw7UxPJD6W0QDoeuLB7D2fd0FEAICiIrQD/AfAjbMjDYhALwDkWf0UcRHEa9ajdRBQ5Ki+e9+AB0EPVdTE3miOU3Eh7sajeBLa+p941D73ztgXrXE6Lsa96P8r+Lfz37MAS4U+w/5/s/5NBzG0GmcHN8DFrraJCQ+mvrOKJzPnbjxAIAtBglkKEcpKGJFw1h9TaZNerS07a0UhiEmQosVwEkfKWaxFFltiqWVcLBf/uycfe8PFSrwO3r+VK4B+Elh8AUwPAtP5wAK0bRDQGcBbcXtDy6lIWQLCkOYkCcv3g6hsTUcXrpMjTORn8GfKQH7nOEwmi4WyuJiQhzMZLCbGF+ixWPosNoriOB1FUCFfD0VRBttQT890jglb35BpzXW0EAowJtfU2UifbSPkCgzNmJbz7XEzI0NLPofiKqmsHIZMys2BZByKE41ReBG2iZ2AU8nVGkJNaIpZr7AEaXc1HanTSlJSRXFGexA8ik/M4gqxRBEvCKXcRJztgkIimmoLcUWRVZQsJWYlar9YilrCWyoR8VCt02aXl2iHh0mdWPNUrBkcJNSU7rLUDTNojVjzhJQNir+hSraaPs9SYvoeSSElwxXZWE4WVpiDF8pwpRRLLMZJPiEgKc6qKE3WnTBWl0m0cVI3rJM2iQ3zbNHpSJ1NBYGaSK3wa4txqnHA9Vy/eUnfss4nqdxsSqq2HrRJ8SlJtUQlicaoxFZdALYeaOrz7dRmYjero/HM/6FM/fkKSY0Dun6gI/MG7Pr4QLoBiqPEKD6FFxWn8ospFslWaock2mFSN9YDi/D+4KskQuVgtHpqnI7CdRqM5BM8iktwqDojxBRnCQsV3KYmC3OQDCe7YdNHrwgCI9dx3RhJ4gp1sChTFemOG1DqdIU6HZmIS9XjRDQWpx3iqC8bUXiebpgkSfw0oAhWVw3FrWp4jAnbNQ8SaoIkWJSyyaTZBTcS3/HXStQS7dCsmhJjGVJRd4aMAzuF0jw4ZpuwWbrMjgdfv4iUNzS4JhuTkJkUrsR0XDG+3oBYIya0hEotUouDNE8JY/W4d9LsBZZRTf4F4itiol2mQNUp0XbIfzNxM4oh4UJXjYaQoLRaUSwmKCLN4xpbbE1JPEW3SiQT6w5nZnJIitCJx2JKjGq11JqUcZMfF3PVyZqng+sTg+PFXFudZGiTSeZAi2niKOUhkzqsDiDU/lMPSVHV4iKNHz6HaFum0koSlBglOXN1uYMdeY7SYhVnxERlA2o0mocakbpFEqWzbbWfjdPNbRLDmShMeshEg3e5EmqrduKjzjA7EWG9H5lm4p6eJ5Fisi6kdJ13JbnAeDC54aZ5bLl2iLTSZRGVpCH0wRKyQiPdFL5OWfKq5ufhPGqKJTUvwatDxDW0kHxKSoxVw7FeScSN4Ol4yohgnXYIkyt+XOxE/8hxNZ4ULZkt3rEG0UNQSl1xLkl911XG4dGKIiQgQElHhRXUi9RMRie5Lq0ZrMOVPLcbDcdRdwhCTbArxZHRTdaa24+0Q6SRzsONo3UB+WqNOI7siMw0r6s6iDiGaYksKZaYoPU/uExyH9cgbq0BJZPQIzOLIKm0mC1WP1Lz4kicyPg6avBXGCPDs2I0/S4urkSnnVoiic3CqFithCBvz+0BtFM9SLoU0PT4ZX6bPuKFY80IFL8DikfAiv7N4beou4s3nmoX0E5d8DR5qTwG3LmaUz+Bl89vs8/w+2azk+2TzjHknB6LybHbHbH4XLDj3B4Oxd64rnwjMv8IB2w7UcrZwMrOlW1BLQBow81pMcgds/pyruZUkdnRK5EDaaD4sqLpdj7CZa7m1OXcDbdmXwHopeYGl4BVi/pq1NiI66R6Jnq+tFWbR9n1AxvxKe5si2NPy+/iK6V6bgpy9FXt5vk2xxQkLSg6DSjuFlXksHxzrjgzfoz781hE3iUQKVTBD7Zt/IN2hKb0Tm22KBDXF9xB1MhXS8YskrXEp8wgLf5kK2+sjtZzYHAfsh15UlfpxJ+CvWg3657vRi6jf5jO/V+4BcSsTFk52TOaACMzH3i9/L65H2dWHfUBh28e5u3gFm8/tA2JBmCjEfRyDASX9B9Vr9lRP+DYWt6xYHr50Fr1ALS8a/n06smgO30gRfPh6au5Az9I9S8lOupHVT4Ar+ttzOpppoc90pSzZkeHTA6CORXhVdCNXdJ/OAcMBEcP/Pe+thaphH7bFfM7az/neB3+Ye/LADndh7lRWZ0Gx8B1CZnXOAq9uHBcWVSdhlTDN0cMu8Hxf4xTv7tmo++mYvu6nQHs9hh2/ee+exynSyOvfmxawD468uki1/niSN9dYDLulpHHjHJkdu+Bu2lJ9Yyz1t14j1uLIF/+fTNUFREcrenk+Q2BNg3w8OJ//rcA/oNueLmBpgfyiAcF77k78m5k391pU4MCWzUwMfQ89XOkAsw9tuPqbj3Vyjmc+njkkpPzpZHTg7vqT7915lzqH7kAxR8FgQcEHRwDgXefbjpYZH/quFB8am0fsKlfwvZ1AG5f9v1uWve7cbnnE+SbJXMGTXb29q6W3nTuu4IMIF/NGd/gKOZaPMpy8EaQcZuBzwGk2P1qVVoKfB39P2+rxy0Aq2nXDrzah1yg/2U6Fwi3AKeeKntFVb/z11MdvPRTv4E59TvN8lNxojyfmdY/R8o5Rfc6xaDgMsdAcE6T83Fn8PkxtuQzfIpR0zrXoHX+RpVnYnt5GOUIVqq/7tYbqsn+wt3Nbfzlb4OadsT2xFXbU7tpQ9U5M9y93Iaf/zaqbUfsz19pmdA/vqu3hc0Yw0/SJgZcvVr12/feacT7f+3P6o1owH96Pxg/eGLeEmd8WWo3742H5QdDn+wrvrLHFloX0xGSfTmaw/ClezGzN9WkGmGpbVdAcVOdqNfI/htPqZcD//j9zSrkODrxR2A3sgXen3Uiwci4+YVZvQZqgucuFZZbnO0U6dUdhbfCvRsLXjBU9EyP1OgDEZWb4nWwWb0O+Ni5MXwMijwC9vC/MFUR16sRbsP3HdeQE3CnmeEkFjz/D+CeR6/RyHqn2tJQNBIuzz2QDrXCiish113PHKZXo13vTO6DhfY9PyMPtex23iXNhviFiRcYm7n3TP69h/yMyKXi+93cA6d5G1QXdNkseRF0uATLZSZllSQjMqhjp0DOGPtOVeUaVAZdOMatYK/PbEhCDwLTg+CKgclNu+s2FayIh13EG3zs42mgP/ueXjvS9iNUBO1aLmwqXbUFEivCGjnSnV4BncFtpsIbdqKv82360UrkcpX4I3uPveGZwX9aLBeE2EVt92pah3ph1ZLVs6FQBXrtocVdzo7ikVxOJf/mJEBfbN4fz4xmBFFx2XAOdDyHJ+kE3KP4xZuoCsp0aRUzf2Gem1zjbR1agKymqZ7+col5/VdUfRKuOQ2g4HxpCpxbF4tHCvY8pg0A033Ap/eUYUnfy/perfFjZvDcrCDTB76qxcxyZl3vobhoYVgU06cowUou+n7elp+4u8xw7yBxSKppHTC2c9ffUdt4EWlHDj7Rv453irvwzrXiVawf2uAOZF0Ho1zw6v1GgmGhEm7bEvwOOQjnhz1Pbtg1DdO6kHNM2jsomOFr1r0k2HCN4Vl34x2cDVAQxjtHr0JOTM39+NdjI4NtcBpcnbo3Bp7BY3cD8x43RrmjowEtKBy2WYnX+fP7ZZCsDi9nFDgA44l33XN+5diJhWvLhHza4cENkcliK8XmMJMBZr+tgrf0JfOY9foSvPYv0BEzttjH1JzJYsVyUnfK9wEVMK3bCm5MneAdwWXrf5hZHW31zsbXBg3I+iExMFXyy3c+Ww+TRscW+IhmCwwN8J0XH51YIXVM34+Ksc7W+J2RPXAZVOwAAvc118l3ORrQQyK83zIOefO9QS6UW4dXyGoqMGFzl/5/rs30kCPY7sXLk9zxD/x+Vy+aD7fJyAfwVpyRLKgr+XKnpAS6hKQUJTG6nc541RxCdsDdDwx+ZOTQW1JP5iJF0PEBi24wpzPiJ6RHxzzxI6DnZpakIWXo5SHTKx4WnKUpYvP9rswq1D+nUeofF6PyD2b454YZDj9acYsu6HHjHTjw/2QNCLJtFsC7Ogw/Mi3eL3V4QFsHfk5Pv8bYiHrTV1tZfXF0HF4G3M5U7spvlCEq9PoLk/OMmBBGnqIiBc6G20vJaeCZ2paVV8ciAq2PWZSHL5YCGZRxgLUnp2aN6QE5MNV3y92LSuODsv2hVtqQgm5gwCyz3twF2W9GSzkVK/sg2gnk+EfDB7m1AOK8NH+1wnxCeLwNr40RV5VkF88RlLNl23fnGhU/YmXs2bYO2gLd2Cf9nV1pOhu1ENEnHnTZpFy3fCekXaHXFran6J3le4HlnW5YVJfG7oM3Q38hXmpX3Ak5FOuVmA/pPW2t/CyIutVF3Htu+dhP9Peaia4108wQJBAtVjbkGWP7TgPR/pUBW4PLYmlQA7YtvCIIfsJyD1+yqttpfgITylmzNQLqpIfMWXpf+JBVtmBzN+REMUt5T+XNLwePIDKorkQo2/z1BT0D3pXn1Q9vQ+O184F/fv7iRJZlt0N/af62vHNoEXxWEfWYs9UlrAtyicxMw8RZqQS8CT5Yb7DLouOafb+Q3WPFPnz/1n5kN3LwIb/VLTkMizeLYG5bd36LnRuJBCA1cigAis1iRgObAcaCv1zSlWQ45PW308E7Bt6Qy9oD+5OcLqYF/FJsEtjyitQ/FL0qGEqVWCWClILmEnpcbN+Got8uVCBy6GAZP2fLt2f0JLh0g+sQbTN9v8+kp1wBmR2KTQKhYXAMFrukD4pQBb6mH0a3etR6o4Ns10z7b+cc/qb50svXqMRQB+IeZt4EeMv8o6FCheNebyQSuv50uPCJYYTV0lejHvULvPagvpfMJYRPwaq7ogIzWatDmQT1g9n7LcaXYDAE2gEoYDBOAB9AB8wY/78VaAfosbwGXMyo3QvSibWurlyATrzrO/2f7dlJnBVquHBEk1r4XaMDVFRIQzryUQ8ZyEQMcWQhGznIY9xmg6F+nZ9Wd4t4df6FlqN9T+Mpq/4uduTW9VfxfMddAgvZ8PdNRseFS5tsM45GKEADJmwuq9Q//Y6owz2eQB0XeC5sWr/27oowUvOoMcAutbIy/s+3ru21ljVtj9A6CeRjw7MagXy9Zr9eQ79jeNdZoE10L5Ka6tY2qKzHuYylkd+vLKrZMBsKnbp+irv3YmCvG/XW/SAa/Q4WlGsT714YjhzvygYtrKnOpt0x8hfZwd4iZWcapXaP6s2LhR6T4uNfgTWV0t2N42liYqxk939yzPSvtL1mW/qwl1kTidEVGPN5Rbq4X02nVa6Ns/9PSnsXyoH4TmTGXPnzftaPv+p6eXa48f6wxz6U8f7PsAEB2t4121oKG1+ux28MkzkAeO8T3wkAPofWfvPXin81i9B5ARgTDGACZrf/zwJgsSEa/+UeA6A3nQx1XRyU5iGn34G+pU7mS+5ZwL3v5d4cBOUU99EXC3qSwvzo1v1ZR06VOs/WL+Zkvc1CfvGAPAINoXk10XjaM87CpgdZxzczMJ/at08vr9N9jewuqp5UYvV9fFNZQ/0wcc9S2ZfCMldgttaneK8i8/jkSo7JBWWZxy43Kmi1tqekzsUgz/xRUubVs1wuXB48OA1VpZ/MXsa7F4kYchlZZU3OlzlsZLT5Mwqqse+tX5tDne0Kkm5Uqh7AstUSYaD2dg2FexYHSYmjFsg2WSa7ZIlwECbCU49Kj1UPghnCppTsPiAIcJ3dDEnQQABWAA28BZ2Xc/h8CCiZALgS4PpCWBIALs7pizC1aXy0L42D3ZJuF3ffKwehD/jIs16RfNkyZVEQWWKRxaqHSIA8wTxX+sBB5FI5SW8DclNri50CVqbXYbp8m6JO42ToPCkaFDJIdLLcyWTqcFK0dCQ6sqA3NY/cEjgtW8qVu8Gka5xgIZFI4XpunBUWSieoYr1knc7J9c2XyXlqOrl5WWDIUCn04SdcVOUsNPGDFkGA+hWoW9OcAA==) - format('woff2'); - unicode-range: U+0370-03FF; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, - U+01AF-01B0, U+1EA0-1EF9, U+20AB; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, - U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, - U+FE2E-FE2F; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,d09GMgABAAAAAB0wAA4AAAAAN9AAABzZAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmobmnocNgZgAIIEEQwKw1i2CQuCEAABNgIkA4QcBCAFgzIHIBv6LhXc9d0OQlLmtmQkQtg4gChsLYqSwfiU/X+9wI0hUv/ESljasdKOLTGMi44Ndgq6GqWg9LAyZSaQ1p2jO4gS3GO52RdM1zk/kVej1lvvb916njBD4+ETR2hyip0e/N39agQ2E4uSVEGghOwN6WYXpPWQqgRRjyha0wCtB/EaOgzLb9Pfu/Z2gDPJbgFAHz8PpANbQIyq/SvsAQrZCnUkaTL5UDx0hBQuWtrOtqcReJzBYjAGoQxOv0HSnf+5Fg+TUohWeR0q3kQ9Xiap+ObpzxX5eZrb+/dvcVuzkW1i0QoGPSIFiZZMqRKkVCpMjGZmYBZmYCEg1jDBJrQZ7OWgjSirppuMh67lD7df+KNVl3LJKjTepvzfWpntSoeoAgjCbWLjo3T1r05N/66uAe7XIZoFwNkwKiChowYCfEDgLutynkDoGHfenroNPE9TZ/PasmSEjKyMd5djvg7F/LDlMaaaXgSHm8Ya4L+51R3vQjmWFlJe/PwkCLK2ZIrao1UIT8JdOgs824sX1UVVRHw3Xqt23FhdSz4iQYIXwkPStQfxtJicUREbHtUNErA+XstdorxXhhhYQOwU4mZQLz8NoimLpbwszcvTK/f00Rv9MAVWD5hHoyHg/hM1M9mJs0WgvXv1d53w1MtvE76H5udu0FuuqwYoqA48EAPIkMRoo5z23dR7BEQaIAEAVZTcQn6kRdCesSro1vQjrGf0cVbFR8pNZlYwpjHK3tsuxjHGKNOAac5cyeYw1zNllJg1TkmoWGotdWCWP0W9omQsyZkZz0Hy2iDHMg8yr2S1szaynrEG2UqsHxJkyzkrwXcDIFjt7g8ZEAZmHbOmP2gzIzaOXD+slZWIT+mkOqGroajYAWm/ra+8xcyPglVJPHNXew50oO5nsx6bFd1Xn1ybYF0feLpL2M+nnkqOI256UcjrotQawk89RYYtoDPxnjgioWbbyctYjKeoqus0jPMfLCe7mjK6GPfaEguW1wYE0h7Qbq/1DexBJhQjoq4WpHG9Lg76FngorPD9NMndQbWkG59P0aJ3oPoW/emn6fuKrU5LX8A1xfdc12PaN2Daeic32Tp53hfEBkd25/b3slLKr9Cs2aqBqhosGijCdXnIbTxH821ua0erQbGbl06BWv7/hiiUipqGlo6egZGJmYWNnYOTi5uHl49fQFBIWBwGR6AxOLyMgqIz567duvPgkaCk4sWrNx9EVTV1TS0dPX0DYwg0iCaIIY8lnT2aJ0QkE9Yzrm9COjFINU8nQTfTIME02CG0cap8msYZspjzWVLY43m6FgoSCxIPkgySCpIOgvWOAAoajoxF6xdSiI2rZmlAi75/MDmatlr0YIKGdww5LGmyr26E+pRuzI0bSVKkC9YDAimg4chQ7BfSiE2o5mhEW2Sd9t0/YdI3bck2tAsaa3t6FooWI06SFOmCBRAiBTQcGYqKPRtii2mHHTrhYDHJuhAWBAwkBAYz/2EYhmE+wTAMwzB/Fn7BMP9hGK5/a9tW+ijKJCoIDY3eOvMq2C42YWsSktIUIEq+Vf00Rd5PAxah2YbAXvDC5YkKjpitlIq1ZaMStsFqD/TWysvgZfCuRQuFwDs+D1uVoIAlIpNw3i5QECwqrarrOk7l4QK0SRpbswXC9M5wJ1xonZ0sxTrpkVs+A7HcechSxdN40ccwLM3WtiRLpCgooJhZPR1N4zJg4GCg4YacYVILdUGFSYIsVBpDfD7NtSGUWX1oiGSJLeNCkhRpsbOEQEkDR4aiDWjZ7dHnj4myxpGH23bDN7BcojIurIu5cSFJinTB0hFAQklTmL5wmIEiDVr0+WMyPgvPkqdemj1qYw/Gz5eFe5IIL3CVsLCmNSJXMMmbjkU9BoynswKz2cRKkgZ3lLVpvPmyHYCPWLjc5A3TEc58tHC2LraxB2PlxXoAmXkmnUKdKTlYtT19MCecCf8okavYgh918qA6QHkiVS1tyG5GwLpRqVICNE6SCoR7fH0sm6dvg8eq4BbU27poGDYgW/V0vzqPIbN+eLrv8FJ/gSkucoHOe1X6yn+NTx9WYIvCuXz8YraAHLvTopyXSkJvA5ONt+3AlpvdVZxwGZxsooCrplZqYYAdetlhgE709NZDpK42lEtTHNhaPZTgUQiGdGKInZxNdZCsmJAniuVL/xHv4lqGI11JSAR+XBM9deUC929Y1sDT2/6fb9hW1X3DocK5fkpFsHH3A2qZ9TsItY/6IRthOn9VIHQddHGHEN5mAyiQQ3Lq4FLAulOKCBDtOvlRARAACPCAA1ygAQMAMNBBiAl8YOSbXjLphIFsXVhbFCYQECUAPVMREXYpmADBkjObjYEHmAIgJVgRIEBAonQafVPWJUI0cIqYFDGBDXROQhYhYAAnCLAkbGAAFA1QV139DHQNXUfXOVcHqKQw0VZMlo6tsDnQOmsOQJqzW8V3RE8AIP6TL/M9O3xlCIBI0H6nwzhA9OmcoAWtAwCkZUn/qBasCAhSLB9mlIRRKQfqyyBI/cyIXdwTmobs/VhPTAASSIPMjH08sjrSZugfZfkQwN9Lf/3LFCBs8wMAlN2pVCBtQXQEG9w8I0SxH/OqAq0SndVRr+b5YcmzB2bjq/c3z8Jqf3GO+MbqIqJiGuISklKa0lsGYoq44lgxp03zvnz78but5TvxZ2Lg1ONGHTfMiaxEqiggnlb9CEYfvBugRJBPux9NErA6DMgUC+F8jXRo+8/ovis1ZsGEVYfsNKnpcG4JjInf2oImukkG3hA5lR8mTwN8MaP0XJSCjW66AZlb18JeVmpEPvD+tscCG3PkbP2Xee8h1lYOBSluu0ocK8FDDtm9vN2Y72q2SJe7bivwfL4PXuBgwhQh/j9lNpchGJubnL707o1fp98RIwhiCy+ZkUPeK1Kd3MfQnwylwQY2w3rG3rsd/TD8Y9aoUPiufU7DihXZsOibVZ/0uAixK2Kx8+wb0SgBMcWKM2fqGh0PRsxhNWkf7IZK3tzHTshyS3DLSYM4AEJd7zM1Rz5oQ9/6udmdzSpyF87GmLCZ5V9WnukFDqUnAvqHe+/LCQMKKeWMLKdEnhTNtCQEXDxtJabVw3fU9lmDtK85hKC9V4l6fqVq2Ifb1mRIkR+ab7GNU6G3NadUxKih1UTbnAzVotmsxScIO+H+B39qgO68ZbdJZN4bu4upZc9TL8MD+GBCzDI2+sYV6Jy0OzxnT9hQumEV0wu0CqpQv1AS3tjJpNpK+PaIrYBonpXLUBOd6EuYiBTvvYE0zPTIRx+EUfHux/uMNDHsGxx2bCPTSXInDG3892+2OXkBV3Aa1unZgpiGVheZV7yBw7ZSCrCsRsfKhiCP7LVqOq53R5QYgmZG4ED/Pj8gciKpbFaB3JrG1exAceodolPsYsVEmkGY/hGrkteC680JxFcNIxctBiie7RSMgLjRFRvSF7UFsQigOhR6BooNbcEJqKyDBAoPwWm5R8WEXiHpKx08IEqDmhbf4W9WK5ElmJs769CAG7aHXSfK2BumZn0tQ991pkTauqMt1ccOiI+Y4bwNhe+6XdDI63ZCTwub+A8Fw2y0GYipqISboN2Z7EFAVTixA25TvgaQ2HYXDmfcqthuYF1/FZsB98gghDlwzcFdvnImQnDToJUWsH/7HqSYdXyb/GW2gHe2UeL2lHFKv8qxiod4c4CmAg5tbr8I6Z7ldudzykvuZ2sLKfy2NljsiY77yaD5wOZOM3+rdgSlxq/7C5DqTnTQXmmG73k627EPRnpi9T+HCKBDIwMCWQeACBfx7pYeIwLv8tEnSHREjGzD3mPRihpLVIKyfQJ07CBdddMElCETWZsCNyNm6yYje1ZcftBJyL1AuZIovkzKiBcumSouOeyw3ese9F7veVMd9/ImgfgRMk34ZWtG+afXQgubvTtpF9Plvt7rN/d1Dzjp3GDRCkQJPAEff7T8/JCxrzYGmvAkTpYzmn4zfUQB3eWrgIsCo+9UFSozAe7SM2jlxDM4fX/tqDzG8/a5z+fNxYz1Im6zI5x7lo0kzz1Bo4hwdf5eImBj32Fq9Vlaa5uNQFDQyTMFsBX3FzYA2Dj88grrOS7ebdJwJ7KkOsVZk7+WmZERoZbZNf7Ki3y8DwwswY6ioGx1sI0gi0TsSJSHokjiOtRxRQbhuuqB9bD7qgRbh02kyKawhIOBE8Z0zDRMmoZOot9RY6fxa+fUVOStpGDXK5qRht8wN6411LC30jfdpPNAk57HUUFAYwjL7LK/sJe93YBR8AoUjMHsjrf2bi/WLH3pC+Fm6a+vh+0R/mDIvy89BZ9h6Cp3v7B/NN5fM3w7PYt7Se/D6K7VbhcJyOrJ5yVwo/0zYjDj2BvI68jgRigdu08HAPSGp3pv3XmjuIa4XZg1Sm+jpdmsOGOmtGYn8Qj/YzI+/iS7cmqyiY3k0+/6H0UVzChG9LQDaSF+hALLbRpYza6xdT29RefKGv4FaZvutXV2DXZQI0upzE6pHOPfl47FBWfHBo/BVNngC5OB6UGpjPX2v0a/2thtfA0/+ERd/AncgdM4Eq9cLs6F2emXDrkcR/o8M7vb1/78H65ardykKQb9d1KuT4B+ZoAt/4JU5jNUEqJf4bKP+yMpoMPjLt2eBb6ieuJB6TIZo5teYOnaKhfru6v+DX6IQZsto+WbL6jhRPvv7eL2KDHjaImzjmSHBRCF+GxLzizqPXWo/E453kW+4ur8gHy1YDXm/y9hAP8SXBf2m/z6i1xTQZU7qgS53OTkyhRyDkBmYOAIt3lAxt00cFD3WgRMmdOTy5mi98zqrtxTcbl46syPphcFoL/0zsEHRuPQdFhteUEnrkNHpLQqxg7Fc0MdiOvk6ylKyCOcUboHx2YI0SOLW/u9s5AUX7gu2Oj1h+E/RRG92C1BxY5X9K6nQuW6pSw/xiKJC/yOryNuVkV8Zq+eJNzUTf9UtYK4iq/qK33mxmxnluSuiUftZEn1skKbsOfx6PvG47Rg/hkwTgpk2ft7AmeYfd5y+KrYzMG1r8FFYmohcWoodXUENWNLTmaH/Nbj+1rRV3uB6PQTg2LlZk5zi5rY0kGy97vBjua91XlO9uCoJVjbjr/UN+AadGVV0G9uO39nJ2O0rhFXo8srg39xWj5nkLFLi/yJXGJTn3grLbwkqiEMt2G/duMgbg7DGxZ4KYs2VDCuVxYR23BYRhgxIrB78giEKfmVO3A0tEV7nCOWcb5ak45ESUB9AFqOw4u830zLqcZZxPqT0DpVEKHjYn/Dj76fbBg/tRftRI9Ooo5BQJLFPhLknuq6khugam+jfsGXfoSMLmi/45FFSNHHK2jNACDfSH9fWJLpCOP4eLj8Gs1R5V+tqVSqeMeMj9QvOBzs/ZQ+Sfxz+USe8LQVio73LCZS7PUl5ilsH0MZiC/cMLVbNGuOne1CcxubMBuHZTkm9ou0L3LmY95Fi0DVF9TnGt0EvpXfH5he+EBVHO2oxOVobXtJL5C1OTbOrifAsWKgNngq8i9Iy6BSdlaJ15+tP7j+GHjhUldnkIxeoJ/fkCvCR2aj/yG5UzV44wpeLicprSQHJxENmll1Y/D5c3WvuYGk4anWGw/+lxReIHuE3kFLzdhnrrpmG/EQ/2WwBqvnfE1eTRbRQvbfnTf4HXSvfGCG03oKj+TjGtrBVt1G8MIbBFCN+7OirrFKBXctyR/a3OaBPaks9YZFM/8I+shA+Sszi5gbXkySySVXtzYUPQ5gC1ER6m0SFvCSUqtiMah62yUkxMvCpv+F1/Dfgs/yb1j8/4Em5SYk5Wq1W/Z8zOdD8zmXoN21vHRuTGp+PAY38cAru6hS1eXoEx78ofhAcmnM+XJxirj+JC2S2KNasN8s2RN0ry0EOX3pGHfT+0QA0bl5q3XM2OZ1ngCHewM188L+wxv4ZwjO8W+Z//+hMmjRzDe/Fg8zWngVL5sbm5LzLbi/jv5sFbXeOmokYMZSIt1rzWxTbpVPIbf5/YEF68kQzM5U6Ux6J1joYwNuizJ7kjJkzX3XXMxYpF8umt6t+jF0TVyorHr2aw6FWujtM/2nC4YZTkXrl7Hj2MEFKYkoGm1IEYT9AGZ2/dGx2Fr0khx7yD0iuEksi5geuJOewD5mMDjAXnAHwXv6qW+AI0tzolAhPlPCTVI5f1tp9gHQuQQO96UTuac6W3d8lvf4+HnmBLkg9cs6Y0Eb47/8s2jJisJC+vr+yV/kS/+VoPXw2jH1qcY7vTv7yorQjAV0hUumr5IXJdjkyzUrELDggt76wYa5pfNrBdv5PXt4NW7dSw4Qqw1PDRue3j7Uls7lrxFsP6Jk2LUDpJMvvjfCeqJtNVcaGGeoOUKFrejts1XPKZFQWHmzIRQLq3jJtUVJeAxhmGdnxpS380L44LtZ1M8i3qpj6i78Dn35pvTU+bLM+Qq/OLSURrsxOX8raP+Ucpvf7waATHZACbcihxflX5C+ycc9MLI5TfPxvODQBe9fLKyD0qzQaf/gFYyrvAv82+b/ZSj3wHCJyHjxsBBK9qzmZXOiE/MSMaiJyn0DDHrC8rFJ9MehH6jTV438tqfBosf0zsKqfKKJvHHf4vMf0L02wogk1pYdLMTVuLdDp+kHGL6TiAZxPdFfmDPKbKMts687YSTq3kI8xwTJGIBFo+I3JJ5L0Y/EBvH9aU5bucvg9Yj3bpvkqfnE79ZLw8sQTSpFU16aHL3A7zyVzaprvf4/fu1H4N+X6ka+5qXGV6bjUVgywahyVw1Mfjt+FN8UCR/Iy4xmvcQ1+GJ9wC9+ixhTkpnuOvXvZwULG9XEUX2MSM/iDq9J5qd6FrSuaSs+54YKXFxqWQF0Jwt6ZHi6H5FJrOsVrxNzaqLXgQ77vOUaaMLhU3ocmdupdbc8vJXCctFisunj5mvEtetGnO8QRiQ7MRe02y/yJL7uOQj35EurXawjiasA3sjsS1RPdtF8tQdh5qm4sJIRje2uJU+pnpwGfzxktnDd5lV+DSBiiGactYVhwrJmw/yv+8ud9w1X98uw2jfrkvXgH1HPtkynbcPVsx5jvm3mLv7YZCWYG6lCOgVnRc120LItwG5kbH7rA48Cohc9OYFbPyHb8MUefjk+LAdx5SbyMGjs6QIfFO3ItEl2s7eVoHQX3oIhYDf9OnAYpaNep8AVYGJr+aOw78jv4/Ydq8DDnUWSneX+e5H0hiT2mr4SzjHUBdtmS/YByxGqJ9sg4pzxu2vX14KX/OXZAYz0Vo09PM/QG7Bnmmo/1wince7RpqMbNz8ufkyhvD7UjjgfaN3gyFXjEbezba5nR6COCLYBePI8Z4B1ZK4PtT93mOrJ9dQ+0wTaFR42yFbN7+aw/107LQfUhtaOwm2+n43CxvIvx9NSCTdw0PTcMey55ZF94/pHxGG2b4Dy/hJ8qvCIFTOAST5aRddml12ON3j/157pO4PaX0VPjSm/Zqn9AFtGA9fHcoTan9NO9eQcPq/VicRjswUKsHTYLj5APrwP3Xwqd9zYecTEJdSOndNA8yLSFMI4w/8qDEi0BziMhQ41qOYu9oCdC6oH3vAnvDYuZCjDgUTisfkCz9vAnr/QwOP1fejFN/uY61nb8O1rL6me7Bna59SCVOYFPYRAlB/M8WK5OC9xxrASCuzZyaKKyxIJ7ld30J6A/PGAzrk6b1QQy/d4AcyEst4bYWlQhU/U+o7xWqYI17ag4bp6vAPfeknb9wLIAN8sD3yRFjjZE9S32jAKgxqhpPK4/ROt0dO4Bp+rDfrHb5OX371fUGcdOS2XKCTOF0Q8YJReBbdzAr0LFyPfqURseLE/kU1uP6O0kx5WEbYyFOcQW65Se2DhUssv/puHbOv69etI16Pu01xayABqPaPvwmBsr6urDfoGJmZXIRAVhcC087uJ2Z8q63fgdtR6V+50rkzxwOXzmxehhXyNM+5TizX78kckxpzcMqICRZUzM+jDnB+7O9R3dKhtHVHfSsLArsWoLFrk9QJY8eV77kWmErX4VPViGb9NpIZmmDyn9eIbr9D+5+GBaV44hmisndbhB+pbnTjFIY1gQ1ouyLkPe8mbh5jtrE0T76532DfNl/iYTrk8uplcKr68KJCR3KLeLVwaeiPP0tT6ISxBBYEcN2HVRgry1rbZd44sRK7P7IGLN156PWvd8DRwtSzNvv48glBeCMt5nZOLBwlG4oNq079W1u/EHaj5vtyJjMPDWcckenxlo8tRzJ255MEq9e1VqutHNNYr2xFMDGwVF1pFjVhH2c0c4DgwzGA2c5sHzi5arpkX+h7MbLKfbmw9/pmp+RBk3On2VGn2UJ0uWHv3Yiuux5vOsjroTvyt/eeb8Srcc45q3YkYobax9siFiEvkRVA+jBCbeAfkjmJTucGaZNhEqVvMXioe4d+Xjot8FNmZikNglbInIeX0qFcTF1lIRVrHnF8+qATGfUXyq/bZeai/djv5kLmSkd9+4ndUHVFF9KemXMYlP4Gell6YQWSi9WncMFHRSUeJyoDnwWesViqv/tCfyFa0Ej5m5d8mK2TAyK9eXoKWofVx8GGXDyqLFnq9BFZ8Re+t8FSiBp2r9Zfx2nQE3c3jn6tX4V5859WBF8EBWYtxDV73nfaczgGLRvKWP/7lj8+rby8UlBO0673HezW0dYkCeAH3HdcNO6y7rL59I9XfMBT1N/bv+EF5w2Yg0nUDDABggKpRZBUm0Sy1cXTTgYJkUkdvbwZr0SEgajbx2jxMA9OXxpCnQIrmpTkRg+6pBPzgwIQrLQ8POnwEyEnEkvOH7nZRQBEVKfsQbTqo/qw0l9zVXERJYm91fRXSv+SbXqCsbNsJlUZ/fOPqwqHrqQFlKTp1y5vufenFp/+qPfG/XwDAEJDHDguMALnrWDEBxKSSzj7gaYcFeEJMeEkZAVr+KwzvtGOq66S8QHkfvd40mNxjQE5wjnWhOka1Cirgh9FvYhVVE1os7brM2a8cSW8Y1VJxaZd0i6YT6ls0B3gF5TNYz+Jhbg+GID0pA9KxnrDojzGMVz/ewXBpuH/tIhfLPppZIkxqmHYDc17cXt+p9ad1Ph5mSFG0R3RG89d1sTn3c4yH28nS+sYRrQ8ahh0rx4orSofSBt8+AgBC9+1R/P4N5c/7Y+UHAADOv4qtAAD3h9frT+L/PpXzZCCAAgIAABAAI/FyACizZNCNuATQfv2lqlarpV4D+g1oxr0pXxiWqqgk+YPrGc65TOIPkyMM9/39ZSZaQgEY5ozufO9zs8bVWNGJsbmTBprjX3OSxSKx/Rg2qK2vfXTd6YMr053Z4PIU01kJxslgRrWKUT3RUJZiHo9+efwYbWPrq5p+PtOtN11x0no+x2lUFcNa0S8Z1rXN+dZ9+hXrwkkw9Vw0tX6q3jcYZZBuzeJ+DMzO05Ymik2y6SwJpTzp5dut14NAIcWU40snpX1ZL+mkiHIry3rNu6SsciQ+2E3qjqa8+8jlD/ftWEEPe5A+3R1EL0v6IP64UnHu3trn+2gdUwFezSvnWkV4ftMtFhihBL1bc5QeToGUx7UR0CTQA4U7VYVb1SMHVA7URqAX2Hk5gdxTYY7bGBAH3VAHqA2gh/qAbkiLEr78N3bBhvWbDwQAVVZR4IsWSNhbMSXmEDZkQjQMiKTW2BAwF4GKkLkEcCBnLoZJKgqSc2lgYBeh97PLv6qwov9Sr1iQXr4XT541HXO+uIGOiUSC4om+Ky9M+SSwYmIj74F8hmwEWHZmbl1bsVTCfBMfjTS9Y1yElVMtHyh1H7yHQxUI+x+/yVNebCwm8lMisZa5+IQE7+9jOiRLOZBrjFRVkO3WO2hNRlc9rFxmJap7Msle2acybJCNRUnB8AqPtIj4neykQB5QlZI+AAA=) - format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,d09GMgABAAAAAANUAA4AAAAABbwAAAMBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI0ghgLEAABNgIkAxwEIAWDMgcgG5sECK4GbGM62A+KOMNGmZWUwcdhKI9l4Sh/WwYP/3af9w0W4ERa2bOg405uoSptTooGKkF8HniO5b+Iojvye4dReBbNtVHwcLQTG2gBzQfYOqjJ/XYU/jItwgxa4I3czM4Fj9LAAnlHz+dzgSO71Jqn2QML8H66dROj0qAFLYnRhtm0b89/erW/v8l/LA6we9gCizDBtQzSf4EtkcwDT6RtmgYEQXnDKGQslZyX/CkQSFgBAE4ERggEAgmwACwQgADMsONAJKVkFWEBgAJgwMz1NlLWec3G+jtZu+rXO1i7rx/sZi0AEwB5WVY28FUE1CORQAjvtSPftAwCQQjGAbTUfm4qwrvbNmDEf5pjR4JoxElAiYiMWjQyIAEy4EBGAA4UNKCgIMC7a5Cej2sCAA+SMEEyYA2AMQBWgCmQAObACrAAQAUAJCSDMEDmo7CztfXoRGu7SUeVdbvosOq6N6PHnZ2yf9l3eXPj/q2qXdkjBL+qrix1cYsqzItOvXfRPaMXkUvPeFWoxr7tZB8gfxIhMauBapmSUhO8d3O8wUt0MoI7UAxLzt0/zhCwJnVHrsPYXenm8suPeLYORWqn/3wwK6Qp+frDiYGvxHSXFzoXfpihfmlODl9oFbOqKa8nXbZgd6axNivh4JS8xEZKChij/nuDBPx/MrxQA/WBACCtK44947xa66g/k0YcALjxaesDuBuQP/7x/3bTwmQACVMkAAQYd/7HYBqK1H97hriqWIzlN7cD8Qu1mY6Ql7eR9v8qAcCY/apKqAgArEBCCmOEAExoJiOUENTgBAI3NSBhwSjIbLboV0Blo3PIiN06hxVFfmrr0WtMvzYtWg3SBPDjz58mVY8eLTrpNOm6NfKhidepk6ZAbgbym+oG6PoN0zXxUaBHgx6Demiy6Zq0GdIl3aB6ndo04r7WvSV0/Qa0Nd2+yKcNFCrSvh/6dNKO3xV33aBeEXxNZKTyQUaverfOR49+LZno1XUboBt4oSzpEiXLUSjZDgF8+JHBMIY0KQAA) - format('woff2'); - unicode-range: U+1F00-1FFF; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0370-03FF; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, - U+01AF-01B0, U+1EA0-1EF9, U+20AB; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, - U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -@font-face { - font-family: Roboto; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, - U+FE2E-FE2F; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,d09GMgABAAAAAALsAA4AAAAABWAAAAKbAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXsLEAABNgIkAxwEIAWCdAcgG0AEAB6HcYyyEjO2Dy0eKLv4XvfsrGs+wIhEBOHOERRRTI2158fc/aln0WYmSJq8uTRSIgUyIVMqpfa/7uYHCqzWDuHREj0f5UuuL+ZAokTaYgiIs5sF5aUutjO7QhBlgMaYvCAIIqqoCggoq0+HjRlX70MGclDLyR3Z8fb0q/ectzCv30obmLesvO5hBhRhcp7kToaLpaRXpL0htKmb5C3rIgzUIwA1fnqrhHSbqXhA3v+sK1wRtcWuhdyg9E5tGXERkaAhroCGeNqCnJxAm6m1Sb58SICvFhXFWnVAAWQoYRjYADJUQQqIYm0uSZKkfpYv1sv21dm9b7kWbV6i3BQ2Z/sOf/hl+ezXH88LRz75pnLuq4/MO/Zx+eyHc3x9VDn3yfx9n1ILyusq3ps75y90fVZ657PJ2iXgF+odHbvzv7Lrm+uTsPR0WJqYcelN7180rHDDnbeWbrx0QHht49uXjCzffOsd5RsvGvHe4yF5o+Ej97/ZMP62+Z+3Wz/08CtZ/FezhpdvG/nb6PMhC9vNvHFx3Du9X47etewROuONg4L0v2eI+L9X7dt0evq+gNihfvWttiuWK4f8VmxWBM/+WK8b8F6Y9evfLf57r9SjuA2URBAobPm/Smni3y3+n1TqgQEACsl5awAI/5AetjNp65A+/38vDAUXaayPL4CMKHYkEFC0DlfIlbAMegyqlmGU2eSTO58TTHX2xLyWvlczc/wY7eDo5WxlYenKyMvNg9Go5MAatqis2Jty2oytLaPupFxOlsgFObsjM05dBxMHVwcMbeFma4xFh8jZxUr2e62Th09I7Bd96I2RI3gzYzqKcsHjqZzGjsamlojTwdmCy9bKFNm7IBcudRU5BU09BQ5eTm5coMaMAw==) - format('woff2'); - unicode-range: U+1F00-1FFF; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0370-03FF; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, - U+01AF-01B0, U+1EA0-1EF9, U+20AB; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, - U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, - U+FE2E-FE2F; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,d09GMgABAAAAAAMAAA4AAAAABWwAAAKuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXkLEAABNgIkAxwEIAWDAAcgG0oEAB6D426JQgSiDJGrY+EepR5ejwf4/fWd+/C1EBKYZDS7sRFxHTf9uCJn/m9Of4qsOwRQBbqEex0QSbKziM9Pj42dA85/tYTLU84Cj+f+PIAlq3AtV5GCrQWUqr11TNFedSEUjKs7rSju46fX7RWCSHFAeYQcQRBEKIqiAgIKlGZBdO5a3w4akEBWj6orkgSzThrq5iF0WjfiKGe7e/0dAHkwOR8nW+GblHR72hyEGmzEl02NcDPu9oBKt35NVVBcoyEuIJNhau72SE3EHkhapkdqCiZGhBhliQWUJVETSCQCNfr8o/boWoBjI3miLHqQC4ojH22AaUBxFAUpIBJlJeIVGIvLFI6PlFi4hGYVs0brZ4ZZlT0rbz1SLT+50xlW3X269vh2x+CpO/n7bw02ebvIys0wMkpteMHUIq4PGfxCRBdKjxXGaDRIc42rK+a/qgeebsfBvjGMiQ14cnJjW8fSe6fHlr2NIrgbeH2jS+k9X+md9WJP/5IvZ8LRg1cQ3gz+dJMePnr2/6ZSiy3c9rHc87Zj4tqOx0WLe1U0VR2OOEt9kq4gV/r/NBEyVbPvpL70poCoTunu3LVVZ4nW3xWV8gAKP5VqBMD10Pruq+7/52x5c4B8EQjkzs5oyJ/1JzxT0mgEACA3XjUZACFDut7UuAEqPZepikCuTcprJBVAcSJREzIBeaYSC4kSGAs2BJU5IFLcQjt+sxNAqr55kwOx947iBrvVCRYwpBuDQusVLFWyFCmCVcEwCg8JVsPPK1GwEjxesNZJv6dyHtID6dYP8UnUCvPAemHBGiA+jD6CVgilD8+tWyfSPRiYXwVJDNNkydPUzvrRmeBZvFdArqSTDSCJ3ALcvDp0JBHWjTK8pb0Qvx7N35CkXo0yFRq1qZAgVaJkYiA7H3AA) - format('woff2'); - unicode-range: U+1F00-1FFF; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0370-03FF; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, - U+01AF-01B0, U+1EA0-1EF9, U+20AB; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, - U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -@font-face { - font-family: Roboto; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url(data:font/woff2;base64,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) - format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} - -/*!************************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/fira-code.css ***! - \************************************************************************************************/ -@font-face { - font-family: Fira Code; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff;base64,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) - format('woff'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, - U+FE2E-FE2F; -} -@font-face { - font-family: Fira Code; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff;base64,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) - format('woff'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -@font-face { - font-family: Fira Code; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff;base64,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) - format('woff'); - unicode-range: U+1F00-1FFF; -} -@font-face { - font-family: Fira Code; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff;base64,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) - format('woff'); - unicode-range: U+0370-03FF; -} -@font-face { - font-family: Fira Code; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff;base64,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) - format('woff'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, - U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -@font-face { - font-family: Fira Code; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(data:font/woff;base64,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) - format('woff'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, - U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, - U+FEFF, U+FFFD; -} - -/*!********************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/dist/style.css ***! - \********************************************************************************************/ -.graphiql-container *{box-sizing:border-box;font-variant-ligatures:none}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-dialog-overlay,.graphiql-tooltip,[data-radix-popper-content-wrapper]{--color-primary: 320, 95%, 43%;--color-secondary: 242, 51%, 61%;--color-tertiary: 188, 100%, 36%;--color-info: 208, 100%, 46%;--color-success: 158, 60%, 42%;--color-warning: 36, 100%, 41%;--color-error: 13, 93%, 58%;--color-neutral: 219, 28%, 32%;--color-base: 219, 28%, 100%;--alpha-secondary: .76;--alpha-tertiary: .5;--alpha-background-heavy: .15;--alpha-background-medium: .1;--alpha-background-light: .07;--font-family: "Roboto", sans-serif;--font-family-mono: "Fira Code", monospace;--font-size-hint:.75rem;--font-size-inline-code:.8125rem;--font-size-body:.9375rem;--font-size-h4:1.125rem;--font-size-h3:1.375rem;--font-size-h2:1.8125rem;--font-weight-regular: 400;--font-weight-medium: 500;--line-height: 1.5;--px-2: 2px;--px-4: 4px;--px-6: 6px;--px-8: 8px;--px-10: 10px;--px-12: 12px;--px-16: 16px;--px-20: 20px;--px-24: 24px;--border-radius-2: 2px;--border-radius-4: 4px;--border-radius-8: 8px;--border-radius-12: 12px;--popover-box-shadow: 0px 6px 20px rgba(59, 76, 106, .13), 0px 1.34018px 4.46726px rgba(59, 76, 106, .0774939), 0px .399006px 1.33002px rgba(59, 76, 106, .0525061);--popover-border: none;--sidebar-width: 60px;--toolbar-width: 40px;--session-header-height: 51px}@media (prefers-color-scheme: dark){body:not(.graphiql-light) .graphiql-container,body:not(.graphiql-light) .CodeMirror-info,body:not(.graphiql-light) .CodeMirror-lint-tooltip,body:not(.graphiql-light) .graphiql-dialog,body:not(.graphiql-light) .graphiql-dialog-overlay,body:not(.graphiql-light) .graphiql-tooltip,body:not(.graphiql-light) [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}}body.graphiql-dark .graphiql-container,body.graphiql-dark .CodeMirror-info,body.graphiql-dark .CodeMirror-lint-tooltip,body.graphiql-dark .graphiql-dialog,body.graphiql-dark .graphiql-dialog-overlay,body.graphiql-dark .graphiql-tooltip,body.graphiql-dark [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-container:is(button),.CodeMirror-info:is(button),.CodeMirror-lint-tooltip:is(button),.graphiql-dialog:is(button){color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(----font-weight-regular);line-height:var(--line-height)}.graphiql-container input,.CodeMirror-info input,.CodeMirror-lint-tooltip input,.graphiql-dialog input{color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-caption)}.graphiql-container input::placeholder,.CodeMirror-info input::placeholder,.CodeMirror-lint-tooltip input::placeholder,.graphiql-dialog input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-container a,.CodeMirror-info a,.CodeMirror-lint-tooltip a,.graphiql-dialog a{color:hsl(var(--color-primary))}.graphiql-container a:focus,.CodeMirror-info a:focus,.CodeMirror-lint-tooltip a:focus,.graphiql-dialog a:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-un-styled,button.graphiql-un-styled{all:unset;border-radius:var(--border-radius-4);cursor:pointer}:is(.graphiql-un-styled,button.graphiql-un-styled):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}:is(.graphiql-un-styled,button.graphiql-un-styled):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-un-styled,button.graphiql-un-styled):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button,button.graphiql-button{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border:none;border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),1);cursor:pointer;font-size:var(--font-size-body);padding:var(--px-8) var(--px-12)}:is(.graphiql-button,button.graphiql-button):hover,:is(.graphiql-button,button.graphiql-button):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-button,button.graphiql-button):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button-success:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-success),var(--alpha-background-heavy))}.graphiql-button-error:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-button-group{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-4) + var(--px-4));display:flex;padding:var(--px-4)}.graphiql-button-group>button.graphiql-button{background-color:transparent}.graphiql-button-group>button.graphiql-button:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-button-group>button.graphiql-button.active{background-color:hsl(var(--color-base));cursor:default}.graphiql-button-group>*+*{margin-left:var(--px-8)}.graphiql-dialog-overlay{position:fixed;inset:0;background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));z-index:10}.graphiql-dialog{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-12);box-shadow:var(--popover-box-shadow);margin:0;max-height:80vh;max-width:80vw;overflow:auto;padding:0;width:unset;transform:translate(-50%,-50%);top:50%;left:50%;position:fixed;z-index:10}.graphiql-dialog-close>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-12);padding:var(--px-12);width:var(--px-12)}.graphiql-dropdown-content{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:inherit;max-width:250px;padding:var(--px-4);font-family:var(--font-family);color:hsl(var(--color-neutral));max-height:min(calc(var(--radix-dropdown-menu-content-available-height) - 10px),400px);overflow-y:scroll}.graphiql-dropdown-item{border-radius:var(--border-radius-4);font-size:inherit;margin:var(--px-4);overflow:hidden;padding:var(--px-6) var(--px-8);text-overflow:ellipsis;white-space:nowrap;outline:none;cursor:pointer;line-height:var(--line-height)}.graphiql-dropdown-item[data-selected],.graphiql-dropdown-item[data-current-nav],.graphiql-dropdown-item:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:inherit}.graphiql-dropdown-item:not(:first-child){margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) blockquote{margin-left:0;margin-right:0;padding-left:var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{border-radius:var(--border-radius-4);font-family:var(--font-family-mono);font-size:var(--font-size-inline-code)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code{padding:var(--px-2)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{overflow:auto;padding:var(--px-6) var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre code{background-color:initial;border-radius:0;padding:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{padding-left:var(--px-16)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol{list-style-type:decimal}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{list-style-type:disc}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) img{border-radius:var(--border-radius-4);max-height:120px;max-width:100%}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:first-child{margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:last-child{margin-bottom:0}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a{color:hsl(var(--color-primary));text-decoration:none}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a:hover{text-decoration:underline}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) blockquote{border-left:1.5px solid hsla(var(--color-neutral),var(--alpha-tertiary))}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) code,:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) pre{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description)>*{margin:var(--px-12) 0}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) a{color:hsl(var(--color-warning));text-decoration:underline}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) blockquote{border-left:1.5px solid hsl(var(--color-warning))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) pre{background-color:hsla(var(--color-warning),var(--alpha-background-heavy))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation)>*{margin:var(--px-8) 0}.graphiql-markdown-preview>:not(:first-child){display:none}.CodeMirror-hint-information-deprecation,.CodeMirror-info .info-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));margin-top:var(--px-12);padding:var(--px-6) var(--px-8)}.CodeMirror-hint-information-deprecation-label,.CodeMirror-info .info-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation-reason{margin-top:var(--px-6)}.graphiql-spinner{height:56px;margin:auto;margin-top:var(--px-16);width:56px}.graphiql-spinner:after{animation:rotation .8s linear 0s infinite;border:4px solid transparent;border-radius:100%;border-top:4px solid hsla(var(--color-neutral),var(--alpha-tertiary));content:"";display:inline-block;height:46px;vertical-align:middle;width:46px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.graphiql-tooltip{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-size:inherit;padding:var(--px-4) var(--px-6);font-family:var(--font-family)}.graphiql-tabs{display:flex;align-items:center;overflow-x:auto;padding:var(--px-12)}.graphiql-tabs>:not(:first-child){margin-left:var(--px-12)}.graphiql-tab{align-items:stretch;border-radius:var(--border-radius-8);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex}.graphiql-tab>button.graphiql-tab-close{visibility:hidden}.graphiql-tab.graphiql-tab-active>button.graphiql-tab-close,.graphiql-tab:hover>button.graphiql-tab-close,.graphiql-tab:focus-within>button.graphiql-tab-close{visibility:unset}.graphiql-tab.graphiql-tab-active{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));color:hsla(var(--color-neutral),1)}button.graphiql-tab-button{padding:var(--px-4) 0 var(--px-4) var(--px-8)}button.graphiql-tab-close{align-items:center;display:flex;padding:var(--px-4) var(--px-8)}button.graphiql-tab-close>svg{height:var(--px-8);width:var(--px-8)}.graphiql-history-header{font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);display:flex;justify-content:space-between;align-items:center}.graphiql-history-header button{font-size:var(--font-size-inline-code);padding:var(--px-6) var(--px-10)}.graphiql-history-items{margin:var(--px-16) 0 0;list-style:none;padding:0}.graphiql-history-item{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;font-size:var(--font-size-inline-code);font-family:var(--font-family-mono);height:34px}.graphiql-history-item:hover{color:hsla(var(--color-neutral),1);background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-history-item:not(:first-child){margin-top:var(--px-4)}.graphiql-history-item.editable{background-color:hsla(var(--color-primary),var(--alpha-background-medium))}.graphiql-history-item.editable>input{background:transparent;border:none;flex:1;margin:0;outline:none;padding:0 var(--px-10);width:100%}.graphiql-history-item.editable>input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-history-item.editable>button{color:hsl(var(--color-primary));padding:0 var(--px-10)}.graphiql-history-item.editable>button:active{background-color:hsla(var(--color-primary),var(--alpha-background-heavy))}.graphiql-history-item.editable>button:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-history-item.editable>button>svg{display:block}button.graphiql-history-item-label{flex:1;padding:var(--px-8) var(--px-10);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.graphiql-history-item-action{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;padding:var(--px-8) var(--px-6)}button.graphiql-history-item-action:hover{color:hsla(var(--color-neutral),1)}button.graphiql-history-item-action>svg{height:14px;width:14px}.graphiql-history-item-spacer{height:var(--px-16)}.graphiql-doc-explorer-default-value{color:hsl(var(--color-success))}a.graphiql-doc-explorer-type-name{color:hsl(var(--color-warning));text-decoration:none}a.graphiql-doc-explorer-type-name:hover{text-decoration:underline}a.graphiql-doc-explorer-type-name:focus{outline:hsl(var(--color-warning)) auto 1px}.graphiql-doc-explorer-argument>*+*{margin-top:var(--px-12)}.graphiql-doc-explorer-argument-name{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-argument-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-argument-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--px-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-directive{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-section-title{align-items:center;display:flex;font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);line-height:1}.graphiql-doc-explorer-section-title>svg{height:var(--px-16);margin-right:var(--px-8);width:var(--px-16)}.graphiql-doc-explorer-section-content{margin-left:var(--px-8);margin-top:var(--px-16)}.graphiql-doc-explorer-section-content>*+*{margin-top:var(--px-16)}.graphiql-doc-explorer-root-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-doc-explorer-search:not([data-state="idle"]){border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1)}.graphiql-doc-explorer-search:not([data-state="idle"]) .graphiql-doc-explorer-search-input{background:hsl(var(--color-base))}.graphiql-doc-explorer-search-input{align-items:center;background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:var(--border-radius-4);display:flex;padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search [role=combobox]{border:none;background-color:transparent;margin-left:var(--px-4);width:100%}.graphiql-doc-explorer-search [role=combobox]:focus{outline:none}.graphiql-doc-explorer-search [role=listbox]{background-color:hsl(var(--color-base));border:none;border-bottom-left-radius:var(--border-radius-4);border-bottom-right-radius:var(--border-radius-4);border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));max-height:400px;overflow-y:auto;margin:0;font-size:var(--font-size-body);padding:var(--px-4);position:relative}.graphiql-doc-explorer-search [role=option]{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));overflow-x:hidden;padding:var(--px-8) var(--px-12);text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-doc-explorer-search [role=option]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy))}:is(.graphiql-doc-explorer-search [role="option"])+:is(.graphiql-doc-explorer-search [role="option"]){margin-top:var(--px-4)}.graphiql-doc-explorer-search-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search-field{color:hsl(var(--color-warning))}.graphiql-doc-explorer-search-argument{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-search-divider{color:hsla(var(--color-neutral),var(--alpha-secondary));font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);margin-top:var(--px-8);padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search-empty{color:hsla(var(--color-neutral),var(--alpha-secondary));padding:var(--px-8) var(--px-12)}a.graphiql-doc-explorer-field-name{color:hsl(var(--color-info));text-decoration:none}a.graphiql-doc-explorer-field-name:hover{text-decoration:underline}a.graphiql-doc-explorer-field-name:focus{outline:hsl(var(--color-info)) auto 1px}.graphiql-doc-explorer-item>:not(:first-child){margin-top:var(--px-12)}.graphiql-doc-explorer-argument-multiple{margin-left:var(--px-8)}.graphiql-doc-explorer-enum-value{color:hsl(var(--color-info))}.graphiql-doc-explorer-header{display:flex;justify-content:space-between;position:relative}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-title{visibility:hidden}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-back:not(:focus){color:transparent}.graphiql-doc-explorer-header-content{display:flex;flex-direction:column;min-width:0}.graphiql-doc-explorer-search{position:absolute;right:0;top:0}.graphiql-doc-explorer-search:focus-within{left:0}.graphiql-doc-explorer-search [role=combobox]{height:24px;width:4ch}.graphiql-doc-explorer-search [role=combobox]:focus{width:100%}a.graphiql-doc-explorer-back{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;text-decoration:none}a.graphiql-doc-explorer-back:hover{text-decoration:underline}a.graphiql-doc-explorer-back:focus{outline:hsla(var(--color-neutral),var(--alpha-secondary)) auto 1px}a.graphiql-doc-explorer-back:focus+.graphiql-doc-explorer-title{visibility:unset}a.graphiql-doc-explorer-back>svg{height:var(--px-8);margin-right:var(--px-8);width:var(--px-8)}.graphiql-doc-explorer-title{font-weight:var(--font-weight-medium);font-size:var(--font-size-h2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-title:not(:first-child){font-size:var(--font-size-h3);margin-top:var(--px-8)}.graphiql-doc-explorer-content>*{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-20)}.graphiql-doc-explorer-error{background-color:hsla(var(--color-error),var(--alpha-background-heavy));border:1px solid hsl(var(--color-error));border-radius:var(--border-radius-8);color:hsl(var(--color-error));padding:var(--px-8) var(--px-12)}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.graphiql-container .CodeMirror{height:100%;position:absolute;width:100%}.graphiql-container .CodeMirror{font-family:var(--font-family-mono)}.graphiql-container .CodeMirror,.graphiql-container .CodeMirror-gutters{background:none;background-color:var(--editor-background, hsl(var(--color-base)))}.graphiql-container .CodeMirror-linenumber{padding:0}.graphiql-container .CodeMirror-gutters{border:none}.cm-s-graphiql{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-keyword{color:hsl(var(--color-primary))}.cm-s-graphiql .cm-def{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-punctuation{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-variable{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-atom{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-number{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string{color:hsl(var(--color-warning))}.cm-s-graphiql .cm-builtin{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string-2{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-attribute,.cm-s-graphiql .cm-meta{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-property{color:hsl(var(--color-info))}.cm-s-graphiql .cm-qualifier{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-comment{color:hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .cm-ws{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-invalidchar{color:hsl(var(--color-error))}.cm-s-graphiql .CodeMirror-cursor{border-left:2px solid hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .CodeMirror-linenumber{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket,.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:hsl(var(--color-warning))}.graphiql-container .CodeMirror-selected,.graphiql-container .CodeMirror-focused .CodeMirror-selected{background:hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .CodeMirror-dialog{background:inherit;color:inherit;left:0;right:0;overflow:hidden;padding:var(--px-2) var(--px-6);position:absolute;z-index:6}.graphiql-container .CodeMirror-dialog-top{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding-bottom:var(--px-12);top:0}.graphiql-container .CodeMirror-dialog-bottom{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));bottom:0;padding-top:var(--px-12)}.graphiql-container .CodeMirror-search-hint{display:none}.graphiql-container .CodeMirror-dialog input{border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container .CodeMirror-dialog input:focus{outline:hsl(var(--color-primary)) solid 2px}.graphiql-container .cm-searching{background-color:hsla(var(--color-warning),var(--alpha-background-light));padding-bottom:1.5px;padding-top:.5px}.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"▾"}.CodeMirror-foldgutter-folded:after{content:"▸"}.CodeMirror-foldgutter{width:var(--px-12)}.CodeMirror-foldmarker{background-color:hsl(var(--color-info));border-radius:var(--border-radius-4);color:hsl(var(--color-base));font-family:inherit;margin:0 var(--px-4);padding:0 var(--px-8);text-shadow:none}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.CodeMirror-foldgutter-open:after,.CodeMirror-foldgutter-folded:after{margin:0 var(--px-2)}.graphiql-editor{height:100%;position:relative;width:100%}.graphiql-editor.hidden{left:-9999px;position:absolute;top:-9999px;visibility:hidden}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid black;border-radius:4px;color:#000;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-lint-mark{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-marker{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message{padding-left:18px;background-position:top left;background-repeat:no-repeat}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right bottom;width:100%;height:100%}.CodeMirror-lint-line-error{background-color:#b74c5114}.CodeMirror-lint-line-warning{background-color:#ffd3001a}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-repeat:repeat-x;background-size:10px 3px;background-position:0 95%}.cm-s-graphiql .CodeMirror-lint-mark-error{color:hsl(var(--color-error))}.CodeMirror-lint-mark-error{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-error)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-error)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-error)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-error)) 35%,transparent 50%)}.cm-s-graphiql .CodeMirror-lint-mark-warning{color:hsl(var(--color-warning))}.CodeMirror-lint-mark-warning{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-warning)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-warning)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-warning)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-warning)) 35%,transparent 50%)}.CodeMirror-lint-tooltip{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:var(--font-size-body);font-family:var(--font-family);max-width:600px;overflow:hidden;padding:var(--px-12)}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-image:none;padding:0}.CodeMirror-lint-message-error{color:hsl(var(--color-error))}.CodeMirror-lint-message-warning{color:hsl(var(--color-warning))}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px #0003;border-radius:3px;border:1px solid silver;background:white;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hints{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);display:grid;font-family:var(--font-family);font-size:var(--font-size-body);grid-template-columns:auto fit-content(300px);max-height:264px;padding:0}.CodeMirror-hint{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));grid-column:1 / 2;margin:var(--px-4);padding:var(--px-6) var(--px-8)!important}.CodeMirror-hint:not(:first-child){margin-top:0}li.CodeMirror-hint-active{background:hsla(var(--color-primary),var(--alpha-background-medium));color:hsl(var(--color-primary))}.CodeMirror-hint-information{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));grid-column:2 / 3;grid-row:1 / 99999;max-height:264px;overflow:auto;padding:var(--px-12)}.CodeMirror-hint-information-header{display:flex;align-items:baseline}.CodeMirror-hint-information-field-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-hint-information-type-name{color:inherit;text-decoration:none}.CodeMirror-hint-information-type-name:hover{text-decoration:underline dotted}.CodeMirror-hint-information-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12)}.CodeMirror-info{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1);max-height:300px;max-width:400px;opacity:0;overflow:auto;padding:var(--px-12);position:fixed;transition:opacity .15s;z-index:10}.CodeMirror-info a{color:inherit;text-decoration:none}.CodeMirror-info a:hover{text-decoration:underline dotted}.CodeMirror-info .CodeMirror-info-header{display:flex;align-items:baseline}.CodeMirror-info .CodeMirror-info-header>.type-name,.CodeMirror-info .CodeMirror-info-header>.field-name,.CodeMirror-info .CodeMirror-info-header>.arg-name,.CodeMirror-info .CodeMirror-info-header>.directive-name,.CodeMirror-info .CodeMirror-info-header>.enum-value{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-info .type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-info .info-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12);overflow:hidden}.CodeMirror-jump-token{text-decoration:underline dotted;cursor:pointer}.auto-inserted-leaf.cm-property{animation-duration:6s;animation-name:insertionFade;border-radius:var(--border-radius-4);padding:var(--px-2)}@keyframes insertionFade{0%,to{background-color:none}15%,85%{background-color:hsla(var(--color-warning),var(--alpha-background-light))}}button.graphiql-toolbar-button{display:flex;align-items:center;justify-content:center;height:var(--toolbar-width);width:var(--toolbar-width)}button.graphiql-toolbar-button.error{background:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-execute-button-wrapper{position:relative}button.graphiql-execute-button{background-color:hsl(var(--color-primary));border:none;border-radius:var(--border-radius-8);cursor:pointer;height:var(--toolbar-width);padding:0;width:var(--toolbar-width)}button.graphiql-execute-button:hover{background-color:hsla(var(--color-primary),.9)}button.graphiql-execute-button:active{background-color:hsla(var(--color-primary),.8)}button.graphiql-execute-button:focus{outline:hsla(var(--color-primary),.8) auto 1px}button.graphiql-execute-button>svg{color:#fff;display:block;height:var(--px-16);margin:auto;width:var(--px-16)}button.graphiql-toolbar-menu{display:block;height:var(--toolbar-width);width:var(--toolbar-width)} - -/*!*********************************************************************************************************************!*\ - !*** css ../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js!./style.css ***! - \*********************************************************************************************************************/ -/* Everything */ -.graphiql-container { - background-color: hsl(var(--color-base)); - display: flex; - height: 100%; - margin: 0; - overflow: hidden; - width: 100%; -} -/* The sidebar */ -.graphiql-container .graphiql-sidebar { - display: flex; - flex-direction: column; - justify-content: space-between; - padding: var(--px-8); - width: var(--sidebar-width); -} -.graphiql-container .graphiql-sidebar .graphiql-sidebar-section { - display: flex; - flex-direction: column; - gap: var(--px-8); -} -.graphiql-container .graphiql-sidebar button { - display: flex; - align-items: center; - justify-content: center; - color: hsla(var(--color-neutral), var(--alpha-secondary)); - height: calc(var(--sidebar-width) - (2 * var(--px-8))); - width: calc(var(--sidebar-width) - (2 * var(--px-8))); -} -.graphiql-container .graphiql-sidebar button.active { - color: hsla(var(--color-neutral), 1); -} -.graphiql-container .graphiql-sidebar button:not(:first-child) { - margin-top: var(--px-4); -} -.graphiql-container .graphiql-sidebar button > svg { - height: var(--px-20); - width: var(--px-20); -} -/* The main content, i.e. everything except the sidebar */ -.graphiql-container .graphiql-main { - display: flex; - flex: 1; - min-width: 0; -} -/* The current session and tabs */ -.graphiql-container .graphiql-sessions { - background-color: hsla(var(--color-neutral), var(--alpha-background-light)); - /* Adding the 8px of padding to the inner border radius of the query editor */ - border-radius: calc(var(--border-radius-12) + var(--px-8)); - display: flex; - flex-direction: column; - flex: 1; - max-height: 100%; - margin: var(--px-16); - margin-left: 0; - min-width: 0; -} -/* The session header containing tabs and the logo */ -.graphiql-container .graphiql-session-header { - align-items: center; - display: flex; - justify-content: space-between; - height: var(--session-header-height); -} -/* The button to add a new tab */ -button.graphiql-tab-add { - height: 100%; - padding: var(--px-4); -} -button.graphiql-tab-add > svg { - color: hsla(var(--color-neutral), var(--alpha-secondary)); - display: block; - height: var(--px-16); - width: var(--px-16); -} -/* The right-hand-side of the session header */ -.graphiql-container .graphiql-session-header-right { - align-items: center; - display: flex; -} -/* The GraphiQL logo */ -.graphiql-container .graphiql-logo { - color: hsla(var(--color-neutral), var(--alpha-secondary)); - font-size: var(--font-size-h4); - font-weight: var(--font-weight-medium); - padding: var(--px-12) var(--px-16); -} -/* Undo default link styling for the default GraphiQL logo link */ -.graphiql-container .graphiql-logo .graphiql-logo-link { - color: hsla(var(--color-neutral), var(--alpha-secondary)); - text-decoration: none; -} -/* The editor of the session */ -.graphiql-container .graphiql-session { - display: flex; - flex: 1; - padding: 0 var(--px-8) var(--px-8); -} -/* All editors (query, variable, headers) */ -.graphiql-container .graphiql-editors { - background-color: hsl(var(--color-base)); - border-radius: calc(var(--border-radius-12)); - box-shadow: var(--popover-box-shadow); - display: flex; - flex: 1; - flex-direction: column; -} -.graphiql-container .graphiql-editors.full-height { - margin-top: calc(var(--px-8) - var(--session-header-height)); -} -/* The query editor and the toolbar */ -.graphiql-container .graphiql-query-editor { - border-bottom: 1px solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); - padding: var(--px-16); - column-gap: var(--px-16); - display: flex; - width: 100%; -} -/* The vertical toolbar next to the query editor */ -.graphiql-container .graphiql-toolbar { - width: var(--toolbar-width); -} -.graphiql-container .graphiql-toolbar > * + * { - margin-top: var(--px-8); -} -/* The toolbar icons */ -.graphiql-toolbar-icon { - color: hsla(var(--color-neutral), var(--alpha-tertiary)); - display: block; - height: calc(var(--toolbar-width) - (var(--px-8) * 2)); - width: calc(var(--toolbar-width) - (var(--px-8) * 2)); -} -/* The tab bar for editor tools */ -.graphiql-container .graphiql-editor-tools { - cursor: row-resize; - display: flex; - width: 100%; - column-gap: var(--px-8); - padding: var(--px-8); -} -.graphiql-container .graphiql-editor-tools button { - color: hsla(var(--color-neutral), var(--alpha-secondary)); -} -.graphiql-container .graphiql-editor-tools button.active { - color: hsla(var(--color-neutral), 1); -} -/* The tab buttons to switch between editor tools */ -.graphiql-container - .graphiql-editor-tools - > button:not(.graphiql-toggle-editor-tools) { - padding: var(--px-8) var(--px-12); -} -.graphiql-container .graphiql-editor-tools .graphiql-toggle-editor-tools { - margin-left: auto; -} -/* An editor tool, e.g. variable or header editor */ -.graphiql-container .graphiql-editor-tool { - flex: 1; - padding: var(--px-16); -} -/** - * The way CodeMirror editors are styled they overflow their containing - * element. For some OS-browser-combinations this might cause overlap issues, - * setting the position of this to `relative` makes sure this element will - * always be on top of any editors. - */ -.graphiql-container .graphiql-toolbar, -.graphiql-container .graphiql-editor-tools, -.graphiql-container .graphiql-editor-tool { - position: relative; -} -/* The response view */ -.graphiql-container .graphiql-response { - --editor-background: transparent; - display: flex; - width: 100%; - flex-direction: column; -} -/* The results editor wrapping container */ -.graphiql-container .graphiql-response .result-window { - position: relative; - flex: 1; -} -/* The footer below the response view */ -.graphiql-container .graphiql-footer { - border-top: 1px solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); -} -/* The plugin container */ -.graphiql-container .graphiql-plugin { - border-left: 1px solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); - flex: 1; - overflow-y: auto; - padding: var(--px-16); -} -/* Generic drag bar for horizontal resizing */ -.graphiql-horizontal-drag-bar { - width: var(--px-12); - cursor: col-resize; -} -.graphiql-horizontal-drag-bar:hover::after { - border: var(--px-2) solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); - border-radius: var(--border-radius-2); - content: ''; - display: block; - height: 25%; - margin: 0 auto; - position: relative; - /* (100% - 25%) / 2 = 37.5% */ - top: 37.5%; - width: 0; -} -.graphiql-container .graphiql-chevron-icon { - color: hsla(var(--color-neutral), var(--alpha-tertiary)); - display: block; - height: var(--px-12); - margin: var(--px-12); - width: var(--px-12); -} -/* Generic spin animation */ -.graphiql-spin { - animation: spin 0.8s linear 0s infinite; -} -@keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} -/* The header of the settings dialog */ -.graphiql-dialog .graphiql-dialog-header { - align-items: center; - display: flex; - justify-content: space-between; - padding: var(--px-24); -} -/* The title of the settings dialog */ -.graphiql-dialog .graphiql-dialog-title { - font-size: var(--font-size-h3); - font-weight: var(--font-weight-medium); - margin: 0; -} -/* A section inside the settings dialog */ -.graphiql-dialog .graphiql-dialog-section { - align-items: center; - border-top: 1px solid - hsla(var(--color-neutral), var(--alpha-background-heavy)); - display: flex; - justify-content: space-between; - padding: var(--px-24); -} -.graphiql-dialog .graphiql-dialog-section > :not(:first-child) { - margin-left: var(--px-24); -} -/* The section title in the settings dialog */ -.graphiql-dialog .graphiql-dialog-section-title { - font-size: var(--font-size-h4); - font-weight: var(--font-weight-medium); -} -/* The section caption in the settings dialog */ -.graphiql-dialog .graphiql-dialog-section-caption { - color: hsla(var(--color-neutral), var(--alpha-secondary)); -} -.graphiql-dialog .graphiql-warning-text { - color: hsl(var(--color-warning)); - font-weight: var(--font-weight-medium); -} -.graphiql-dialog .graphiql-table { - border-collapse: collapse; - width: 100%; -} -.graphiql-dialog .graphiql-table :is(th, td) { - border: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy)); - padding: var(--px-8) var(--px-12); -} -/* A single key the short-key dialog */ -.graphiql-dialog .graphiql-key { - background-color: hsla(var(--color-neutral), var(--alpha-background-medium)); - border-radius: var(--border-radius-4); - padding: var(--px-4); -} -/* Avoid showing native tooltips for icons with titles */ -.graphiql-container svg { - pointer-events: none; -} - - -/*# sourceMappingURL=graphiql.min.css.map*/ \ No newline at end of file diff --git a/netbox/project-static/dist/graphiql.min.js b/netbox/project-static/dist/graphiql.min.js deleted file mode 100644 index b7f9a866d54..00000000000 --- a/netbox/project-static/dist/graphiql.min.js +++ /dev/null @@ -1,83667 +0,0 @@ -/******/ (function() { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ "../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js": -/*!**************************************************************************************!*\ - !*** ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js ***! - \**************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _memoize = _interopRequireDefault(__webpack_require__(/*! @emotion/memoize */ "../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23 - -var index = (0, _memoize.default)(function (prop) { - return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 - /* o */ && prop.charCodeAt(1) === 110 - /* n */ && prop.charCodeAt(2) < 91; -} -/* Z+1 */); -var _default = index; -exports["default"] = _default; - -/***/ }), - -/***/ "../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js": -/*!**************************************************************************!*\ - !*** ../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js ***! - \**************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -function memoize(fn) { - var cache = {}; - return function (arg) { - if (cache[arg] === undefined) cache[arg] = fn(arg); - return cache[arg]; - }; -} -var _default = memoize; -exports["default"] = _default; - -/***/ }), - -/***/ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js": -/*!****************************************************************************!*\ - !*** ../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js ***! - \****************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.computePosition = exports.autoPlacement = exports.arrow = void 0; -exports.detectOverflow = detectOverflow; -exports.offset = exports.limitShift = exports.inline = exports.hide = exports.flip = void 0; -exports.rectToClientRect = rectToClientRect; -exports.size = exports.shift = void 0; -function getAlignment(placement) { - return placement.split('-')[1]; -} -function getLengthFromAxis(axis) { - return axis === 'y' ? 'height' : 'width'; -} -function getSide(placement) { - return placement.split('-')[0]; -} -function getMainAxisFromPlacement(placement) { - return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y'; -} -function computeCoordsFromPlacement(_ref, placement, rtl) { - let { - reference, - floating - } = _ref; - const commonX = reference.x + reference.width / 2 - floating.width / 2; - const commonY = reference.y + reference.height / 2 - floating.height / 2; - const mainAxis = getMainAxisFromPlacement(placement); - const length = getLengthFromAxis(mainAxis); - const commonAlign = reference[length] / 2 - floating[length] / 2; - const side = getSide(placement); - const isVertical = mainAxis === 'x'; - let coords; - switch (side) { - case 'top': - coords = { - x: commonX, - y: reference.y - floating.height - }; - break; - case 'bottom': - coords = { - x: commonX, - y: reference.y + reference.height - }; - break; - case 'right': - coords = { - x: reference.x + reference.width, - y: commonY - }; - break; - case 'left': - coords = { - x: reference.x - floating.width, - y: commonY - }; - break; - default: - coords = { - x: reference.x, - y: reference.y - }; - } - switch (getAlignment(placement)) { - case 'start': - coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); - break; - case 'end': - coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1); - break; - } - return coords; -} - -/** - * Computes the `x` and `y` coordinates that will place the floating element - * next to a reference element when it is given a certain positioning strategy. - * - * This export does not have any `platform` interface logic. You will need to - * write one for the platform you are using Floating UI with. - */ -const computePosition = async (reference, floating, config) => { - const { - placement = 'bottom', - strategy = 'absolute', - middleware = [], - platform - } = config; - const validMiddleware = middleware.filter(Boolean); - const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating)); - let rects = await platform.getElementRects({ - reference, - floating, - strategy - }); - let { - x, - y - } = computeCoordsFromPlacement(rects, placement, rtl); - let statefulPlacement = placement; - let middlewareData = {}; - let resetCount = 0; - for (let i = 0; i < validMiddleware.length; i++) { - const { - name, - fn - } = validMiddleware[i]; - const { - x: nextX, - y: nextY, - data, - reset - } = await fn({ - x, - y, - initialPlacement: placement, - placement: statefulPlacement, - strategy, - middlewareData, - rects, - platform, - elements: { - reference, - floating - } - }); - x = nextX != null ? nextX : x; - y = nextY != null ? nextY : y; - middlewareData = { - ...middlewareData, - [name]: { - ...middlewareData[name], - ...data - } - }; - if (reset && resetCount <= 50) { - resetCount++; - if (typeof reset === 'object') { - if (reset.placement) { - statefulPlacement = reset.placement; - } - if (reset.rects) { - rects = reset.rects === true ? await platform.getElementRects({ - reference, - floating, - strategy - }) : reset.rects; - } - ({ - x, - y - } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); - } - i = -1; - continue; - } - } - return { - x, - y, - placement: statefulPlacement, - strategy, - middlewareData - }; -}; -exports.computePosition = computePosition; -function evaluate(value, param) { - return typeof value === 'function' ? value(param) : value; -} -function expandPaddingObject(padding) { - return { - top: 0, - right: 0, - bottom: 0, - left: 0, - ...padding - }; -} -function getSideObjectFromPadding(padding) { - return typeof padding !== 'number' ? expandPaddingObject(padding) : { - top: padding, - right: padding, - bottom: padding, - left: padding - }; -} -function rectToClientRect(rect) { - return { - ...rect, - top: rect.y, - left: rect.x, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }; -} - -/** - * Resolves with an object of overflow side offsets that determine how much the - * element is overflowing a given clipping boundary on each side. - * - positive = overflowing the boundary by that number of pixels - * - negative = how many pixels left before it will overflow - * - 0 = lies flush with the boundary - * @see https://floating-ui.com/docs/detectOverflow - */ -async function detectOverflow(state, options) { - var _await$platform$isEle; - if (options === void 0) { - options = {}; - } - const { - x, - y, - platform, - rects, - elements, - strategy - } = state; - const { - boundary = 'clippingAncestors', - rootBoundary = 'viewport', - elementContext = 'floating', - altBoundary = false, - padding = 0 - } = evaluate(options, state); - const paddingObject = getSideObjectFromPadding(padding); - const altContext = elementContext === 'floating' ? 'reference' : 'floating'; - const element = elements[altBoundary ? altContext : elementContext]; - const clippingClientRect = rectToClientRect(await platform.getClippingRect({ - element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))), - boundary, - rootBoundary, - strategy - })); - const rect = elementContext === 'floating' ? { - ...rects.floating, - x, - y - } : rects.reference; - const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)); - const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || { - x: 1, - y: 1 - } : { - x: 1, - y: 1 - }; - const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({ - rect, - offsetParent, - strategy - }) : rect); - return { - top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, - bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, - left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, - right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x - }; -} -const min = Math.min; -const max = Math.max; -function within(min$1, value, max$1) { - return max(min$1, min(value, max$1)); -} - -/** - * Provides data to position an inner element of the floating element so that it - * appears centered to the reference element. - * @see https://floating-ui.com/docs/arrow - */ -const arrow = options => ({ - name: 'arrow', - options, - async fn(state) { - const { - x, - y, - placement, - rects, - platform, - elements - } = state; - // Since `element` is required, we don't Partial<> the type. - const { - element, - padding = 0 - } = evaluate(options, state) || {}; - if (element == null) { - return {}; - } - const paddingObject = getSideObjectFromPadding(padding); - const coords = { - x, - y - }; - const axis = getMainAxisFromPlacement(placement); - const length = getLengthFromAxis(axis); - const arrowDimensions = await platform.getDimensions(element); - const isYAxis = axis === 'y'; - const minProp = isYAxis ? 'top' : 'left'; - const maxProp = isYAxis ? 'bottom' : 'right'; - const clientProp = isYAxis ? 'clientHeight' : 'clientWidth'; - const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; - const startDiff = coords[axis] - rects.reference[axis]; - const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element)); - let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0; - - // DOM platform can return `window` as the `offsetParent`. - if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) { - clientSize = elements.floating[clientProp] || rects.floating[length]; - } - const centerToReference = endDiff / 2 - startDiff / 2; - - // If the padding is large enough that it causes the arrow to no longer be - // centered, modify the padding so that it is centered. - const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; - const minPadding = min(paddingObject[minProp], largestPossiblePadding); - const maxPadding = min(paddingObject[maxProp], largestPossiblePadding); - - // Make sure the arrow doesn't overflow the floating element if the center - // point is outside the floating element's bounds. - const min$1 = minPadding; - const max = clientSize - arrowDimensions[length] - maxPadding; - const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; - const offset = within(min$1, center, max); - - // If the reference is small enough that the arrow's padding causes it to - // to point to nothing for an aligned placement, adjust the offset of the - // floating element itself. This stops `shift()` from taking action, but can - // be worked around by calling it again after the `arrow()` if desired. - const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; - const alignmentOffset = shouldAddOffset ? center < min$1 ? min$1 - center : max - center : 0; - return { - [axis]: coords[axis] - alignmentOffset, - data: { - [axis]: offset, - centerOffset: center - offset - } - }; - } -}); -exports.arrow = arrow; -const sides = ['top', 'right', 'bottom', 'left']; -const allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-start", side + "-end"), []); -const oppositeSideMap = { - left: 'right', - right: 'left', - bottom: 'top', - top: 'bottom' -}; -function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]); -} -function getAlignmentSides(placement, rects, rtl) { - if (rtl === void 0) { - rtl = false; - } - const alignment = getAlignment(placement); - const mainAxis = getMainAxisFromPlacement(placement); - const length = getLengthFromAxis(mainAxis); - let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top'; - if (rects.reference[length] > rects.floating[length]) { - mainAlignmentSide = getOppositePlacement(mainAlignmentSide); - } - return { - main: mainAlignmentSide, - cross: getOppositePlacement(mainAlignmentSide) - }; -} -const oppositeAlignmentMap = { - start: 'end', - end: 'start' -}; -function getOppositeAlignmentPlacement(placement) { - return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]); -} -function getPlacementList(alignment, autoAlignment, allowedPlacements) { - const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement); - return allowedPlacementsSortedByAlignment.filter(placement => { - if (alignment) { - return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false); - } - return true; - }); -} -/** - * Optimizes the visibility of the floating element by choosing the placement - * that has the most space available automatically, without needing to specify a - * preferred placement. Alternative to `flip`. - * @see https://floating-ui.com/docs/autoPlacement - */ -const autoPlacement = function (options) { - if (options === void 0) { - options = {}; - } - return { - name: 'autoPlacement', - options, - async fn(state) { - var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE; - const { - rects, - middlewareData, - placement, - platform, - elements - } = state; - const { - crossAxis = false, - alignment, - allowedPlacements = allPlacements, - autoAlignment = true, - ...detectOverflowOptions - } = evaluate(options, state); - const placements = alignment !== undefined || allowedPlacements === allPlacements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements; - const overflow = await detectOverflow(state, detectOverflowOptions); - const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0; - const currentPlacement = placements[currentIndex]; - if (currentPlacement == null) { - return {}; - } - const { - main, - cross - } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); - - // Make `computeCoords` start from the right place. - if (placement !== currentPlacement) { - return { - reset: { - placement: placements[0] - } - }; - } - const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]]; - const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), { - placement: currentPlacement, - overflows: currentOverflows - }]; - const nextPlacement = placements[currentIndex + 1]; - - // There are more placements to check. - if (nextPlacement) { - return { - data: { - index: currentIndex + 1, - overflows: allOverflows - }, - reset: { - placement: nextPlacement - } - }; - } - const placementsSortedByMostSpace = allOverflows.map(d => { - const alignment = getAlignment(d.placement); - return [d.placement, alignment && crossAxis ? - // Check along the mainAxis and main crossAxis side. - d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) : - // Check only the mainAxis. - d.overflows[0], d.overflows]; - }).sort((a, b) => a[1] - b[1]); - const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0, - // Aligned placements should not check their opposite crossAxis - // side. - getAlignment(d[0]) ? 2 : 3).every(v => v <= 0)); - const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0]; - if (resetPlacement !== placement) { - return { - data: { - index: currentIndex + 1, - overflows: allOverflows - }, - reset: { - placement: resetPlacement - } - }; - } - return {}; - } - }; -}; -exports.autoPlacement = autoPlacement; -function getExpandedPlacements(placement) { - const oppositePlacement = getOppositePlacement(placement); - return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; -} -function getSideList(side, isStart, rtl) { - const lr = ['left', 'right']; - const rl = ['right', 'left']; - const tb = ['top', 'bottom']; - const bt = ['bottom', 'top']; - switch (side) { - case 'top': - case 'bottom': - if (rtl) return isStart ? rl : lr; - return isStart ? lr : rl; - case 'left': - case 'right': - return isStart ? tb : bt; - default: - return []; - } -} -function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { - const alignment = getAlignment(placement); - let list = getSideList(getSide(placement), direction === 'start', rtl); - if (alignment) { - list = list.map(side => side + "-" + alignment); - if (flipAlignment) { - list = list.concat(list.map(getOppositeAlignmentPlacement)); - } - } - return list; -} - -/** - * Optimizes the visibility of the floating element by flipping the `placement` - * in order to keep it in view when the preferred placement(s) will overflow the - * clipping boundary. Alternative to `autoPlacement`. - * @see https://floating-ui.com/docs/flip - */ -const flip = function (options) { - if (options === void 0) { - options = {}; - } - return { - name: 'flip', - options, - async fn(state) { - var _middlewareData$flip; - const { - placement, - middlewareData, - rects, - initialPlacement, - platform, - elements - } = state; - const { - mainAxis: checkMainAxis = true, - crossAxis: checkCrossAxis = true, - fallbackPlacements: specifiedFallbackPlacements, - fallbackStrategy = 'bestFit', - fallbackAxisSideDirection = 'none', - flipAlignment = true, - ...detectOverflowOptions - } = evaluate(options, state); - const side = getSide(placement); - const isBasePlacement = getSide(initialPlacement) === initialPlacement; - const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)); - const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); - if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') { - fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); - } - const placements = [initialPlacement, ...fallbackPlacements]; - const overflow = await detectOverflow(state, detectOverflowOptions); - const overflows = []; - let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; - if (checkMainAxis) { - overflows.push(overflow[side]); - } - if (checkCrossAxis) { - const { - main, - cross - } = getAlignmentSides(placement, rects, rtl); - overflows.push(overflow[main], overflow[cross]); - } - overflowsData = [...overflowsData, { - placement, - overflows - }]; - - // One or more sides is overflowing. - if (!overflows.every(side => side <= 0)) { - var _middlewareData$flip2, _overflowsData$filter; - const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; - const nextPlacement = placements[nextIndex]; - if (nextPlacement) { - // Try next placement and re-run the lifecycle. - return { - data: { - index: nextIndex, - overflows: overflowsData - }, - reset: { - placement: nextPlacement - } - }; - } - - // First, find the candidates that fit on the mainAxis side of overflow, - // then find the placement that fits the best on the main crossAxis side. - let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement; - - // Otherwise fallback. - if (!resetPlacement) { - switch (fallbackStrategy) { - case 'bestFit': - { - var _overflowsData$map$so; - const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0]; - if (placement) { - resetPlacement = placement; - } - break; - } - case 'initialPlacement': - resetPlacement = initialPlacement; - break; - } - } - if (placement !== resetPlacement) { - return { - reset: { - placement: resetPlacement - } - }; - } - } - return {}; - } - }; -}; -exports.flip = flip; -function getSideOffsets(overflow, rect) { - return { - top: overflow.top - rect.height, - right: overflow.right - rect.width, - bottom: overflow.bottom - rect.height, - left: overflow.left - rect.width - }; -} -function isAnySideFullyClipped(overflow) { - return sides.some(side => overflow[side] >= 0); -} -/** - * Provides data to hide the floating element in applicable situations, such as - * when it is not in the same clipping context as the reference element. - * @see https://floating-ui.com/docs/hide - */ -const hide = function (options) { - if (options === void 0) { - options = {}; - } - return { - name: 'hide', - options, - async fn(state) { - const { - rects - } = state; - const { - strategy = 'referenceHidden', - ...detectOverflowOptions - } = evaluate(options, state); - switch (strategy) { - case 'referenceHidden': - { - const overflow = await detectOverflow(state, { - ...detectOverflowOptions, - elementContext: 'reference' - }); - const offsets = getSideOffsets(overflow, rects.reference); - return { - data: { - referenceHiddenOffsets: offsets, - referenceHidden: isAnySideFullyClipped(offsets) - } - }; - } - case 'escaped': - { - const overflow = await detectOverflow(state, { - ...detectOverflowOptions, - altBoundary: true - }); - const offsets = getSideOffsets(overflow, rects.floating); - return { - data: { - escapedOffsets: offsets, - escaped: isAnySideFullyClipped(offsets) - } - }; - } - default: - { - return {}; - } - } - } - }; -}; -exports.hide = hide; -function getBoundingRect(rects) { - const minX = min(...rects.map(rect => rect.left)); - const minY = min(...rects.map(rect => rect.top)); - const maxX = max(...rects.map(rect => rect.right)); - const maxY = max(...rects.map(rect => rect.bottom)); - return { - x: minX, - y: minY, - width: maxX - minX, - height: maxY - minY - }; -} -function getRectsByLine(rects) { - const sortedRects = rects.slice().sort((a, b) => a.y - b.y); - const groups = []; - let prevRect = null; - for (let i = 0; i < sortedRects.length; i++) { - const rect = sortedRects[i]; - if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) { - groups.push([rect]); - } else { - groups[groups.length - 1].push(rect); - } - prevRect = rect; - } - return groups.map(rect => rectToClientRect(getBoundingRect(rect))); -} -/** - * Provides improved positioning for inline reference elements that can span - * over multiple lines, such as hyperlinks or range selections. - * @see https://floating-ui.com/docs/inline - */ -const inline = function (options) { - if (options === void 0) { - options = {}; - } - return { - name: 'inline', - options, - async fn(state) { - const { - placement, - elements, - rects, - platform, - strategy - } = state; - // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a - // ClientRect's bounds, despite the event listener being triggered. A - // padding of 2 seems to handle this issue. - const { - padding = 2, - x, - y - } = evaluate(options, state); - const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []); - const clientRects = getRectsByLine(nativeClientRects); - const fallback = rectToClientRect(getBoundingRect(nativeClientRects)); - const paddingObject = getSideObjectFromPadding(padding); - function getBoundingClientRect() { - // There are two rects and they are disjoined. - if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) { - // Find the first rect in which the point is fully inside. - return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback; - } - - // There are 2 or more connected rects. - if (clientRects.length >= 2) { - if (getMainAxisFromPlacement(placement) === 'x') { - const firstRect = clientRects[0]; - const lastRect = clientRects[clientRects.length - 1]; - const isTop = getSide(placement) === 'top'; - const top = firstRect.top; - const bottom = lastRect.bottom; - const left = isTop ? firstRect.left : lastRect.left; - const right = isTop ? firstRect.right : lastRect.right; - const width = right - left; - const height = bottom - top; - return { - top, - bottom, - left, - right, - width, - height, - x: left, - y: top - }; - } - const isLeftSide = getSide(placement) === 'left'; - const maxRight = max(...clientRects.map(rect => rect.right)); - const minLeft = min(...clientRects.map(rect => rect.left)); - const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight); - const top = measureRects[0].top; - const bottom = measureRects[measureRects.length - 1].bottom; - const left = minLeft; - const right = maxRight; - const width = right - left; - const height = bottom - top; - return { - top, - bottom, - left, - right, - width, - height, - x: left, - y: top - }; - } - return fallback; - } - const resetRects = await platform.getElementRects({ - reference: { - getBoundingClientRect - }, - floating: elements.floating, - strategy - }); - if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) { - return { - reset: { - rects: resetRects - } - }; - } - return {}; - } - }; -}; -exports.inline = inline; -async function convertValueToCoords(state, options) { - const { - placement, - platform, - elements - } = state; - const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)); - const side = getSide(placement); - const alignment = getAlignment(placement); - const isVertical = getMainAxisFromPlacement(placement) === 'x'; - const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1; - const crossAxisMulti = rtl && isVertical ? -1 : 1; - const rawValue = evaluate(options, state); - - // eslint-disable-next-line prefer-const - let { - mainAxis, - crossAxis, - alignmentAxis - } = typeof rawValue === 'number' ? { - mainAxis: rawValue, - crossAxis: 0, - alignmentAxis: null - } : { - mainAxis: 0, - crossAxis: 0, - alignmentAxis: null, - ...rawValue - }; - if (alignment && typeof alignmentAxis === 'number') { - crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis; - } - return isVertical ? { - x: crossAxis * crossAxisMulti, - y: mainAxis * mainAxisMulti - } : { - x: mainAxis * mainAxisMulti, - y: crossAxis * crossAxisMulti - }; -} - -/** - * Modifies the placement by translating the floating element along the - * specified axes. - * A number (shorthand for `mainAxis` or distance), or an axes configuration - * object may be passed. - * @see https://floating-ui.com/docs/offset - */ -const offset = function (options) { - if (options === void 0) { - options = 0; - } - return { - name: 'offset', - options, - async fn(state) { - const { - x, - y - } = state; - const diffCoords = await convertValueToCoords(state, options); - return { - x: x + diffCoords.x, - y: y + diffCoords.y, - data: diffCoords - }; - } - }; -}; -exports.offset = offset; -function getCrossAxis(axis) { - return axis === 'x' ? 'y' : 'x'; -} - -/** - * Optimizes the visibility of the floating element by shifting it in order to - * keep it in view when it will overflow the clipping boundary. - * @see https://floating-ui.com/docs/shift - */ -const shift = function (options) { - if (options === void 0) { - options = {}; - } - return { - name: 'shift', - options, - async fn(state) { - const { - x, - y, - placement - } = state; - const { - mainAxis: checkMainAxis = true, - crossAxis: checkCrossAxis = false, - limiter = { - fn: _ref => { - let { - x, - y - } = _ref; - return { - x, - y - }; - } - }, - ...detectOverflowOptions - } = evaluate(options, state); - const coords = { - x, - y - }; - const overflow = await detectOverflow(state, detectOverflowOptions); - const mainAxis = getMainAxisFromPlacement(getSide(placement)); - const crossAxis = getCrossAxis(mainAxis); - let mainAxisCoord = coords[mainAxis]; - let crossAxisCoord = coords[crossAxis]; - if (checkMainAxis) { - const minSide = mainAxis === 'y' ? 'top' : 'left'; - const maxSide = mainAxis === 'y' ? 'bottom' : 'right'; - const min = mainAxisCoord + overflow[minSide]; - const max = mainAxisCoord - overflow[maxSide]; - mainAxisCoord = within(min, mainAxisCoord, max); - } - if (checkCrossAxis) { - const minSide = crossAxis === 'y' ? 'top' : 'left'; - const maxSide = crossAxis === 'y' ? 'bottom' : 'right'; - const min = crossAxisCoord + overflow[minSide]; - const max = crossAxisCoord - overflow[maxSide]; - crossAxisCoord = within(min, crossAxisCoord, max); - } - const limitedCoords = limiter.fn({ - ...state, - [mainAxis]: mainAxisCoord, - [crossAxis]: crossAxisCoord - }); - return { - ...limitedCoords, - data: { - x: limitedCoords.x - x, - y: limitedCoords.y - y - } - }; - } - }; -}; -/** - * Built-in `limiter` that will stop `shift()` at a certain point. - */ -exports.shift = shift; -const limitShift = function (options) { - if (options === void 0) { - options = {}; - } - return { - options, - fn(state) { - const { - x, - y, - placement, - rects, - middlewareData - } = state; - const { - offset = 0, - mainAxis: checkMainAxis = true, - crossAxis: checkCrossAxis = true - } = evaluate(options, state); - const coords = { - x, - y - }; - const mainAxis = getMainAxisFromPlacement(placement); - const crossAxis = getCrossAxis(mainAxis); - let mainAxisCoord = coords[mainAxis]; - let crossAxisCoord = coords[crossAxis]; - const rawOffset = evaluate(offset, state); - const computedOffset = typeof rawOffset === 'number' ? { - mainAxis: rawOffset, - crossAxis: 0 - } : { - mainAxis: 0, - crossAxis: 0, - ...rawOffset - }; - if (checkMainAxis) { - const len = mainAxis === 'y' ? 'height' : 'width'; - const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; - const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; - if (mainAxisCoord < limitMin) { - mainAxisCoord = limitMin; - } else if (mainAxisCoord > limitMax) { - mainAxisCoord = limitMax; - } - } - if (checkCrossAxis) { - var _middlewareData$offse, _middlewareData$offse2; - const len = mainAxis === 'y' ? 'width' : 'height'; - const isOriginSide = ['top', 'left'].includes(getSide(placement)); - const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis); - const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0); - if (crossAxisCoord < limitMin) { - crossAxisCoord = limitMin; - } else if (crossAxisCoord > limitMax) { - crossAxisCoord = limitMax; - } - } - return { - [mainAxis]: mainAxisCoord, - [crossAxis]: crossAxisCoord - }; - } - }; -}; - -/** - * Provides data that allows you to change the size of the floating element — - * for instance, prevent it from overflowing the clipping boundary or match the - * width of the reference element. - * @see https://floating-ui.com/docs/size - */ -exports.limitShift = limitShift; -const size = function (options) { - if (options === void 0) { - options = {}; - } - return { - name: 'size', - options, - async fn(state) { - const { - placement, - rects, - platform, - elements - } = state; - const { - apply = () => {}, - ...detectOverflowOptions - } = evaluate(options, state); - const overflow = await detectOverflow(state, detectOverflowOptions); - const side = getSide(placement); - const alignment = getAlignment(placement); - const axis = getMainAxisFromPlacement(placement); - const isXAxis = axis === 'x'; - const { - width, - height - } = rects.floating; - let heightSide; - let widthSide; - if (side === 'top' || side === 'bottom') { - heightSide = side; - widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right'; - } else { - widthSide = side; - heightSide = alignment === 'end' ? 'top' : 'bottom'; - } - const overflowAvailableHeight = height - overflow[heightSide]; - const overflowAvailableWidth = width - overflow[widthSide]; - const noShift = !state.middlewareData.shift; - let availableHeight = overflowAvailableHeight; - let availableWidth = overflowAvailableWidth; - if (isXAxis) { - const maximumClippingWidth = width - overflow.left - overflow.right; - availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth; - } else { - const maximumClippingHeight = height - overflow.top - overflow.bottom; - availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight; - } - if (noShift && !alignment) { - const xMin = max(overflow.left, 0); - const xMax = max(overflow.right, 0); - const yMin = max(overflow.top, 0); - const yMax = max(overflow.bottom, 0); - if (isXAxis) { - availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)); - } else { - availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)); - } - } - await apply({ - ...state, - availableWidth, - availableHeight - }); - const nextDimensions = await platform.getDimensions(elements.floating); - if (width !== nextDimensions.width || height !== nextDimensions.height) { - return { - reset: { - rects: true - } - }; - } - return {}; - } - }; -}; -exports.size = size; - -/***/ }), - -/***/ "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js": -/*!**************************************************************************!*\ - !*** ../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js ***! - \**************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "arrow", ({ - enumerable: true, - get: function () { - return _core.arrow; - } -})); -Object.defineProperty(exports, "autoPlacement", ({ - enumerable: true, - get: function () { - return _core.autoPlacement; - } -})); -exports.autoUpdate = autoUpdate; -exports.computePosition = void 0; -Object.defineProperty(exports, "detectOverflow", ({ - enumerable: true, - get: function () { - return _core.detectOverflow; - } -})); -Object.defineProperty(exports, "flip", ({ - enumerable: true, - get: function () { - return _core.flip; - } -})); -exports.getOverflowAncestors = getOverflowAncestors; -Object.defineProperty(exports, "hide", ({ - enumerable: true, - get: function () { - return _core.hide; - } -})); -Object.defineProperty(exports, "inline", ({ - enumerable: true, - get: function () { - return _core.inline; - } -})); -Object.defineProperty(exports, "limitShift", ({ - enumerable: true, - get: function () { - return _core.limitShift; - } -})); -Object.defineProperty(exports, "offset", ({ - enumerable: true, - get: function () { - return _core.offset; - } -})); -exports.platform = void 0; -Object.defineProperty(exports, "shift", ({ - enumerable: true, - get: function () { - return _core.shift; - } -})); -Object.defineProperty(exports, "size", ({ - enumerable: true, - get: function () { - return _core.size; - } -})); -var _core = __webpack_require__(/*! @floating-ui/core */ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js"); -function getWindow(node) { - var _node$ownerDocument; - return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; -} -function getComputedStyle$1(element) { - return getWindow(element).getComputedStyle(element); -} -function isNode(value) { - return value instanceof getWindow(value).Node; -} -function getNodeName(node) { - return isNode(node) ? (node.nodeName || '').toLowerCase() : ''; -} -function isHTMLElement(value) { - return value instanceof getWindow(value).HTMLElement; -} -function isElement(value) { - return value instanceof getWindow(value).Element; -} -function isShadowRoot(node) { - // Browsers without `ShadowRoot` support. - if (typeof ShadowRoot === 'undefined') { - return false; - } - const OwnElement = getWindow(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; -} -function isOverflowElement(element) { - const { - overflow, - overflowX, - overflowY, - display - } = getComputedStyle$1(element); - return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display); -} -function isTableElement(element) { - return ['table', 'td', 'th'].includes(getNodeName(element)); -} -function isContainingBlock(element) { - const safari = isSafari(); - const css = getComputedStyle$1(element); - - // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - return css.transform !== 'none' || css.perspective !== 'none' || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value)); -} -function isSafari() { - if (typeof CSS === 'undefined' || !CSS.supports) return false; - return CSS.supports('-webkit-backdrop-filter', 'none'); -} -function isLastTraversableNode(node) { - return ['html', 'body', '#document'].includes(getNodeName(node)); -} -const min = Math.min; -const max = Math.max; -const round = Math.round; -function getCssDimensions(element) { - const css = getComputedStyle$1(element); - // In testing environments, the `width` and `height` properties are empty - // strings for SVG elements, returning NaN. Fallback to `0` in this case. - let width = parseFloat(css.width) || 0; - let height = parseFloat(css.height) || 0; - const hasOffset = isHTMLElement(element); - const offsetWidth = hasOffset ? element.offsetWidth : width; - const offsetHeight = hasOffset ? element.offsetHeight : height; - const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; - if (shouldFallback) { - width = offsetWidth; - height = offsetHeight; - } - return { - width, - height, - fallback: shouldFallback - }; -} -function unwrapElement(element) { - return !isElement(element) ? element.contextElement : element; -} -const FALLBACK_SCALE = { - x: 1, - y: 1 -}; -function getScale(element) { - const domElement = unwrapElement(element); - if (!isHTMLElement(domElement)) { - return FALLBACK_SCALE; - } - const rect = domElement.getBoundingClientRect(); - const { - width, - height, - fallback - } = getCssDimensions(domElement); - let x = (fallback ? round(rect.width) : rect.width) / width; - let y = (fallback ? round(rect.height) : rect.height) / height; - - // 0, NaN, or Infinity should always fallback to 1. - - if (!x || !Number.isFinite(x)) { - x = 1; - } - if (!y || !Number.isFinite(y)) { - y = 1; - } - return { - x, - y - }; -} -const noOffsets = { - x: 0, - y: 0 -}; -function getVisualOffsets(element, isFixed, floatingOffsetParent) { - var _win$visualViewport, _win$visualViewport2; - if (isFixed === void 0) { - isFixed = true; - } - if (!isSafari()) { - return noOffsets; - } - const win = element ? getWindow(element) : window; - if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) { - return noOffsets; - } - return { - x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0, - y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0 - }; -} -function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { - if (includeScale === void 0) { - includeScale = false; - } - if (isFixedStrategy === void 0) { - isFixedStrategy = false; - } - const clientRect = element.getBoundingClientRect(); - const domElement = unwrapElement(element); - let scale = FALLBACK_SCALE; - if (includeScale) { - if (offsetParent) { - if (isElement(offsetParent)) { - scale = getScale(offsetParent); - } - } else { - scale = getScale(element); - } - } - const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent); - let x = (clientRect.left + visualOffsets.x) / scale.x; - let y = (clientRect.top + visualOffsets.y) / scale.y; - let width = clientRect.width / scale.x; - let height = clientRect.height / scale.y; - if (domElement) { - const win = getWindow(domElement); - const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; - let currentIFrame = win.frameElement; - while (currentIFrame && offsetParent && offsetWin !== win) { - const iframeScale = getScale(currentIFrame); - const iframeRect = currentIFrame.getBoundingClientRect(); - const css = getComputedStyle(currentIFrame); - iframeRect.x += (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; - iframeRect.y += (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; - x *= iframeScale.x; - y *= iframeScale.y; - width *= iframeScale.x; - height *= iframeScale.y; - x += iframeRect.x; - y += iframeRect.y; - currentIFrame = getWindow(currentIFrame).frameElement; - } - } - return (0, _core.rectToClientRect)({ - width, - height, - x, - y - }); -} -function getDocumentElement(node) { - return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement; -} -function getNodeScroll(element) { - if (isElement(element)) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; - } - return { - scrollLeft: element.pageXOffset, - scrollTop: element.pageYOffset - }; -} -function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { - let { - rect, - offsetParent, - strategy - } = _ref; - const isOffsetParentAnElement = isHTMLElement(offsetParent); - const documentElement = getDocumentElement(offsetParent); - if (offsetParent === documentElement) { - return rect; - } - let scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - let scale = { - x: 1, - y: 1 - }; - const offsets = { - x: 0, - y: 0 - }; - if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') { - if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - if (isHTMLElement(offsetParent)) { - const offsetRect = getBoundingClientRect(offsetParent); - scale = getScale(offsetParent); - offsets.x = offsetRect.x + offsetParent.clientLeft; - offsets.y = offsetRect.y + offsetParent.clientTop; - } - } - return { - width: rect.width * scale.x, - height: rect.height * scale.y, - x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x, - y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y - }; -} -function getWindowScrollBarX(element) { - // If has a CSS width greater than the viewport, then this will be - // incorrect for RTL. - return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft; -} - -// Gets the entire size of the scrollable document area, even extending outside -// of the `` and `` rect bounds if horizontally scrollable. -function getDocumentRect(element) { - const html = getDocumentElement(element); - const scroll = getNodeScroll(element); - const body = element.ownerDocument.body; - const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); - const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); - let x = -scroll.scrollLeft + getWindowScrollBarX(element); - const y = -scroll.scrollTop; - if (getComputedStyle$1(body).direction === 'rtl') { - x += max(html.clientWidth, body.clientWidth) - width; - } - return { - width, - height, - x, - y - }; -} -function getParentNode(node) { - if (getNodeName(node) === 'html') { - return node; - } - const result = - // Step into the shadow DOM of the parent of a slotted node. - node.assignedSlot || - // DOM Element detected. - node.parentNode || - // ShadowRoot detected. - isShadowRoot(node) && node.host || - // Fallback. - getDocumentElement(node); - return isShadowRoot(result) ? result.host : result; -} -function getNearestOverflowAncestor(node) { - const parentNode = getParentNode(node); - if (isLastTraversableNode(parentNode)) { - // `getParentNode` will never return a `Document` due to the fallback - // check, so it's either the or element. - return parentNode.ownerDocument.body; - } - if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { - return parentNode; - } - return getNearestOverflowAncestor(parentNode); -} -function getOverflowAncestors(node, list) { - var _node$ownerDocument; - if (list === void 0) { - list = []; - } - const scrollableAncestor = getNearestOverflowAncestor(node); - const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body); - const win = getWindow(scrollableAncestor); - if (isBody) { - return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []); - } - return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor)); -} -function getViewportRect(element, strategy) { - const win = getWindow(element); - const html = getDocumentElement(element); - const visualViewport = win.visualViewport; - let width = html.clientWidth; - let height = html.clientHeight; - let x = 0; - let y = 0; - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; - const visualViewportBased = isSafari(); - if (!visualViewportBased || visualViewportBased && strategy === 'fixed') { - x = visualViewport.offsetLeft; - y = visualViewport.offsetTop; - } - } - return { - width, - height, - x, - y - }; -} - -// Returns the inner client rect, subtracting scrollbars if present. -function getInnerBoundingClientRect(element, strategy) { - const clientRect = getBoundingClientRect(element, true, strategy === 'fixed'); - const top = clientRect.top + element.clientTop; - const left = clientRect.left + element.clientLeft; - const scale = isHTMLElement(element) ? getScale(element) : { - x: 1, - y: 1 - }; - const width = element.clientWidth * scale.x; - const height = element.clientHeight * scale.y; - const x = left * scale.x; - const y = top * scale.y; - return { - width, - height, - x, - y - }; -} -function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { - let rect; - if (clippingAncestor === 'viewport') { - rect = getViewportRect(element, strategy); - } else if (clippingAncestor === 'document') { - rect = getDocumentRect(getDocumentElement(element)); - } else if (isElement(clippingAncestor)) { - rect = getInnerBoundingClientRect(clippingAncestor, strategy); - } else { - const visualOffsets = getVisualOffsets(element); - rect = { - ...clippingAncestor, - x: clippingAncestor.x - visualOffsets.x, - y: clippingAncestor.y - visualOffsets.y - }; - } - return (0, _core.rectToClientRect)(rect); -} -function hasFixedPositionAncestor(element, stopNode) { - const parentNode = getParentNode(element); - if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) { - return false; - } - return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode); -} - -// A "clipping ancestor" is an `overflow` element with the characteristic of -// clipping (or hiding) child elements. This returns all clipping ancestors -// of the given element up the tree. -function getClippingElementAncestors(element, cache) { - const cachedResult = cache.get(element); - if (cachedResult) { - return cachedResult; - } - let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body'); - let currentContainingBlockComputedStyle = null; - const elementIsFixed = getComputedStyle$1(element).position === 'fixed'; - let currentNode = elementIsFixed ? getParentNode(element) : element; - - // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { - const computedStyle = getComputedStyle$1(currentNode); - const currentNodeIsContaining = isContainingBlock(currentNode); - if (!currentNodeIsContaining && computedStyle.position === 'fixed') { - currentContainingBlockComputedStyle = null; - } - const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode); - if (shouldDropCurrentNode) { - // Drop non-containing blocks. - result = result.filter(ancestor => ancestor !== currentNode); - } else { - // Record last containing block for next iteration. - currentContainingBlockComputedStyle = computedStyle; - } - currentNode = getParentNode(currentNode); - } - cache.set(element, result); - return result; -} - -// Gets the maximum area that the element is visible in due to any number of -// clipping ancestors. -function getClippingRect(_ref) { - let { - element, - boundary, - rootBoundary, - strategy - } = _ref; - const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary); - const clippingAncestors = [...elementClippingAncestors, rootBoundary]; - const firstClippingAncestor = clippingAncestors[0]; - const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => { - const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy); - accRect.top = max(rect.top, accRect.top); - accRect.right = min(rect.right, accRect.right); - accRect.bottom = min(rect.bottom, accRect.bottom); - accRect.left = max(rect.left, accRect.left); - return accRect; - }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy)); - return { - width: clippingRect.right - clippingRect.left, - height: clippingRect.bottom - clippingRect.top, - x: clippingRect.left, - y: clippingRect.top - }; -} -function getDimensions(element) { - return getCssDimensions(element); -} -function getTrueOffsetParent(element, polyfill) { - if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') { - return null; - } - if (polyfill) { - return polyfill(element); - } - return element.offsetParent; -} -function getContainingBlock(element) { - let currentNode = getParentNode(element); - while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { - if (isContainingBlock(currentNode)) { - return currentNode; - } else { - currentNode = getParentNode(currentNode); - } - } - return null; -} - -// Gets the closest ancestor positioned element. Handles some edge cases, -// such as table ancestors and cross browser bugs. -function getOffsetParent(element, polyfill) { - const window = getWindow(element); - if (!isHTMLElement(element)) { - return window; - } - let offsetParent = getTrueOffsetParent(element, polyfill); - while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { - offsetParent = getTrueOffsetParent(offsetParent, polyfill); - } - if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) { - return window; - } - return offsetParent || getContainingBlock(element) || window; -} -function getRectRelativeToOffsetParent(element, offsetParent, strategy) { - const isOffsetParentAnElement = isHTMLElement(offsetParent); - const documentElement = getDocumentElement(offsetParent); - const isFixed = strategy === 'fixed'; - const rect = getBoundingClientRect(element, true, isFixed, offsetParent); - let scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - const offsets = { - x: 0, - y: 0 - }; - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - if (isHTMLElement(offsetParent)) { - const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); - offsets.x = offsetRect.x + offsetParent.clientLeft; - offsets.y = offsetRect.y + offsetParent.clientTop; - } else if (documentElement) { - offsets.x = getWindowScrollBarX(documentElement); - } - } - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; -} -const platform = { - getClippingRect, - convertOffsetParentRelativeRectToViewportRelativeRect, - isElement, - getDimensions, - getOffsetParent, - getDocumentElement, - getScale, - async getElementRects(_ref) { - let { - reference, - floating, - strategy - } = _ref; - const getOffsetParentFn = this.getOffsetParent || getOffsetParent; - const getDimensionsFn = this.getDimensions; - return { - reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy), - floating: { - x: 0, - y: 0, - ...(await getDimensionsFn(floating)) - } - }; - }, - getClientRects: element => Array.from(element.getClientRects()), - isRTL: element => getComputedStyle$1(element).direction === 'rtl' -}; - -/** - * Automatically updates the position of the floating element when necessary. - * Should only be called when the floating element is mounted on the DOM or - * visible on the screen. - * @returns cleanup function that should be invoked when the floating element is - * removed from the DOM or hidden from the screen. - * @see https://floating-ui.com/docs/autoUpdate - */ -exports.platform = platform; -function autoUpdate(reference, floating, update, options) { - if (options === void 0) { - options = {}; - } - const { - ancestorScroll = true, - ancestorResize = true, - elementResize = true, - animationFrame = false - } = options; - const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : []; - ancestors.forEach(ancestor => { - // ignores Window, checks for [object VisualViewport] - const isVisualViewport = !isElement(ancestor) && ancestor.toString().includes('V'); - if (ancestorScroll && (animationFrame ? isVisualViewport : true)) { - ancestor.addEventListener('scroll', update, { - passive: true - }); - } - ancestorResize && ancestor.addEventListener('resize', update); - }); - let observer = null; - if (elementResize) { - observer = new ResizeObserver(() => { - update(); - }); - isElement(reference) && !animationFrame && observer.observe(reference); - if (!isElement(reference) && reference.contextElement && !animationFrame) { - observer.observe(reference.contextElement); - } - observer.observe(floating); - } - let frameId; - let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; - if (animationFrame) { - frameLoop(); - } - function frameLoop() { - const nextRefRect = getBoundingClientRect(reference); - if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) { - update(); - } - prevRefRect = nextRefRect; - frameId = requestAnimationFrame(frameLoop); - } - update(); - return () => { - var _observer; - ancestors.forEach(ancestor => { - ancestorScroll && ancestor.removeEventListener('scroll', update); - ancestorResize && ancestor.removeEventListener('resize', update); - }); - (_observer = observer) == null ? void 0 : _observer.disconnect(); - observer = null; - if (animationFrame) { - cancelAnimationFrame(frameId); - } - }; -} - -/** - * Computes the `x` and `y` coordinates that will place the floating element - * next to a reference element when it is given a certain CSS positioning - * strategy. - */ -const computePosition = (reference, floating, options) => { - // This caches the expensive `getClippingElementAncestors` function so that - // multiple lifecycle resets re-use the same result. It only lives for a - // single call. If other functions become expensive, we can add them as well. - const cache = new Map(); - const mergedOptions = { - platform, - ...options - }; - const platformWithCache = { - ...mergedOptions.platform, - _c: cache - }; - return (0, _core.computePosition)(reference, floating, { - ...mergedOptions, - platform: platformWithCache - }); -}; -exports.computePosition = computePosition; - -/***/ }), - -/***/ "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js": -/*!**************************************************************************************!*\ - !*** ../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js ***! - \**************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.arrow = void 0; -Object.defineProperty(exports, "autoPlacement", ({ - enumerable: true, - get: function () { - return _dom.autoPlacement; - } -})); -Object.defineProperty(exports, "autoUpdate", ({ - enumerable: true, - get: function () { - return _dom.autoUpdate; - } -})); -Object.defineProperty(exports, "computePosition", ({ - enumerable: true, - get: function () { - return _dom.computePosition; - } -})); -Object.defineProperty(exports, "detectOverflow", ({ - enumerable: true, - get: function () { - return _dom.detectOverflow; - } -})); -Object.defineProperty(exports, "flip", ({ - enumerable: true, - get: function () { - return _dom.flip; - } -})); -Object.defineProperty(exports, "getOverflowAncestors", ({ - enumerable: true, - get: function () { - return _dom.getOverflowAncestors; - } -})); -Object.defineProperty(exports, "hide", ({ - enumerable: true, - get: function () { - return _dom.hide; - } -})); -Object.defineProperty(exports, "inline", ({ - enumerable: true, - get: function () { - return _dom.inline; - } -})); -Object.defineProperty(exports, "limitShift", ({ - enumerable: true, - get: function () { - return _dom.limitShift; - } -})); -Object.defineProperty(exports, "offset", ({ - enumerable: true, - get: function () { - return _dom.offset; - } -})); -Object.defineProperty(exports, "platform", ({ - enumerable: true, - get: function () { - return _dom.platform; - } -})); -Object.defineProperty(exports, "shift", ({ - enumerable: true, - get: function () { - return _dom.shift; - } -})); -Object.defineProperty(exports, "size", ({ - enumerable: true, - get: function () { - return _dom.size; - } -})); -exports.useFloating = useFloating; -var _dom = __webpack_require__(/*! @floating-ui/dom */ "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js"); -var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); -var ReactDOM = _interopRequireWildcard(__webpack_require__(/*! react-dom */ "react-dom")); -function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } -function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } -/** - * Provides data to position an inner element of the floating element so that it - * appears centered to the reference element. - * This wraps the core `arrow` middleware to allow React refs as the element. - * @see https://floating-ui.com/docs/arrow - */ -const arrow = options => { - function isRef(value) { - return {}.hasOwnProperty.call(value, 'current'); - } - return { - name: 'arrow', - options, - fn(state) { - const { - element, - padding - } = typeof options === 'function' ? options(state) : options; - if (element && isRef(element)) { - if (element.current != null) { - return (0, _dom.arrow)({ - element: element.current, - padding - }).fn(state); - } - return {}; - } else if (element) { - return (0, _dom.arrow)({ - element, - padding - }).fn(state); - } - return {}; - } - }; -}; -exports.arrow = arrow; -var index = typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect; - -// Fork of `fast-deep-equal` that only does the comparisons we need and compares -// functions -function deepEqual(a, b) { - if (a === b) { - return true; - } - if (typeof a !== typeof b) { - return false; - } - if (typeof a === 'function' && a.toString() === b.toString()) { - return true; - } - let length, i, keys; - if (a && b && typeof a == 'object') { - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) { - if (!deepEqual(a[i], b[i])) { - return false; - } - } - return true; - } - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) { - return false; - } - for (i = length; i-- !== 0;) { - if (!{}.hasOwnProperty.call(b, keys[i])) { - return false; - } - } - for (i = length; i-- !== 0;) { - const key = keys[i]; - if (key === '_owner' && a.$$typeof) { - continue; - } - if (!deepEqual(a[key], b[key])) { - return false; - } - } - return true; - } - return a !== a && b !== b; -} -function getDPR(element) { - if (typeof window === 'undefined') { - return 1; - } - const win = element.ownerDocument.defaultView || window; - return win.devicePixelRatio || 1; -} -function roundByDPR(element, value) { - const dpr = getDPR(element); - return Math.round(value * dpr) / dpr; -} -function useLatestRef(value) { - const ref = React.useRef(value); - index(() => { - ref.current = value; - }); - return ref; -} - -/** - * Provides data to position a floating element. - * @see https://floating-ui.com/docs/react - */ -function useFloating(options) { - if (options === void 0) { - options = {}; - } - const { - placement = 'bottom', - strategy = 'absolute', - middleware = [], - platform, - elements: { - reference: externalReference, - floating: externalFloating - } = {}, - transform = true, - whileElementsMounted, - open - } = options; - const [data, setData] = React.useState({ - x: 0, - y: 0, - strategy, - placement, - middlewareData: {}, - isPositioned: false - }); - const [latestMiddleware, setLatestMiddleware] = React.useState(middleware); - if (!deepEqual(latestMiddleware, middleware)) { - setLatestMiddleware(middleware); - } - const [_reference, _setReference] = React.useState(null); - const [_floating, _setFloating] = React.useState(null); - const setReference = React.useCallback(node => { - if (node != referenceRef.current) { - referenceRef.current = node; - _setReference(node); - } - }, [_setReference]); - const setFloating = React.useCallback(node => { - if (node !== floatingRef.current) { - floatingRef.current = node; - _setFloating(node); - } - }, [_setFloating]); - const referenceEl = externalReference || _reference; - const floatingEl = externalFloating || _floating; - const referenceRef = React.useRef(null); - const floatingRef = React.useRef(null); - const dataRef = React.useRef(data); - const whileElementsMountedRef = useLatestRef(whileElementsMounted); - const platformRef = useLatestRef(platform); - const update = React.useCallback(() => { - if (!referenceRef.current || !floatingRef.current) { - return; - } - const config = { - placement, - strategy, - middleware: latestMiddleware - }; - if (platformRef.current) { - config.platform = platformRef.current; - } - (0, _dom.computePosition)(referenceRef.current, floatingRef.current, config).then(data => { - const fullData = { - ...data, - isPositioned: true - }; - if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { - dataRef.current = fullData; - ReactDOM.flushSync(() => { - setData(fullData); - }); - } - }); - }, [latestMiddleware, placement, strategy, platformRef]); - index(() => { - if (open === false && dataRef.current.isPositioned) { - dataRef.current.isPositioned = false; - setData(data => ({ - ...data, - isPositioned: false - })); - } - }, [open]); - const isMountedRef = React.useRef(false); - index(() => { - isMountedRef.current = true; - return () => { - isMountedRef.current = false; - }; - }, []); - index(() => { - if (referenceEl) referenceRef.current = referenceEl; - if (floatingEl) floatingRef.current = floatingEl; - if (referenceEl && floatingEl) { - if (whileElementsMountedRef.current) { - return whileElementsMountedRef.current(referenceEl, floatingEl, update); - } else { - update(); - } - } - }, [referenceEl, floatingEl, update, whileElementsMountedRef]); - const refs = React.useMemo(() => ({ - reference: referenceRef, - floating: floatingRef, - setReference, - setFloating - }), [setReference, setFloating]); - const elements = React.useMemo(() => ({ - reference: referenceEl, - floating: floatingEl - }), [referenceEl, floatingEl]); - const floatingStyles = React.useMemo(() => { - const initialStyles = { - position: strategy, - left: 0, - top: 0 - }; - if (!elements.floating) { - return initialStyles; - } - const x = roundByDPR(elements.floating, data.x); - const y = roundByDPR(elements.floating, data.y); - if (transform) { - return { - ...initialStyles, - transform: "translate(" + x + "px, " + y + "px)", - ...(getDPR(elements.floating) >= 1.5 && { - willChange: 'transform' - }) - }; - } - return { - position: strategy, - left: x, - top: y - }; - }, [strategy, transform, elements.floating, data.x, data.y]); - return React.useMemo(() => ({ - ...data, - update, - refs, - elements, - floatingStyles - }), [data, update, refs, elements, floatingStyles]); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/animation/dist/Animation.es.js": -/*!***********************************************************************!*\ - !*** ../../../node_modules/@motionone/animation/dist/Animation.es.js ***! - \***********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Animation = void 0; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _easingEs = __webpack_require__(/*! ./utils/easing.es.js */ "../../../node_modules/@motionone/animation/dist/utils/easing.es.js"); -class Animation { - constructor(output) { - let keyframes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 1]; - let { - easing, - duration: initialDuration = _utils.defaults.duration, - delay = _utils.defaults.delay, - endDelay = _utils.defaults.endDelay, - repeat = _utils.defaults.repeat, - offset, - direction = "normal" - } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - this.startTime = null; - this.rate = 1; - this.t = 0; - this.cancelTimestamp = null; - this.easing = _utils.noopReturn; - this.duration = 0; - this.totalDuration = 0; - this.repeat = 0; - this.playState = "idle"; - this.finished = new Promise((resolve, reject) => { - this.resolve = resolve; - this.reject = reject; - }); - easing = easing || _utils.defaults.easing; - if ((0, _utils.isEasingGenerator)(easing)) { - const custom = easing.createAnimation(keyframes); - easing = custom.easing; - keyframes = custom.keyframes || keyframes; - initialDuration = custom.duration || initialDuration; - } - this.repeat = repeat; - this.easing = (0, _utils.isEasingList)(easing) ? _utils.noopReturn : (0, _easingEs.getEasingFunction)(easing); - this.updateDuration(initialDuration); - const interpolate$1 = (0, _utils.interpolate)(keyframes, offset, (0, _utils.isEasingList)(easing) ? easing.map(_easingEs.getEasingFunction) : _utils.noopReturn); - this.tick = timestamp => { - var _a; - // TODO: Temporary fix for OptionsResolver typing - delay = delay; - let t = 0; - if (this.pauseTime !== undefined) { - t = this.pauseTime; - } else { - t = (timestamp - this.startTime) * this.rate; - } - this.t = t; - // Convert to seconds - t /= 1000; - // Rebase on delay - t = Math.max(t - delay, 0); - /** - * If this animation has finished, set the current time - * to the total duration. - */ - if (this.playState === "finished" && this.pauseTime === undefined) { - t = this.totalDuration; - } - /** - * Get the current progress (0-1) of the animation. If t is > - * than duration we'll get values like 2.5 (midway through the - * third iteration) - */ - const progress = t / this.duration; - // TODO progress += iterationStart - /** - * Get the current iteration (0 indexed). For instance the floor of - * 2.5 is 2. - */ - let currentIteration = Math.floor(progress); - /** - * Get the current progress of the iteration by taking the remainder - * so 2.5 is 0.5 through iteration 2 - */ - let iterationProgress = progress % 1.0; - if (!iterationProgress && progress >= 1) { - iterationProgress = 1; - } - /** - * If iteration progress is 1 we count that as the end - * of the previous iteration. - */ - iterationProgress === 1 && currentIteration--; - /** - * Reverse progress if we're not running in "normal" direction - */ - const iterationIsOdd = currentIteration % 2; - if (direction === "reverse" || direction === "alternate" && iterationIsOdd || direction === "alternate-reverse" && !iterationIsOdd) { - iterationProgress = 1 - iterationProgress; - } - const p = t >= this.totalDuration ? 1 : Math.min(iterationProgress, 1); - const latest = interpolate$1(this.easing(p)); - output(latest); - const isAnimationFinished = this.pauseTime === undefined && (this.playState === "finished" || t >= this.totalDuration + endDelay); - if (isAnimationFinished) { - this.playState = "finished"; - (_a = this.resolve) === null || _a === void 0 ? void 0 : _a.call(this, latest); - } else if (this.playState !== "idle") { - this.frameRequestId = requestAnimationFrame(this.tick); - } - }; - this.play(); - } - play() { - const now = performance.now(); - this.playState = "running"; - if (this.pauseTime !== undefined) { - this.startTime = now - this.pauseTime; - } else if (!this.startTime) { - this.startTime = now; - } - this.cancelTimestamp = this.startTime; - this.pauseTime = undefined; - this.frameRequestId = requestAnimationFrame(this.tick); - } - pause() { - this.playState = "paused"; - this.pauseTime = this.t; - } - finish() { - this.playState = "finished"; - this.tick(0); - } - stop() { - var _a; - this.playState = "idle"; - if (this.frameRequestId !== undefined) { - cancelAnimationFrame(this.frameRequestId); - } - (_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this, false); - } - cancel() { - this.stop(); - this.tick(this.cancelTimestamp); - } - reverse() { - this.rate *= -1; - } - commitStyles() {} - updateDuration(duration) { - this.duration = duration; - this.totalDuration = duration * (this.repeat + 1); - } - get currentTime() { - return this.t; - } - set currentTime(t) { - if (this.pauseTime !== undefined || this.rate === 0) { - this.pauseTime = t; - } else { - this.startTime = performance.now() - t / this.rate; - } - } - get playbackRate() { - return this.rate; - } - set playbackRate(rate) { - this.rate = rate; - } -} -exports.Animation = Animation; - -/***/ }), - -/***/ "../../../node_modules/@motionone/animation/dist/index.es.js": -/*!*******************************************************************!*\ - !*** ../../../node_modules/@motionone/animation/dist/index.es.js ***! - \*******************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "Animation", ({ - enumerable: true, - get: function () { - return _AnimationEs.Animation; - } -})); -Object.defineProperty(exports, "getEasingFunction", ({ - enumerable: true, - get: function () { - return _easingEs.getEasingFunction; - } -})); -var _AnimationEs = __webpack_require__(/*! ./Animation.es.js */ "../../../node_modules/@motionone/animation/dist/Animation.es.js"); -var _easingEs = __webpack_require__(/*! ./utils/easing.es.js */ "../../../node_modules/@motionone/animation/dist/utils/easing.es.js"); - -/***/ }), - -/***/ "../../../node_modules/@motionone/animation/dist/utils/easing.es.js": -/*!**************************************************************************!*\ - !*** ../../../node_modules/@motionone/animation/dist/utils/easing.es.js ***! - \**************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getEasingFunction = getEasingFunction; -var _easing = __webpack_require__(/*! @motionone/easing */ "../../../node_modules/@motionone/easing/dist/index.es.js"); -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -const namedEasings = { - ease: (0, _easing.cubicBezier)(0.25, 0.1, 0.25, 1.0), - "ease-in": (0, _easing.cubicBezier)(0.42, 0.0, 1.0, 1.0), - "ease-in-out": (0, _easing.cubicBezier)(0.42, 0.0, 0.58, 1.0), - "ease-out": (0, _easing.cubicBezier)(0.0, 0.0, 0.58, 1.0) -}; -const functionArgsRegex = /\((.*?)\)/; -function getEasingFunction(definition) { - // If already an easing function, return - if ((0, _utils.isFunction)(definition)) return definition; - // If an easing curve definition, return bezier function - if ((0, _utils.isCubicBezier)(definition)) return (0, _easing.cubicBezier)(...definition); - // If we have a predefined easing function, return - if (namedEasings[definition]) return namedEasings[definition]; - // If this is a steps function, attempt to create easing curve - if (definition.startsWith("steps")) { - const args = functionArgsRegex.exec(definition); - if (args) { - const argsArray = args[1].split(","); - return (0, _easing.steps)(parseFloat(argsArray[0]), argsArray[1].trim()); - } - } - return _utils.noopReturn; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js ***! - \*****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.animateStyle = animateStyle; -var _dataEs = __webpack_require__(/*! ./data.es.js */ "../../../node_modules/@motionone/dom/dist/animate/data.es.js"); -var _cssVarEs = __webpack_require__(/*! ./utils/css-var.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js"); -var _animation = __webpack_require__(/*! @motionone/animation */ "../../../node_modules/@motionone/animation/dist/index.es.js"); -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _transformsEs = __webpack_require__(/*! ./utils/transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); -var _easingEs = __webpack_require__(/*! ./utils/easing.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/easing.es.js"); -var _featureDetectionEs = __webpack_require__(/*! ./utils/feature-detection.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js"); -var _keyframesEs = __webpack_require__(/*! ./utils/keyframes.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js"); -var _styleEs = __webpack_require__(/*! ./style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/style.es.js"); -var _getStyleNameEs = __webpack_require__(/*! ./utils/get-style-name.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js"); -var _stopAnimationEs = __webpack_require__(/*! ./utils/stop-animation.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js"); -function getDevToolsRecord() { - return window.__MOTION_DEV_TOOLS_RECORD; -} -function animateStyle(element, key, keyframesDefinition) { - let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; - const record = getDevToolsRecord(); - const isRecording = options.record !== false && record; - let animation; - let { - duration = _utils.defaults.duration, - delay = _utils.defaults.delay, - endDelay = _utils.defaults.endDelay, - repeat = _utils.defaults.repeat, - easing = _utils.defaults.easing, - direction, - offset, - allowWebkitAcceleration = false - } = options; - const data = (0, _dataEs.getAnimationData)(element); - let canAnimateNatively = _featureDetectionEs.supports.waapi(); - const valueIsTransform = (0, _transformsEs.isTransform)(key); - /** - * If this is an individual transform, we need to map its - * key to a CSS variable and update the element's transform style - */ - valueIsTransform && (0, _transformsEs.addTransformToElement)(element, key); - const name = (0, _getStyleNameEs.getStyleName)(key); - const motionValue = (0, _dataEs.getMotionValue)(data.values, name); - /** - * Get definition of value, this will be used to convert numerical - * keyframes into the default value type. - */ - const definition = _transformsEs.transformDefinitions.get(name); - /** - * Stop the current animation, if any. Because this will trigger - * commitStyles (DOM writes) and we might later trigger DOM reads, - * this is fired now and we return a factory function to create - * the actual animation that can get called in batch, - */ - (0, _stopAnimationEs.stopAnimation)(motionValue.animation, !((0, _utils.isEasingGenerator)(easing) && motionValue.generator) && options.record !== false); - /** - * Batchable factory function containing all DOM reads. - */ - return () => { - const readInitialValue = () => { - var _a, _b; - return (_b = (_a = _styleEs.style.get(element, name)) !== null && _a !== void 0 ? _a : definition === null || definition === void 0 ? void 0 : definition.initialValue) !== null && _b !== void 0 ? _b : 0; - }; - /** - * Replace null values with the previous keyframe value, or read - * it from the DOM if it's the first keyframe. - */ - let keyframes = (0, _keyframesEs.hydrateKeyframes)((0, _keyframesEs.keyframesList)(keyframesDefinition), readInitialValue); - if ((0, _utils.isEasingGenerator)(easing)) { - const custom = easing.createAnimation(keyframes, readInitialValue, valueIsTransform, name, motionValue); - easing = custom.easing; - if (custom.keyframes !== undefined) keyframes = custom.keyframes; - if (custom.duration !== undefined) duration = custom.duration; - } - /** - * If this is a CSS variable we need to register it with the browser - * before it can be animated natively. We also set it with setProperty - * rather than directly onto the element.style object. - */ - if ((0, _cssVarEs.isCssVar)(name)) { - if (_featureDetectionEs.supports.cssRegisterProperty()) { - (0, _cssVarEs.registerCssVariable)(name); - } else { - canAnimateNatively = false; - } - } - /** - * If we can animate this value with WAAPI, do so. Currently this only - * feature detects CSS.registerProperty but could check WAAPI too. - */ - if (canAnimateNatively) { - /** - * Convert numbers to default value types. Currently this only supports - * transforms but it could also support other value types. - */ - if (definition) { - keyframes = keyframes.map(value => (0, _utils.isNumber)(value) ? definition.toDefaultUnit(value) : value); - } - /** - * If this browser doesn't support partial/implicit keyframes we need to - * explicitly provide one. - */ - if (keyframes.length === 1 && (!_featureDetectionEs.supports.partialKeyframes() || isRecording)) { - keyframes.unshift(readInitialValue()); - } - const animationOptions = { - delay: _utils.time.ms(delay), - duration: _utils.time.ms(duration), - endDelay: _utils.time.ms(endDelay), - easing: !(0, _utils.isEasingList)(easing) ? (0, _easingEs.convertEasing)(easing) : undefined, - direction, - iterations: repeat + 1, - fill: "both" - }; - animation = element.animate({ - [name]: keyframes, - offset, - easing: (0, _utils.isEasingList)(easing) ? easing.map(_easingEs.convertEasing) : undefined - }, animationOptions); - /** - * Polyfill finished Promise in browsers that don't support it - */ - if (!animation.finished) { - animation.finished = new Promise((resolve, reject) => { - animation.onfinish = resolve; - animation.oncancel = reject; - }); - } - const target = keyframes[keyframes.length - 1]; - animation.finished.then(() => { - // Apply styles to target - _styleEs.style.set(element, name, target); - // Ensure fill modes don't persist - animation.cancel(); - }).catch(_utils.noop); - /** - * This forces Webkit to run animations on the main thread by exploiting - * this condition: - * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp?rev=281238#L1099 - * - * This fixes Webkit's timing bugs, like accelerated animations falling - * out of sync with main thread animations and massive delays in starting - * accelerated animations in WKWebView. - */ - if (!allowWebkitAcceleration) animation.playbackRate = 1.000001; - /** - * If we can't animate the value natively then we can fallback to the numbers-only - * polyfill for transforms. - */ - } else if (valueIsTransform) { - /** - * If any keyframe is a string (because we measured it from the DOM), we need to convert - * it into a number before passing to the Animation polyfill. - */ - keyframes = keyframes.map(value => typeof value === "string" ? parseFloat(value) : value); - /** - * If we only have a single keyframe, we need to create an initial keyframe by reading - * the current value from the DOM. - */ - if (keyframes.length === 1) { - keyframes.unshift(parseFloat(readInitialValue())); - } - const render = latest => { - if (definition) latest = definition.toDefaultUnit(latest); - _styleEs.style.set(element, name, latest); - }; - animation = new _animation.Animation(render, keyframes, Object.assign(Object.assign({}, options), { - duration, - easing - })); - } else { - const target = keyframes[keyframes.length - 1]; - _styleEs.style.set(element, name, definition && (0, _utils.isNumber)(target) ? definition.toDefaultUnit(target) : target); - } - if (isRecording) { - record(element, key, keyframes, { - duration, - delay: delay, - easing, - repeat, - offset - }, "motion-one"); - } - motionValue.setAnimation(animation); - return animation; - }; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/data.es.js": -/*!********************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/data.es.js ***! - \********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getAnimationData = getAnimationData; -exports.getMotionValue = getMotionValue; -var _types = __webpack_require__(/*! @motionone/types */ "../../../node_modules/@motionone/types/dist/index.es.js"); -const data = new WeakMap(); -function getAnimationData(element) { - if (!data.has(element)) { - data.set(element, { - transforms: [], - values: new Map() - }); - } - return data.get(element); -} -function getMotionValue(motionValues, name) { - if (!motionValues.has(name)) { - motionValues.set(name, new _types.MotionValue()); - } - return motionValues.get(name); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/index.es.js": -/*!*********************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/index.es.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.animate = animate; -var _animateStyleEs = __webpack_require__(/*! ./animate-style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js"); -var _optionsEs = __webpack_require__(/*! ./utils/options.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js"); -var _resolveElementsEs = __webpack_require__(/*! ../utils/resolve-elements.es.js */ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js"); -var _controlsEs = __webpack_require__(/*! ./utils/controls.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js"); -var _staggerEs = __webpack_require__(/*! ../utils/stagger.es.js */ "../../../node_modules/@motionone/dom/dist/utils/stagger.es.js"); -function animate(elements, keyframes) { - let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - elements = (0, _resolveElementsEs.resolveElements)(elements); - const numElements = elements.length; - /** - * Create and start new animations - */ - const animationFactories = []; - for (let i = 0; i < numElements; i++) { - const element = elements[i]; - for (const key in keyframes) { - const valueOptions = (0, _optionsEs.getOptions)(options, key); - valueOptions.delay = (0, _staggerEs.resolveOption)(valueOptions.delay, i, numElements); - const animation = (0, _animateStyleEs.animateStyle)(element, key, keyframes[key], valueOptions); - animationFactories.push(animation); - } - } - return (0, _controlsEs.withControls)(animationFactories, options, - /** - * TODO: - * If easing is set to spring or glide, duration will be dynamically - * generated. Ideally we would dynamically generate this from - * animation.effect.getComputedTiming().duration but this isn't - * supported in iOS13 or our number polyfill. Perhaps it's possible - * to Proxy animations returned from animateStyle that has duration - * as a getter. - */ - options.duration); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/style.es.js": -/*!*********************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/style.es.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.style = void 0; -var _cssVarEs = __webpack_require__(/*! ./utils/css-var.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js"); -var _getStyleNameEs = __webpack_require__(/*! ./utils/get-style-name.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js"); -var _transformsEs = __webpack_require__(/*! ./utils/transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); -const style = { - get: (element, name) => { - name = (0, _getStyleNameEs.getStyleName)(name); - let value = (0, _cssVarEs.isCssVar)(name) ? element.style.getPropertyValue(name) : getComputedStyle(element)[name]; - if (!value && value !== 0) { - const definition = _transformsEs.transformDefinitions.get(name); - if (definition) value = definition.initialValue; - } - return value; - }, - set: (element, name, value) => { - name = (0, _getStyleNameEs.getStyleName)(name); - if ((0, _cssVarEs.isCssVar)(name)) { - element.style.setProperty(name, value); - } else { - element.style[name] = value; - } - } -}; -exports.style = style; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js": -/*!******************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js ***! - \******************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.withControls = exports.controls = void 0; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _stopAnimationEs = __webpack_require__(/*! ./stop-animation.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js"); -const createAnimation = factory => factory(); -const withControls = function (animationFactory, options) { - let duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _utils.defaults.duration; - return new Proxy({ - animations: animationFactory.map(createAnimation).filter(Boolean), - duration, - options - }, controls); -}; -/** - * TODO: - * Currently this returns the first animation, ideally it would return - * the first active animation. - */ -exports.withControls = withControls; -const getActiveAnimation = state => state.animations[0]; -const controls = { - get: (target, key) => { - const activeAnimation = getActiveAnimation(target); - switch (key) { - case "duration": - return target.duration; - case "currentTime": - return _utils.time.s((activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key]) || 0); - case "playbackRate": - case "playState": - return activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key]; - case "finished": - if (!target.finished) { - target.finished = Promise.all(target.animations.map(selectFinished)).catch(_utils.noop); - } - return target.finished; - case "stop": - return () => { - target.animations.forEach(animation => (0, _stopAnimationEs.stopAnimation)(animation)); - }; - case "forEachNative": - /** - * This is for internal use only, fire a callback for each - * underlying animation. - */ - return callback => { - target.animations.forEach(animation => callback(animation, target)); - }; - default: - return typeof (activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key]) === "undefined" ? undefined : () => target.animations.forEach(animation => animation[key]()); - } - }, - set: (target, key, value) => { - switch (key) { - case "currentTime": - value = _utils.time.ms(value); - case "currentTime": - case "playbackRate": - for (let i = 0; i < target.animations.length; i++) { - target.animations[i][key] = value; - } - return true; - } - return false; - } -}; -exports.controls = controls; -const selectFinished = animation => animation.finished; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js ***! - \*****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isCssVar = void 0; -exports.registerCssVariable = registerCssVariable; -exports.registeredProperties = void 0; -var _transformsEs = __webpack_require__(/*! ./transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); -const isCssVar = name => name.startsWith("--"); -exports.isCssVar = isCssVar; -const registeredProperties = new Set(); -exports.registeredProperties = registeredProperties; -function registerCssVariable(name) { - if (registeredProperties.has(name)) return; - registeredProperties.add(name); - try { - const { - syntax, - initialValue - } = _transformsEs.transformDefinitions.has(name) ? _transformsEs.transformDefinitions.get(name) : {}; - CSS.registerProperty({ - name, - inherits: false, - syntax, - initialValue - }); - } catch (e) {} -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/easing.es.js": -/*!****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/easing.es.js ***! - \****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.cubicBezierAsString = exports.convertEasing = void 0; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -const convertEasing = easing => (0, _utils.isCubicBezier)(easing) ? cubicBezierAsString(easing) : easing; -exports.convertEasing = convertEasing; -const cubicBezierAsString = _ref => { - let [a, b, c, d] = _ref; - return `cubic-bezier(${a}, ${b}, ${c}, ${d})`; -}; -exports.cubicBezierAsString = cubicBezierAsString; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js": -/*!***************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js ***! - \***************************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.supports = void 0; -const testAnimation = keyframes => document.createElement("div").animate(keyframes, { - duration: 0.001 -}); -const featureTests = { - cssRegisterProperty: () => typeof CSS !== "undefined" && Object.hasOwnProperty.call(CSS, "registerProperty"), - waapi: () => Object.hasOwnProperty.call(Element.prototype, "animate"), - partialKeyframes: () => { - try { - testAnimation({ - opacity: [1] - }); - } catch (e) { - return false; - } - return true; - }, - finished: () => Boolean(testAnimation({ - opacity: [0, 1] - }).finished) -}; -const results = {}; -const supports = {}; -exports.supports = supports; -for (const key in featureTests) { - supports[key] = () => { - if (results[key] === undefined) results[key] = featureTests[key](); - return results[key]; - }; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js": -/*!************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js ***! - \************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getStyleName = getStyleName; -var _transformsEs = __webpack_require__(/*! ./transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); -function getStyleName(key) { - if (_transformsEs.transformAlias[key]) key = _transformsEs.transformAlias[key]; - return (0, _transformsEs.isTransform)(key) ? (0, _transformsEs.asTransformCssVar)(key) : key; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js": -/*!*******************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js ***! - \*******************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.hydrateKeyframes = hydrateKeyframes; -exports.keyframesList = void 0; -function hydrateKeyframes(keyframes, readInitialValue) { - for (let i = 0; i < keyframes.length; i++) { - if (keyframes[i] === null) { - keyframes[i] = i ? keyframes[i - 1] : readInitialValue(); - } - } - return keyframes; -} -const keyframesList = keyframes => Array.isArray(keyframes) ? keyframes : [keyframes]; -exports.keyframesList = keyframesList; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js ***! - \*****************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getOptions = void 0; -const getOptions = (options, key) => -/** - * TODO: Make test for this - * Always return a new object otherwise delay is overwritten by results of stagger - * and this results in no stagger - */ -options[key] ? Object.assign(Object.assign({}, options), options[key]) : Object.assign({}, options); -exports.getOptions = getOptions; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js": -/*!************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js ***! - \************************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.stopAnimation = stopAnimation; -function stopAnimation(animation) { - let needsCommit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - if (!animation || animation.playState === "finished") return; - // Suppress error thrown by WAAPI - try { - if (animation.stop) { - animation.stop(); - } else { - needsCommit && animation.commitStyles(); - animation.cancel(); - } - } catch (e) {} -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js": -/*!**********************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js ***! - \**********************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createStyles = createStyles; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _transformsEs = __webpack_require__(/*! ./transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); -function createStyles(keyframes) { - const initialKeyframes = {}; - const transformKeys = []; - for (let key in keyframes) { - const value = keyframes[key]; - if ((0, _transformsEs.isTransform)(key)) { - if (_transformsEs.transformAlias[key]) key = _transformsEs.transformAlias[key]; - transformKeys.push(key); - key = (0, _transformsEs.asTransformCssVar)(key); - } - let initialKeyframe = Array.isArray(value) ? value[0] : value; - /** - * If this is a number and we have a default value type, convert the number - * to this type. - */ - const definition = _transformsEs.transformDefinitions.get(key); - if (definition) { - initialKeyframe = (0, _utils.isNumber)(value) ? definition.toDefaultUnit(value) : value; - } - initialKeyframes[key] = initialKeyframe; - } - if (transformKeys.length) { - initialKeyframes.transform = (0, _transformsEs.buildTransformTemplate)(transformKeys); - } - return initialKeyframes; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/style-string.es.js": -/*!**********************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/style-string.es.js ***! - \**********************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createStyleString = createStyleString; -var _styleObjectEs = __webpack_require__(/*! ./style-object.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js"); -const camelLetterToPipeLetter = letter => `-${letter.toLowerCase()}`; -const camelToPipeCase = str => str.replace(/[A-Z]/g, camelLetterToPipeLetter); -function createStyleString() { - let target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - const styles = (0, _styleObjectEs.createStyles)(target); - let style = ""; - for (const key in styles) { - style += key.startsWith("--") ? key : camelToPipeCase(key); - style += `: ${styles[key]}; `; - } - return style; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js": -/*!********************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js ***! - \********************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.transformDefinitions = exports.transformAlias = exports.isTransform = exports.compareTransformOrder = exports.buildTransformTemplate = exports.axes = exports.asTransformCssVar = exports.addTransformToElement = void 0; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _dataEs = __webpack_require__(/*! ../data.es.js */ "../../../node_modules/@motionone/dom/dist/animate/data.es.js"); -/** - * A list of all transformable axes. We'll use this list to generated a version - * of each axes for each transform. - */ -const axes = ["", "X", "Y", "Z"]; -/** - * An ordered array of each transformable value. By default, transform values - * will be sorted to this order. - */ -exports.axes = axes; -const order = ["translate", "scale", "rotate", "skew"]; -const transformAlias = { - x: "translateX", - y: "translateY", - z: "translateZ" -}; -exports.transformAlias = transformAlias; -const rotation = { - syntax: "", - initialValue: "0deg", - toDefaultUnit: v => v + "deg" -}; -const baseTransformProperties = { - translate: { - syntax: "", - initialValue: "0px", - toDefaultUnit: v => v + "px" - }, - rotate: rotation, - scale: { - syntax: "", - initialValue: 1, - toDefaultUnit: _utils.noopReturn - }, - skew: rotation -}; -const transformDefinitions = new Map(); -exports.transformDefinitions = transformDefinitions; -const asTransformCssVar = name => `--motion-${name}`; -/** - * Generate a list of every possible transform key - */ -exports.asTransformCssVar = asTransformCssVar; -const transforms = ["x", "y", "z"]; -order.forEach(name => { - axes.forEach(axis => { - transforms.push(name + axis); - transformDefinitions.set(asTransformCssVar(name + axis), baseTransformProperties[name]); - }); -}); -/** - * A function to use with Array.sort to sort transform keys by their default order. - */ -const compareTransformOrder = (a, b) => transforms.indexOf(a) - transforms.indexOf(b); -/** - * Provide a quick way to check if a string is the name of a transform - */ -exports.compareTransformOrder = compareTransformOrder; -const transformLookup = new Set(transforms); -const isTransform = name => transformLookup.has(name); -exports.isTransform = isTransform; -const addTransformToElement = (element, name) => { - // Map x to translateX etc - if (transformAlias[name]) name = transformAlias[name]; - const { - transforms - } = (0, _dataEs.getAnimationData)(element); - (0, _utils.addUniqueItem)(transforms, name); - /** - * TODO: An optimisation here could be to cache the transform in element data - * and only update if this has changed. - */ - element.style.transform = buildTransformTemplate(transforms); -}; -exports.addTransformToElement = addTransformToElement; -const buildTransformTemplate = transforms => transforms.sort(compareTransformOrder).reduce(transformListToString, "").trim(); -exports.buildTransformTemplate = buildTransformTemplate; -const transformListToString = (template, name) => `${template} ${name}(var(${asTransformCssVar(name)}))`; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js": -/*!**************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js ***! - \**************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createGeneratorEasing = createGeneratorEasing; -var _generators = __webpack_require__(/*! @motionone/generators */ "../../../node_modules/@motionone/generators/dist/index.es.js"); -function createGeneratorEasing(createGenerator) { - const keyframesCache = new WeakMap(); - return function () { - let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - const generatorCache = new Map(); - const getGenerator = function () { - let from = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - let to = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100; - let velocity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - let isScale = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - const key = `${from}-${to}-${velocity}-${isScale}`; - if (!generatorCache.has(key)) { - generatorCache.set(key, createGenerator(Object.assign({ - from, - to, - velocity, - restSpeed: isScale ? 0.05 : 2, - restDistance: isScale ? 0.01 : 0.5 - }, options))); - } - return generatorCache.get(key); - }; - const getKeyframes = generator => { - if (!keyframesCache.has(generator)) { - keyframesCache.set(generator, (0, _generators.pregenerateKeyframes)(generator)); - } - return keyframesCache.get(generator); - }; - return { - createAnimation: (keyframes, getOrigin, canUseGenerator, name, motionValue) => { - var _a, _b; - let settings; - const numKeyframes = keyframes.length; - let shouldUseGenerator = canUseGenerator && numKeyframes <= 2 && keyframes.every(isNumberOrNull); - if (shouldUseGenerator) { - const target = keyframes[numKeyframes - 1]; - const unresolvedOrigin = numKeyframes === 1 ? null : keyframes[0]; - let velocity = 0; - let origin = 0; - const prevGenerator = motionValue === null || motionValue === void 0 ? void 0 : motionValue.generator; - if (prevGenerator) { - /** - * If we have a generator for this value we can use it to resolve - * the animations's current value and velocity. - */ - const { - animation, - generatorStartTime - } = motionValue; - const startTime = (animation === null || animation === void 0 ? void 0 : animation.startTime) || generatorStartTime || 0; - const currentTime = (animation === null || animation === void 0 ? void 0 : animation.currentTime) || performance.now() - startTime; - const prevGeneratorCurrent = prevGenerator(currentTime).current; - origin = (_a = unresolvedOrigin) !== null && _a !== void 0 ? _a : prevGeneratorCurrent; - if (numKeyframes === 1 || numKeyframes === 2 && keyframes[0] === null) { - velocity = (0, _generators.calcGeneratorVelocity)(t => prevGenerator(t).current, currentTime, prevGeneratorCurrent); - } - } else { - origin = (_b = unresolvedOrigin) !== null && _b !== void 0 ? _b : parseFloat(getOrigin()); - } - const generator = getGenerator(origin, target, velocity, name === null || name === void 0 ? void 0 : name.includes("scale")); - const keyframesMetadata = getKeyframes(generator); - settings = Object.assign(Object.assign({}, keyframesMetadata), { - easing: "linear" - }); - // TODO Add test for this - if (motionValue) { - motionValue.generator = generator; - motionValue.generatorStartTime = performance.now(); - } - } else { - const keyframesMetadata = getKeyframes(getGenerator(0, 100)); - settings = { - easing: "ease", - duration: keyframesMetadata.overshootDuration - }; - } - return settings; - } - }; - }; -} -const isNumberOrNull = value => typeof value !== "string"; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/easing/glide/index.es.js": -/*!**************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/easing/glide/index.es.js ***! - \**************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.glide = void 0; -var _generators = __webpack_require__(/*! @motionone/generators */ "../../../node_modules/@motionone/generators/dist/index.es.js"); -var _createGeneratorEasingEs = __webpack_require__(/*! ../create-generator-easing.es.js */ "../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js"); -const glide = (0, _createGeneratorEasingEs.createGeneratorEasing)(_generators.glide); -exports.glide = glide; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/easing/spring/index.es.js": -/*!***************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/easing/spring/index.es.js ***! - \***************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.spring = void 0; -var _generators = __webpack_require__(/*! @motionone/generators */ "../../../node_modules/@motionone/generators/dist/index.es.js"); -var _createGeneratorEasingEs = __webpack_require__(/*! ../create-generator-easing.es.js */ "../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js"); -const spring = (0, _createGeneratorEasingEs.createGeneratorEasing)(_generators.spring); -exports.spring = spring; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js": -/*!************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js ***! - \************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.inView = inView; -var _resolveElementsEs = __webpack_require__(/*! ../utils/resolve-elements.es.js */ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js"); -const thresholds = { - any: 0, - all: 1 -}; -function inView(elementOrSelector, onStart) { - let { - root, - margin: rootMargin, - amount = "any" - } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - /** - * If this browser doesn't support IntersectionObserver, return a dummy stop function. - * Default triggering of onStart is tricky - it could be used for starting/stopping - * videos, lazy loading content etc. We could provide an option to enable a fallback, or - * provide a fallback callback option. - */ - if (typeof IntersectionObserver === "undefined") { - return () => {}; - } - const elements = (0, _resolveElementsEs.resolveElements)(elementOrSelector); - const activeIntersections = new WeakMap(); - const onIntersectionChange = entries => { - entries.forEach(entry => { - const onEnd = activeIntersections.get(entry.target); - /** - * If there's no change to the intersection, we don't need to - * do anything here. - */ - if (entry.isIntersecting === Boolean(onEnd)) return; - if (entry.isIntersecting) { - const newOnEnd = onStart(entry); - if (typeof newOnEnd === "function") { - activeIntersections.set(entry.target, newOnEnd); - } else { - observer.unobserve(entry.target); - } - } else if (onEnd) { - onEnd(entry); - activeIntersections.delete(entry.target); - } - }); - }; - const observer = new IntersectionObserver(onIntersectionChange, { - root, - rootMargin, - threshold: typeof amount === "number" ? amount : thresholds[amount] - }); - elements.forEach(element => observer.observe(element)); - return () => observer.disconnect(); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js": -/*!**************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js ***! - \**************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.resizeElement = resizeElement; -var _resolveElementsEs = __webpack_require__(/*! ../../utils/resolve-elements.es.js */ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js"); -const resizeHandlers = new WeakMap(); -let observer; -function getElementSize(target, borderBoxSize) { - if (borderBoxSize) { - const { - inlineSize, - blockSize - } = borderBoxSize[0]; - return { - width: inlineSize, - height: blockSize - }; - } else if (target instanceof SVGElement && "getBBox" in target) { - return target.getBBox(); - } else { - return { - width: target.offsetWidth, - height: target.offsetHeight - }; - } -} -function notifyTarget(_ref) { - let { - target, - contentRect, - borderBoxSize - } = _ref; - var _a; - (_a = resizeHandlers.get(target)) === null || _a === void 0 ? void 0 : _a.forEach(handler => { - handler({ - target, - contentSize: contentRect, - get size() { - return getElementSize(target, borderBoxSize); - } - }); - }); -} -function notifyAll(entries) { - entries.forEach(notifyTarget); -} -function createResizeObserver() { - if (typeof ResizeObserver === "undefined") return; - observer = new ResizeObserver(notifyAll); -} -function resizeElement(target, handler) { - if (!observer) createResizeObserver(); - const elements = (0, _resolveElementsEs.resolveElements)(target); - elements.forEach(element => { - let elementHandlers = resizeHandlers.get(element); - if (!elementHandlers) { - elementHandlers = new Set(); - resizeHandlers.set(element, elementHandlers); - } - elementHandlers.add(handler); - observer === null || observer === void 0 ? void 0 : observer.observe(element); - }); - return () => { - elements.forEach(element => { - const elementHandlers = resizeHandlers.get(element); - elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.delete(handler); - if (!(elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.size)) { - observer === null || observer === void 0 ? void 0 : observer.unobserve(element); - } - }); - }; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js": -/*!*************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js ***! - \*************************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.resizeWindow = resizeWindow; -const windowCallbacks = new Set(); -let windowResizeHandler; -function createWindowResizeHandler() { - windowResizeHandler = () => { - const size = { - width: window.innerWidth, - height: window.innerHeight - }; - const info = { - target: window, - size, - contentSize: size - }; - windowCallbacks.forEach(callback => callback(info)); - }; - window.addEventListener("resize", windowResizeHandler); -} -function resizeWindow(callback) { - windowCallbacks.add(callback); - if (!windowResizeHandler) createWindowResizeHandler(); - return () => { - windowCallbacks.delete(callback); - if (!windowCallbacks.size && windowResizeHandler) { - windowResizeHandler = undefined; - } - }; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js ***! - \*****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.resize = resize; -var _handleElementEs = __webpack_require__(/*! ./handle-element.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js"); -var _handleWindowEs = __webpack_require__(/*! ./handle-window.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js"); -function resize(a, b) { - return typeof a === "function" ? (0, _handleWindowEs.resizeWindow)(a) : (0, _handleElementEs.resizeElement)(a, b); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js ***! - \*****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.scroll = scroll; -var _tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); -var _indexEs = __webpack_require__(/*! ../resize/index.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js"); -var _infoEs = __webpack_require__(/*! ./info.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js"); -var _onScrollHandlerEs = __webpack_require__(/*! ./on-scroll-handler.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js"); -const scrollListeners = new WeakMap(); -const resizeListeners = new WeakMap(); -const onScrollHandlers = new WeakMap(); -const getEventTarget = element => element === document.documentElement ? window : element; -function scroll(onScroll) { - let _a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var { - container = document.documentElement - } = _a, - options = (0, _tslib.__rest)(_a, ["container"]); - let containerHandlers = onScrollHandlers.get(container); - /** - * Get the onScroll handlers for this container. - * If one isn't found, create a new one. - */ - if (!containerHandlers) { - containerHandlers = new Set(); - onScrollHandlers.set(container, containerHandlers); - } - /** - * Create a new onScroll handler for the provided callback. - */ - const info = (0, _infoEs.createScrollInfo)(); - const containerHandler = (0, _onScrollHandlerEs.createOnScrollHandler)(container, onScroll, info, options); - containerHandlers.add(containerHandler); - /** - * Check if there's a scroll event listener for this container. - * If not, create one. - */ - if (!scrollListeners.has(container)) { - const listener = () => { - const time = performance.now(); - for (const handler of containerHandlers) handler.measure(); - for (const handler of containerHandlers) handler.update(time); - for (const handler of containerHandlers) handler.notify(); - }; - scrollListeners.set(container, listener); - const target = getEventTarget(container); - window.addEventListener("resize", listener, { - passive: true - }); - if (container !== document.documentElement) { - resizeListeners.set(container, (0, _indexEs.resize)(container, listener)); - } - target.addEventListener("scroll", listener, { - passive: true - }); - } - const listener = scrollListeners.get(container); - const onLoadProcesss = requestAnimationFrame(listener); - return () => { - var _a; - if (typeof onScroll !== "function") onScroll.stop(); - cancelAnimationFrame(onLoadProcesss); - /** - * Check if we even have any handlers for this container. - */ - const containerHandlers = onScrollHandlers.get(container); - if (!containerHandlers) return; - containerHandlers.delete(containerHandler); - if (containerHandlers.size) return; - /** - * If no more handlers, remove the scroll listener too. - */ - const listener = scrollListeners.get(container); - scrollListeners.delete(container); - if (listener) { - getEventTarget(container).removeEventListener("scroll", listener); - (_a = resizeListeners.get(container)) === null || _a === void 0 ? void 0 : _a(); - window.removeEventListener("resize", listener); - } - }; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js": -/*!****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js ***! - \****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createScrollInfo = void 0; -exports.updateScrollInfo = updateScrollInfo; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -/** - * A time in milliseconds, beyond which we consider the scroll velocity to be 0. - */ -const maxElapsed = 50; -const createAxisInfo = () => ({ - current: 0, - offset: [], - progress: 0, - scrollLength: 0, - targetOffset: 0, - targetLength: 0, - containerLength: 0, - velocity: 0 -}); -const createScrollInfo = () => ({ - time: 0, - x: createAxisInfo(), - y: createAxisInfo() -}); -exports.createScrollInfo = createScrollInfo; -const keys = { - x: { - length: "Width", - position: "Left" - }, - y: { - length: "Height", - position: "Top" - } -}; -function updateAxisInfo(element, axisName, info, time) { - const axis = info[axisName]; - const { - length, - position - } = keys[axisName]; - const prev = axis.current; - const prevTime = info.time; - axis.current = element["scroll" + position]; - axis.scrollLength = element["scroll" + length] - element["client" + length]; - axis.offset.length = 0; - axis.offset[0] = 0; - axis.offset[1] = axis.scrollLength; - axis.progress = (0, _utils.progress)(0, axis.scrollLength, axis.current); - const elapsed = time - prevTime; - axis.velocity = elapsed > maxElapsed ? 0 : (0, _utils.velocityPerSecond)(axis.current - prev, elapsed); -} -function updateScrollInfo(element, info, time) { - updateAxisInfo(element, "x", info, time); - updateAxisInfo(element, "y", info, time); - info.time = time; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js": -/*!************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js ***! - \************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.namedEdges = void 0; -exports.resolveEdge = resolveEdge; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -const namedEdges = { - start: 0, - center: 0.5, - end: 1 -}; -exports.namedEdges = namedEdges; -function resolveEdge(edge, length) { - let inset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - let delta = 0; - /** - * If we have this edge defined as a preset, replace the definition - * with the numerical value. - */ - if (namedEdges[edge] !== undefined) { - edge = namedEdges[edge]; - } - /** - * Handle unit values - */ - if ((0, _utils.isString)(edge)) { - const asNumber = parseFloat(edge); - if (edge.endsWith("px")) { - delta = asNumber; - } else if (edge.endsWith("%")) { - edge = asNumber / 100; - } else if (edge.endsWith("vw")) { - delta = asNumber / 100 * document.documentElement.clientWidth; - } else if (edge.endsWith("vh")) { - delta = asNumber / 100 * document.documentElement.clientHeight; - } else { - edge = asNumber; - } - } - /** - * If the edge is defined as a number, handle as a progress value. - */ - if ((0, _utils.isNumber)(edge)) { - delta = length * edge; - } - return inset + delta; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js": -/*!*************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js ***! - \*************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.resolveOffsets = resolveOffsets; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _insetEs = __webpack_require__(/*! ./inset.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js"); -var _presetsEs = __webpack_require__(/*! ./presets.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js"); -var _offsetEs = __webpack_require__(/*! ./offset.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js"); -const point = { - x: 0, - y: 0 -}; -function resolveOffsets(container, info, options) { - let { - offset: offsetDefinition = _presetsEs.ScrollOffset.All - } = options; - const { - target = container, - axis = "y" - } = options; - const lengthLabel = axis === "y" ? "height" : "width"; - const inset = target !== container ? (0, _insetEs.calcInset)(target, container) : point; - /** - * Measure the target and container. If they're the same thing then we - * use the container's scrollWidth/Height as the target, from there - * all other calculations can remain the same. - */ - const targetSize = target === container ? { - width: container.scrollWidth, - height: container.scrollHeight - } : { - width: target.clientWidth, - height: target.clientHeight - }; - const containerSize = { - width: container.clientWidth, - height: container.clientHeight - }; - /** - * Reset the length of the resolved offset array rather than creating a new one. - * TODO: More reusable data structures for targetSize/containerSize would also be good. - */ - info[axis].offset.length = 0; - /** - * Populate the offset array by resolving the user's offset definition into - * a list of pixel scroll offets. - */ - let hasChanged = !info[axis].interpolate; - const numOffsets = offsetDefinition.length; - for (let i = 0; i < numOffsets; i++) { - const offset = (0, _offsetEs.resolveOffset)(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]); - if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) { - hasChanged = true; - } - info[axis].offset[i] = offset; - } - /** - * If the pixel scroll offsets have changed, create a new interpolator function - * to map scroll value into a progress. - */ - if (hasChanged) { - info[axis].interpolate = (0, _utils.interpolate)((0, _utils.defaultOffset)(numOffsets), info[axis].offset); - info[axis].interpolatorOffsets = [...info[axis].offset]; - } - info[axis].progress = info[axis].interpolate(info[axis].current); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js": -/*!*************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js ***! - \*************************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.calcInset = calcInset; -function calcInset(element, container) { - let inset = { - x: 0, - y: 0 - }; - let current = element; - while (current && current !== container) { - if (current instanceof HTMLElement) { - inset.x += current.offsetLeft; - inset.y += current.offsetTop; - current = current.offsetParent; - } else if (current instanceof SVGGraphicsElement && "getBBox" in current) { - const { - top, - left - } = current.getBBox(); - inset.x += left; - inset.y += top; - /** - * Assign the next parent element as the tag. - */ - while (current && current.tagName !== "svg") { - current = current.parentNode; - } - } - } - return inset; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js": -/*!**************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js ***! - \**************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.resolveOffset = resolveOffset; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _edgeEs = __webpack_require__(/*! ./edge.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js"); -const defaultOffset = [0, 0]; -function resolveOffset(offset, containerLength, targetLength, targetInset) { - let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset; - let targetPoint = 0; - let containerPoint = 0; - if ((0, _utils.isNumber)(offset)) { - /** - * If we're provided offset: [0, 0.5, 1] then each number x should become - * [x, x], so we default to the behaviour of mapping 0 => 0 of both target - * and container etc. - */ - offsetDefinition = [offset, offset]; - } else if ((0, _utils.isString)(offset)) { - offset = offset.trim(); - if (offset.includes(" ")) { - offsetDefinition = offset.split(" "); - } else { - /** - * If we're provided a definition like "100px" then we want to apply - * that only to the top of the target point, leaving the container at 0. - * Whereas a named offset like "end" should be applied to both. - */ - offsetDefinition = [offset, _edgeEs.namedEdges[offset] ? offset : `0`]; - } - } - targetPoint = (0, _edgeEs.resolveEdge)(offsetDefinition[0], targetLength, targetInset); - containerPoint = (0, _edgeEs.resolveEdge)(offsetDefinition[1], containerLength); - return targetPoint - containerPoint; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js": -/*!***************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js ***! - \***************************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.ScrollOffset = void 0; -const ScrollOffset = { - Enter: [[0, 1], [1, 1]], - Exit: [[0, 0], [1, 0]], - Any: [[1, 0], [0, 1]], - All: [[0, 0], [1, 1]] -}; -exports.ScrollOffset = ScrollOffset; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js": -/*!*****************************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js ***! - \*****************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createOnScrollHandler = createOnScrollHandler; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _infoEs = __webpack_require__(/*! ./info.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js"); -var _indexEs = __webpack_require__(/*! ./offsets/index.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js"); -function measure(container) { - let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : container; - let info = arguments.length > 2 ? arguments[2] : undefined; - /** - * Find inset of target within scrollable container - */ - info.x.targetOffset = 0; - info.y.targetOffset = 0; - if (target !== container) { - let node = target; - while (node && node != container) { - info.x.targetOffset += node.offsetLeft; - info.y.targetOffset += node.offsetTop; - node = node.offsetParent; - } - } - info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth; - info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight; - info.x.containerLength = container.clientWidth; - info.y.containerLength = container.clientHeight; -} -function createOnScrollHandler(element, onScroll, info) { - let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; - const axis = options.axis || "y"; - return { - measure: () => measure(element, options.target, info), - update: time => { - (0, _infoEs.updateScrollInfo)(element, info, time); - if (options.offset || options.target) { - (0, _indexEs.resolveOffsets)(element, info, options); - } - }, - notify: typeof onScroll === "function" ? () => onScroll(info) : scrubAnimation(onScroll, info[axis]) - }; -} -function scrubAnimation(controls, axisInfo) { - controls.pause(); - controls.forEachNative((animation, _ref) => { - let { - easing - } = _ref; - var _a, _b; - if (animation.updateDuration) { - if (!easing) animation.easing = _utils.noopReturn; - animation.updateDuration(1); - } else { - const timingOptions = { - duration: 1000 - }; - if (!easing) timingOptions.easing = "linear"; - (_b = (_a = animation.effect) === null || _a === void 0 ? void 0 : _a.updateTiming) === null || _b === void 0 ? void 0 : _b.call(_a, timingOptions); - } - }); - return () => { - controls.currentTime = axisInfo.progress; - }; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/index.es.js": -/*!*************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/index.es.js ***! - \*************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "ScrollOffset", ({ - enumerable: true, - get: function () { - return _presetsEs.ScrollOffset; - } -})); -Object.defineProperty(exports, "animate", ({ - enumerable: true, - get: function () { - return _indexEs.animate; - } -})); -Object.defineProperty(exports, "animateStyle", ({ - enumerable: true, - get: function () { - return _animateStyleEs.animateStyle; - } -})); -Object.defineProperty(exports, "createMotionState", ({ - enumerable: true, - get: function () { - return _indexEs7.createMotionState; - } -})); -Object.defineProperty(exports, "createStyleString", ({ - enumerable: true, - get: function () { - return _styleStringEs.createStyleString; - } -})); -Object.defineProperty(exports, "createStyles", ({ - enumerable: true, - get: function () { - return _styleObjectEs.createStyles; - } -})); -Object.defineProperty(exports, "getAnimationData", ({ - enumerable: true, - get: function () { - return _dataEs.getAnimationData; - } -})); -Object.defineProperty(exports, "getStyleName", ({ - enumerable: true, - get: function () { - return _getStyleNameEs.getStyleName; - } -})); -Object.defineProperty(exports, "glide", ({ - enumerable: true, - get: function () { - return _indexEs4.glide; - } -})); -Object.defineProperty(exports, "inView", ({ - enumerable: true, - get: function () { - return _inViewEs.inView; - } -})); -Object.defineProperty(exports, "mountedStates", ({ - enumerable: true, - get: function () { - return _indexEs7.mountedStates; - } -})); -Object.defineProperty(exports, "resize", ({ - enumerable: true, - get: function () { - return _indexEs5.resize; - } -})); -Object.defineProperty(exports, "scroll", ({ - enumerable: true, - get: function () { - return _indexEs6.scroll; - } -})); -Object.defineProperty(exports, "spring", ({ - enumerable: true, - get: function () { - return _indexEs3.spring; - } -})); -Object.defineProperty(exports, "stagger", ({ - enumerable: true, - get: function () { - return _staggerEs.stagger; - } -})); -Object.defineProperty(exports, "style", ({ - enumerable: true, - get: function () { - return _styleEs.style; - } -})); -Object.defineProperty(exports, "timeline", ({ - enumerable: true, - get: function () { - return _indexEs2.timeline; - } -})); -Object.defineProperty(exports, "withControls", ({ - enumerable: true, - get: function () { - return _controlsEs.withControls; - } -})); -var _indexEs = __webpack_require__(/*! ./animate/index.es.js */ "../../../node_modules/@motionone/dom/dist/animate/index.es.js"); -var _animateStyleEs = __webpack_require__(/*! ./animate/animate-style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js"); -var _indexEs2 = __webpack_require__(/*! ./timeline/index.es.js */ "../../../node_modules/@motionone/dom/dist/timeline/index.es.js"); -var _staggerEs = __webpack_require__(/*! ./utils/stagger.es.js */ "../../../node_modules/@motionone/dom/dist/utils/stagger.es.js"); -var _indexEs3 = __webpack_require__(/*! ./easing/spring/index.es.js */ "../../../node_modules/@motionone/dom/dist/easing/spring/index.es.js"); -var _indexEs4 = __webpack_require__(/*! ./easing/glide/index.es.js */ "../../../node_modules/@motionone/dom/dist/easing/glide/index.es.js"); -var _styleEs = __webpack_require__(/*! ./animate/style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/style.es.js"); -var _inViewEs = __webpack_require__(/*! ./gestures/in-view.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js"); -var _indexEs5 = __webpack_require__(/*! ./gestures/resize/index.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js"); -var _indexEs6 = __webpack_require__(/*! ./gestures/scroll/index.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js"); -var _presetsEs = __webpack_require__(/*! ./gestures/scroll/offsets/presets.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js"); -var _controlsEs = __webpack_require__(/*! ./animate/utils/controls.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js"); -var _dataEs = __webpack_require__(/*! ./animate/data.es.js */ "../../../node_modules/@motionone/dom/dist/animate/data.es.js"); -var _getStyleNameEs = __webpack_require__(/*! ./animate/utils/get-style-name.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js"); -var _indexEs7 = __webpack_require__(/*! ./state/index.es.js */ "../../../node_modules/@motionone/dom/dist/state/index.es.js"); -var _styleObjectEs = __webpack_require__(/*! ./animate/utils/style-object.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js"); -var _styleStringEs = __webpack_require__(/*! ./animate/utils/style-string.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/style-string.es.js"); - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/gestures/hover.es.js": -/*!****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/gestures/hover.es.js ***! - \****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.hover = void 0; -var _eventsEs = __webpack_require__(/*! ../utils/events.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js"); -const mouseEvent = (element, name, action) => event => { - if (event.pointerType && event.pointerType !== "mouse") return; - action(); - (0, _eventsEs.dispatchPointerEvent)(element, name, event); -}; -const hover = { - isActive: options => Boolean(options.hover), - subscribe: (element, _ref) => { - let { - enable, - disable - } = _ref; - const onEnter = mouseEvent(element, "hoverstart", enable); - const onLeave = mouseEvent(element, "hoverend", disable); - element.addEventListener("pointerenter", onEnter); - element.addEventListener("pointerleave", onLeave); - return () => { - element.removeEventListener("pointerenter", onEnter); - element.removeEventListener("pointerleave", onLeave); - }; - } -}; -exports.hover = hover; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/gestures/in-view.es.js": -/*!******************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/gestures/in-view.es.js ***! - \******************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.inView = void 0; -var _tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); -var _eventsEs = __webpack_require__(/*! ../utils/events.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js"); -var _inViewEs = __webpack_require__(/*! ../../gestures/in-view.es.js */ "../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js"); -const inView = { - isActive: options => Boolean(options.inView), - subscribe: (element, _ref, _ref2) => { - let { - enable, - disable - } = _ref; - let { - inViewOptions = {} - } = _ref2; - const { - once - } = inViewOptions, - viewOptions = (0, _tslib.__rest)(inViewOptions, ["once"]); - return (0, _inViewEs.inView)(element, enterEntry => { - enable(); - (0, _eventsEs.dispatchViewEvent)(element, "viewenter", enterEntry); - if (!once) { - return leaveEntry => { - disable(); - (0, _eventsEs.dispatchViewEvent)(element, "viewleave", leaveEntry); - }; - } - }, viewOptions); - } -}; -exports.inView = inView; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/gestures/press.es.js": -/*!****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/gestures/press.es.js ***! - \****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.press = void 0; -var _eventsEs = __webpack_require__(/*! ../utils/events.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js"); -const press = { - isActive: options => Boolean(options.press), - subscribe: (element, _ref) => { - let { - enable, - disable - } = _ref; - const onPointerUp = event => { - disable(); - (0, _eventsEs.dispatchPointerEvent)(element, "pressend", event); - window.removeEventListener("pointerup", onPointerUp); - }; - const onPointerDown = event => { - enable(); - (0, _eventsEs.dispatchPointerEvent)(element, "pressstart", event); - window.addEventListener("pointerup", onPointerUp); - }; - element.addEventListener("pointerdown", onPointerDown); - return () => { - element.removeEventListener("pointerdown", onPointerDown); - window.removeEventListener("pointerup", onPointerUp); - }; - } -}; -exports.press = press; - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/index.es.js": -/*!*******************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/index.es.js ***! - \*******************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createMotionState = createMotionState; -exports.mountedStates = void 0; -var _tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); -var _heyListen = __webpack_require__(/*! hey-listen */ "../../../node_modules/hey-listen/dist/hey-listen.es.js"); -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _animateStyleEs = __webpack_require__(/*! ../animate/animate-style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js"); -var _styleEs = __webpack_require__(/*! ../animate/style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/style.es.js"); -var _optionsEs = __webpack_require__(/*! ../animate/utils/options.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js"); -var _hasChangedEs = __webpack_require__(/*! ./utils/has-changed.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/has-changed.es.js"); -var _resolveVariantEs = __webpack_require__(/*! ./utils/resolve-variant.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js"); -var _scheduleEs = __webpack_require__(/*! ./utils/schedule.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/schedule.es.js"); -var _inViewEs = __webpack_require__(/*! ./gestures/in-view.es.js */ "../../../node_modules/@motionone/dom/dist/state/gestures/in-view.es.js"); -var _hoverEs = __webpack_require__(/*! ./gestures/hover.es.js */ "../../../node_modules/@motionone/dom/dist/state/gestures/hover.es.js"); -var _pressEs = __webpack_require__(/*! ./gestures/press.es.js */ "../../../node_modules/@motionone/dom/dist/state/gestures/press.es.js"); -var _eventsEs = __webpack_require__(/*! ./utils/events.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js"); -const gestures = { - inView: _inViewEs.inView, - hover: _hoverEs.hover, - press: _pressEs.press -}; -/** - * A list of state types, in priority order. If a value is defined in - * a righter-most type, it will override any definition in a lefter-most. - */ -const stateTypes = ["initial", "animate", ...Object.keys(gestures), "exit"]; -/** - * A global store of all generated motion states. This can be used to lookup - * a motion state for a given Element. - */ -const mountedStates = new WeakMap(); -exports.mountedStates = mountedStates; -function createMotionState() { - let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - let parent = arguments.length > 1 ? arguments[1] : undefined; - /** - * The element represented by the motion state. This is an empty reference - * when we create the state to support SSR and allow for later mounting - * in view libraries. - * - * @ts-ignore - */ - let element; - /** - * Calculate a depth that we can use to order motion states by tree depth. - */ - let depth = parent ? parent.getDepth() + 1 : 0; - /** - * Track which states are currently active. - */ - const activeStates = { - initial: true, - animate: true - }; - /** - * A map of functions that, when called, will remove event listeners for - * a given gesture. - */ - const gestureSubscriptions = {}; - /** - * Initialise a context to share through motion states. This - * will be populated by variant names (if any). - */ - const context = {}; - for (const name of stateTypes) { - context[name] = typeof options[name] === "string" ? options[name] : parent === null || parent === void 0 ? void 0 : parent.getContext()[name]; - } - /** - * If initial is set to false we use the animate prop as the initial - * animation state. - */ - const initialVariantSource = options.initial === false ? "animate" : "initial"; - /** - * Destructure an initial target out from the resolved initial variant. - */ - let _a = (0, _resolveVariantEs.resolveVariant)(options[initialVariantSource] || context[initialVariantSource], options.variants) || {}, - target = (0, _tslib.__rest)(_a, ["transition"]); - /** - * The base target is a cached map of values that we'll use to animate - * back to if a value is removed from all active state types. This - * is usually the initial value as read from the DOM, for instance if - * it hasn't been defined in initial. - */ - const baseTarget = Object.assign({}, target); - /** - * A generator that will be processed by the global animation scheduler. - * This yeilds when it switches from reading the DOM to writing to it - * to prevent layout thrashing. - */ - function* animateUpdates() { - var _a, _b; - const prevTarget = target; - target = {}; - const animationOptions = {}; - for (const name of stateTypes) { - if (!activeStates[name]) continue; - const variant = (0, _resolveVariantEs.resolveVariant)(options[name]); - if (!variant) continue; - for (const key in variant) { - if (key === "transition") continue; - target[key] = variant[key]; - animationOptions[key] = (0, _optionsEs.getOptions)((_b = (_a = variant.transition) !== null && _a !== void 0 ? _a : options.transition) !== null && _b !== void 0 ? _b : {}, key); - } - } - const allTargetKeys = new Set([...Object.keys(target), ...Object.keys(prevTarget)]); - const animationFactories = []; - allTargetKeys.forEach(key => { - var _a; - if (target[key] === undefined) { - target[key] = baseTarget[key]; - } - if ((0, _hasChangedEs.hasChanged)(prevTarget[key], target[key])) { - (_a = baseTarget[key]) !== null && _a !== void 0 ? _a : baseTarget[key] = _styleEs.style.get(element, key); - animationFactories.push((0, _animateStyleEs.animateStyle)(element, key, target[key], animationOptions[key])); - } - }); - // Wait for all animation states to read from the DOM - yield; - const animations = animationFactories.map(factory => factory()).filter(Boolean); - if (!animations.length) return; - const animationTarget = target; - element.dispatchEvent((0, _eventsEs.motionEvent)("motionstart", animationTarget)); - Promise.all(animations.map(animation => animation.finished)).then(() => { - element.dispatchEvent((0, _eventsEs.motionEvent)("motioncomplete", animationTarget)); - }).catch(_utils.noop); - } - const setGesture = (name, isActive) => () => { - activeStates[name] = isActive; - (0, _scheduleEs.scheduleAnimation)(state); - }; - const updateGestureSubscriptions = () => { - for (const name in gestures) { - const isGestureActive = gestures[name].isActive(options); - const remove = gestureSubscriptions[name]; - if (isGestureActive && !remove) { - gestureSubscriptions[name] = gestures[name].subscribe(element, { - enable: setGesture(name, true), - disable: setGesture(name, false) - }, options); - } else if (!isGestureActive && remove) { - remove(); - delete gestureSubscriptions[name]; - } - } - }; - const state = { - update: newOptions => { - if (!element) return; - options = newOptions; - updateGestureSubscriptions(); - (0, _scheduleEs.scheduleAnimation)(state); - }, - setActive: (name, isActive) => { - if (!element) return; - activeStates[name] = isActive; - (0, _scheduleEs.scheduleAnimation)(state); - }, - animateUpdates, - getDepth: () => depth, - getTarget: () => target, - getOptions: () => options, - getContext: () => context, - mount: newElement => { - (0, _heyListen.invariant)(Boolean(newElement), "Animation state must be mounted with valid Element"); - element = newElement; - mountedStates.set(element, state); - updateGestureSubscriptions(); - return () => { - mountedStates.delete(element); - (0, _scheduleEs.unscheduleAnimation)(state); - for (const key in gestureSubscriptions) { - gestureSubscriptions[key](); - } - }; - }, - isMounted: () => Boolean(element) - }; - return state; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/utils/events.es.js": -/*!**************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/utils/events.es.js ***! - \**************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.dispatchPointerEvent = dispatchPointerEvent; -exports.dispatchViewEvent = dispatchViewEvent; -exports.motionEvent = void 0; -const motionEvent = (name, target) => new CustomEvent(name, { - detail: { - target - } -}); -exports.motionEvent = motionEvent; -function dispatchPointerEvent(element, name, event) { - element.dispatchEvent(new CustomEvent(name, { - detail: { - originalEvent: event - } - })); -} -function dispatchViewEvent(element, name, entry) { - element.dispatchEvent(new CustomEvent(name, { - detail: { - originalEntry: entry - } - })); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/utils/has-changed.es.js": -/*!*******************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/utils/has-changed.es.js ***! - \*******************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.hasChanged = hasChanged; -exports.shallowCompare = shallowCompare; -function hasChanged(a, b) { - if (typeof a !== typeof b) return true; - if (Array.isArray(a) && Array.isArray(b)) return !shallowCompare(a, b); - return a !== b; -} -function shallowCompare(next, prev) { - const prevLength = prev.length; - if (prevLength !== next.length) return false; - for (let i = 0; i < prevLength; i++) { - if (prev[i] !== next[i]) return false; - } - return true; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js": -/*!******************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js ***! - \******************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isVariant = isVariant; -function isVariant(definition) { - return typeof definition === "object"; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js": -/*!***********************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js ***! - \***********************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.resolveVariant = resolveVariant; -var _isVariantEs = __webpack_require__(/*! ./is-variant.es.js */ "../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js"); -function resolveVariant(definition, variants) { - if ((0, _isVariantEs.isVariant)(definition)) { - return definition; - } else if (definition && variants) { - return variants[definition]; - } -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/state/utils/schedule.es.js": -/*!****************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/state/utils/schedule.es.js ***! - \****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.scheduleAnimation = scheduleAnimation; -exports.unscheduleAnimation = unscheduleAnimation; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -let scheduled = undefined; -function processScheduledAnimations() { - if (!scheduled) return; - const generators = scheduled.sort(compareByDepth).map(fireAnimateUpdates); - generators.forEach(fireNext); - generators.forEach(fireNext); - scheduled = undefined; -} -function scheduleAnimation(state) { - if (!scheduled) { - scheduled = [state]; - requestAnimationFrame(processScheduledAnimations); - } else { - (0, _utils.addUniqueItem)(scheduled, state); - } -} -function unscheduleAnimation(state) { - scheduled && (0, _utils.removeItem)(scheduled, state); -} -const compareByDepth = (a, b) => a.getDepth() - b.getDepth(); -const fireAnimateUpdates = state => state.animateUpdates(); -const fireNext = iterator => iterator.next(); - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/timeline/index.es.js": -/*!**********************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/timeline/index.es.js ***! - \**********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createAnimationsFromTimeline = createAnimationsFromTimeline; -exports.timeline = timeline; -var _tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); -var _heyListen = __webpack_require__(/*! hey-listen */ "../../../node_modules/hey-listen/dist/hey-listen.es.js"); -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _staggerEs = __webpack_require__(/*! ../utils/stagger.es.js */ "../../../node_modules/@motionone/dom/dist/utils/stagger.es.js"); -var _animateStyleEs = __webpack_require__(/*! ../animate/animate-style.es.js */ "../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js"); -var _controlsEs = __webpack_require__(/*! ../animate/utils/controls.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js"); -var _keyframesEs = __webpack_require__(/*! ../animate/utils/keyframes.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js"); -var _optionsEs = __webpack_require__(/*! ../animate/utils/options.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js"); -var _resolveElementsEs = __webpack_require__(/*! ../utils/resolve-elements.es.js */ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js"); -var _transformsEs = __webpack_require__(/*! ../animate/utils/transforms.es.js */ "../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js"); -var _calcTimeEs = __webpack_require__(/*! ./utils/calc-time.es.js */ "../../../node_modules/@motionone/dom/dist/timeline/utils/calc-time.es.js"); -var _editEs = __webpack_require__(/*! ./utils/edit.es.js */ "../../../node_modules/@motionone/dom/dist/timeline/utils/edit.es.js"); -var _sortEs = __webpack_require__(/*! ./utils/sort.es.js */ "../../../node_modules/@motionone/dom/dist/timeline/utils/sort.es.js"); -function timeline(definition) { - let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _a; - const animationDefinitions = createAnimationsFromTimeline(definition, options); - /** - * Create and start animations - */ - const animationFactories = animationDefinitions.map(definition => (0, _animateStyleEs.animateStyle)(...definition)).filter(Boolean); - return (0, _controlsEs.withControls)(animationFactories, options, - // Get the duration from the first animation definition - (_a = animationDefinitions[0]) === null || _a === void 0 ? void 0 : _a[3].duration); -} -function createAnimationsFromTimeline(definition) { - let _a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var { - defaultOptions = {} - } = _a, - timelineOptions = (0, _tslib.__rest)(_a, ["defaultOptions"]); - const animationDefinitions = []; - const elementSequences = new Map(); - const elementCache = {}; - const timeLabels = new Map(); - let prevTime = 0; - let currentTime = 0; - let totalDuration = 0; - /** - * Build the timeline by mapping over the definition array and converting - * the definitions into keyframes and offsets with absolute time values. - * These will later get converted into relative offsets in a second pass. - */ - for (let i = 0; i < definition.length; i++) { - const segment = definition[i]; - /** - * If this is a timeline label, mark it and skip the rest of this iteration. - */ - if ((0, _utils.isString)(segment)) { - timeLabels.set(segment, currentTime); - continue; - } else if (!Array.isArray(segment)) { - timeLabels.set(segment.name, (0, _calcTimeEs.calcNextTime)(currentTime, segment.at, prevTime, timeLabels)); - continue; - } - const [elementDefinition, keyframes, options = {}] = segment; - /** - * If a relative or absolute time value has been specified we need to resolve - * it in relation to the currentTime. - */ - if (options.at !== undefined) { - currentTime = (0, _calcTimeEs.calcNextTime)(currentTime, options.at, prevTime, timeLabels); - } - /** - * Keep track of the maximum duration in this definition. This will be - * applied to currentTime once the definition has been parsed. - */ - let maxDuration = 0; - /** - * Find all the elements specified in the definition and parse value - * keyframes from their timeline definitions. - */ - const elements = (0, _resolveElementsEs.resolveElements)(elementDefinition, elementCache); - const numElements = elements.length; - for (let elementIndex = 0; elementIndex < numElements; elementIndex++) { - const element = elements[elementIndex]; - const elementSequence = getElementSequence(element, elementSequences); - for (const key in keyframes) { - const valueSequence = getValueSequence(key, elementSequence); - let valueKeyframes = (0, _keyframesEs.keyframesList)(keyframes[key]); - const valueOptions = (0, _optionsEs.getOptions)(options, key); - let { - duration = defaultOptions.duration || _utils.defaults.duration, - easing = defaultOptions.easing || _utils.defaults.easing - } = valueOptions; - if ((0, _utils.isEasingGenerator)(easing)) { - const valueIsTransform = (0, _transformsEs.isTransform)(key); - (0, _heyListen.invariant)(valueKeyframes.length === 2 || !valueIsTransform, "spring must be provided 2 keyframes within timeline"); - const custom = easing.createAnimation(valueKeyframes, - // TODO We currently only support explicit keyframes - // so this doesn't currently read from the DOM - () => "0", valueIsTransform); - easing = custom.easing; - if (custom.keyframes !== undefined) valueKeyframes = custom.keyframes; - if (custom.duration !== undefined) duration = custom.duration; - } - const delay = (0, _staggerEs.resolveOption)(options.delay, elementIndex, numElements) || 0; - const startTime = currentTime + delay; - const targetTime = startTime + duration; - /** - * - */ - let { - offset = (0, _utils.defaultOffset)(valueKeyframes.length) - } = valueOptions; - /** - * If there's only one offset of 0, fill in a second with length 1 - * - * TODO: Ensure there's a test that covers this removal - */ - if (offset.length === 1 && offset[0] === 0) { - offset[1] = 1; - } - /** - * Fill out if offset if fewer offsets than keyframes - */ - const remainder = length - valueKeyframes.length; - remainder > 0 && (0, _utils.fillOffset)(offset, remainder); - /** - * If only one value has been set, ie [1], push a null to the start of - * the keyframe array. This will let us mark a keyframe at this point - * that will later be hydrated with the previous value. - */ - valueKeyframes.length === 1 && valueKeyframes.unshift(null); - /** - * Add keyframes, mapping offsets to absolute time. - */ - (0, _editEs.addKeyframes)(valueSequence, valueKeyframes, easing, offset, startTime, targetTime); - maxDuration = Math.max(delay + duration, maxDuration); - totalDuration = Math.max(targetTime, totalDuration); - } - } - prevTime = currentTime; - currentTime += maxDuration; - } - /** - * For every element and value combination create a new animation. - */ - elementSequences.forEach((valueSequences, element) => { - for (const key in valueSequences) { - const valueSequence = valueSequences[key]; - /** - * Arrange all the keyframes in ascending time order. - */ - valueSequence.sort(_sortEs.compareByTime); - const keyframes = []; - const valueOffset = []; - const valueEasing = []; - /** - * For each keyframe, translate absolute times into - * relative offsets based on the total duration of the timeline. - */ - for (let i = 0; i < valueSequence.length; i++) { - const { - at, - value, - easing - } = valueSequence[i]; - keyframes.push(value); - valueOffset.push((0, _utils.progress)(0, totalDuration, at)); - valueEasing.push(easing || _utils.defaults.easing); - } - /** - * If the first keyframe doesn't land on offset: 0 - * provide one by duplicating the initial keyframe. This ensures - * it snaps to the first keyframe when the animation starts. - */ - if (valueOffset[0] !== 0) { - valueOffset.unshift(0); - keyframes.unshift(keyframes[0]); - valueEasing.unshift("linear"); - } - /** - * If the last keyframe doesn't land on offset: 1 - * provide one with a null wildcard value. This will ensure it - * stays static until the end of the animation. - */ - if (valueOffset[valueOffset.length - 1] !== 1) { - valueOffset.push(1); - keyframes.push(null); - } - animationDefinitions.push([element, key, keyframes, Object.assign(Object.assign(Object.assign({}, defaultOptions), { - duration: totalDuration, - easing: valueEasing, - offset: valueOffset - }), timelineOptions)]); - } - }); - return animationDefinitions; -} -function getElementSequence(element, sequences) { - !sequences.has(element) && sequences.set(element, {}); - return sequences.get(element); -} -function getValueSequence(name, sequences) { - if (!sequences[name]) sequences[name] = []; - return sequences[name]; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/timeline/utils/calc-time.es.js": -/*!********************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/calc-time.es.js ***! - \********************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.calcNextTime = calcNextTime; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -function calcNextTime(current, next, prev, labels) { - var _a; - if ((0, _utils.isNumber)(next)) { - return next; - } else if (next.startsWith("-") || next.startsWith("+")) { - return Math.max(0, current + parseFloat(next)); - } else if (next === "<") { - return prev; - } else { - return (_a = labels.get(next)) !== null && _a !== void 0 ? _a : current; - } -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/timeline/utils/edit.es.js": -/*!***************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/edit.es.js ***! - \***************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.addKeyframes = addKeyframes; -exports.eraseKeyframes = eraseKeyframes; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -function eraseKeyframes(sequence, startTime, endTime) { - for (let i = 0; i < sequence.length; i++) { - const keyframe = sequence[i]; - if (keyframe.at > startTime && keyframe.at < endTime) { - (0, _utils.removeItem)(sequence, keyframe); - // If we remove this item we have to push the pointer back one - i--; - } - } -} -function addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) { - /** - * Erase every existing value between currentTime and targetTime, - * this will essentially splice this timeline into any currently - * defined ones. - */ - eraseKeyframes(sequence, startTime, endTime); - for (let i = 0; i < keyframes.length; i++) { - sequence.push({ - value: keyframes[i], - at: (0, _utils.mix)(startTime, endTime, offset[i]), - easing: (0, _utils.getEasingForSegment)(easing, i) - }); - } -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/timeline/utils/sort.es.js": -/*!***************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/sort.es.js ***! - \***************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.compareByTime = compareByTime; -function compareByTime(a, b) { - if (a.at === b.at) { - return a.value === null ? 1 : -1; - } else { - return a.at - b.at; - } -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js": -/*!******************************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js ***! - \******************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.resolveElements = resolveElements; -function resolveElements(elements, selectorCache) { - var _a; - if (typeof elements === "string") { - if (selectorCache) { - (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : selectorCache[elements] = document.querySelectorAll(elements); - elements = selectorCache[elements]; - } else { - elements = document.querySelectorAll(elements); - } - } else if (elements instanceof Element) { - elements = [elements]; - } - /** - * Return an empty array - */ - return Array.from(elements || []); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/dom/dist/utils/stagger.es.js": -/*!*********************************************************************!*\ - !*** ../../../node_modules/@motionone/dom/dist/utils/stagger.es.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getFromIndex = getFromIndex; -exports.resolveOption = resolveOption; -exports.stagger = stagger; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _animation = __webpack_require__(/*! @motionone/animation */ "../../../node_modules/@motionone/animation/dist/index.es.js"); -function stagger() { - let duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.1; - let { - start = 0, - from = 0, - easing - } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return (i, total) => { - const fromIndex = (0, _utils.isNumber)(from) ? from : getFromIndex(from, total); - const distance = Math.abs(fromIndex - i); - let delay = duration * distance; - if (easing) { - const maxDelay = total * duration; - const easingFunction = (0, _animation.getEasingFunction)(easing); - delay = easingFunction(delay / maxDelay) * maxDelay; - } - return start + delay; - }; -} -function getFromIndex(from, total) { - if (from === "first") { - return 0; - } else { - const lastIndex = total - 1; - return from === "last" ? lastIndex : lastIndex / 2; - } -} -function resolveOption(option, i, total) { - return typeof option === "function" ? option(i, total) : option; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/easing/dist/cubic-bezier.es.js": -/*!***********************************************************************!*\ - !*** ../../../node_modules/@motionone/easing/dist/cubic-bezier.es.js ***! - \***********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.cubicBezier = cubicBezier; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -/* - Bezier function generator - - This has been modified from Gaëtan Renaudeau's BezierEasing - https://github.com/gre/bezier-easing/blob/master/src/index.js - https://github.com/gre/bezier-easing/blob/master/LICENSE - - I've removed the newtonRaphsonIterate algo because in benchmarking it - wasn't noticiably faster than binarySubdivision, indeed removing it - usually improved times, depending on the curve. - - I also removed the lookup table, as for the added bundle size and loop we're - only cutting ~4 or so subdivision iterations. I bumped the max iterations up - to 12 to compensate and this still tended to be faster for no perceivable - loss in accuracy. - - Usage - const easeOut = cubicBezier(.17,.67,.83,.67); - const x = easeOut(0.5); // returns 0.627... -*/ -// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. -const calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) * t; -const subdivisionPrecision = 0.0000001; -const subdivisionMaxIterations = 12; -function binarySubdivide(x, lowerBound, upperBound, mX1, mX2) { - let currentX; - let currentT; - let i = 0; - do { - currentT = lowerBound + (upperBound - lowerBound) / 2.0; - currentX = calcBezier(currentT, mX1, mX2) - x; - if (currentX > 0.0) { - upperBound = currentT; - } else { - lowerBound = currentT; - } - } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations); - return currentT; -} -function cubicBezier(mX1, mY1, mX2, mY2) { - // If this is a linear gradient, return linear easing - if (mX1 === mY1 && mX2 === mY2) return _utils.noopReturn; - const getTForX = aX => binarySubdivide(aX, 0, 1, mX1, mX2); - // If animation is at start/end, return t without easing - return t => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/easing/dist/index.es.js": -/*!****************************************************************!*\ - !*** ../../../node_modules/@motionone/easing/dist/index.es.js ***! - \****************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "cubicBezier", ({ - enumerable: true, - get: function () { - return _cubicBezierEs.cubicBezier; - } -})); -Object.defineProperty(exports, "steps", ({ - enumerable: true, - get: function () { - return _stepsEs.steps; - } -})); -var _cubicBezierEs = __webpack_require__(/*! ./cubic-bezier.es.js */ "../../../node_modules/@motionone/easing/dist/cubic-bezier.es.js"); -var _stepsEs = __webpack_require__(/*! ./steps.es.js */ "../../../node_modules/@motionone/easing/dist/steps.es.js"); - -/***/ }), - -/***/ "../../../node_modules/@motionone/easing/dist/steps.es.js": -/*!****************************************************************!*\ - !*** ../../../node_modules/@motionone/easing/dist/steps.es.js ***! - \****************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.steps = void 0; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -const steps = function (steps) { - let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "end"; - return progress => { - progress = direction === "end" ? Math.min(progress, 0.999) : Math.max(progress, 0.001); - const expanded = progress * steps; - const rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded); - return (0, _utils.clamp)(0, 1, rounded / steps); - }; -}; -exports.steps = steps; - -/***/ }), - -/***/ "../../../node_modules/@motionone/generators/dist/glide/index.es.js": -/*!**************************************************************************!*\ - !*** ../../../node_modules/@motionone/generators/dist/glide/index.es.js ***! - \**************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.glide = void 0; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _velocityEs = __webpack_require__(/*! ../utils/velocity.es.js */ "../../../node_modules/@motionone/generators/dist/utils/velocity.es.js"); -var _indexEs = __webpack_require__(/*! ../spring/index.es.js */ "../../../node_modules/@motionone/generators/dist/spring/index.es.js"); -const glide = _ref => { - let { - from = 0, - velocity = 0.0, - power = 0.8, - decay = 0.325, - bounceDamping, - bounceStiffness, - changeTarget, - min, - max, - restDistance = 0.5, - restSpeed - } = _ref; - decay = _utils.time.ms(decay); - const state = { - hasReachedTarget: false, - done: false, - current: from, - target: from - }; - const isOutOfBounds = v => min !== undefined && v < min || max !== undefined && v > max; - const nearestBoundary = v => { - if (min === undefined) return max; - if (max === undefined) return min; - return Math.abs(min - v) < Math.abs(max - v) ? min : max; - }; - let amplitude = power * velocity; - const ideal = from + amplitude; - const target = changeTarget === undefined ? ideal : changeTarget(ideal); - state.target = target; - /** - * If the target has changed we need to re-calculate the amplitude, otherwise - * the animation will start from the wrong position. - */ - if (target !== ideal) amplitude = target - from; - const calcDelta = t => -amplitude * Math.exp(-t / decay); - const calcLatest = t => target + calcDelta(t); - const applyFriction = t => { - const delta = calcDelta(t); - const latest = calcLatest(t); - state.done = Math.abs(delta) <= restDistance; - state.current = state.done ? target : latest; - }; - /** - * Ideally this would resolve for t in a stateless way, we could - * do that by always precalculating the animation but as we know - * this will be done anyway we can assume that spring will - * be discovered during that. - */ - let timeReachedBoundary; - let spring$1; - const checkCatchBoundary = t => { - if (!isOutOfBounds(state.current)) return; - timeReachedBoundary = t; - spring$1 = (0, _indexEs.spring)({ - from: state.current, - to: nearestBoundary(state.current), - velocity: (0, _velocityEs.calcGeneratorVelocity)(calcLatest, t, state.current), - damping: bounceDamping, - stiffness: bounceStiffness, - restDistance, - restSpeed - }); - }; - checkCatchBoundary(0); - return t => { - /** - * We need to resolve the friction to figure out if we need a - * spring but we don't want to do this twice per frame. So here - * we flag if we updated for this frame and later if we did - * we can skip doing it again. - */ - let hasUpdatedFrame = false; - if (!spring$1 && timeReachedBoundary === undefined) { - hasUpdatedFrame = true; - applyFriction(t); - checkCatchBoundary(t); - } - /** - * If we have a spring and the provided t is beyond the moment the friction - * animation crossed the min/max boundary, use the spring. - */ - if (timeReachedBoundary !== undefined && t > timeReachedBoundary) { - state.hasReachedTarget = true; - return spring$1(t - timeReachedBoundary); - } else { - state.hasReachedTarget = false; - !hasUpdatedFrame && applyFriction(t); - return state; - } - }; -}; -exports.glide = glide; - -/***/ }), - -/***/ "../../../node_modules/@motionone/generators/dist/index.es.js": -/*!********************************************************************!*\ - !*** ../../../node_modules/@motionone/generators/dist/index.es.js ***! - \********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "calcGeneratorVelocity", ({ - enumerable: true, - get: function () { - return _velocityEs.calcGeneratorVelocity; - } -})); -Object.defineProperty(exports, "glide", ({ - enumerable: true, - get: function () { - return _indexEs.glide; - } -})); -Object.defineProperty(exports, "pregenerateKeyframes", ({ - enumerable: true, - get: function () { - return _pregenerateKeyframesEs.pregenerateKeyframes; - } -})); -Object.defineProperty(exports, "spring", ({ - enumerable: true, - get: function () { - return _indexEs2.spring; - } -})); -var _indexEs = __webpack_require__(/*! ./glide/index.es.js */ "../../../node_modules/@motionone/generators/dist/glide/index.es.js"); -var _indexEs2 = __webpack_require__(/*! ./spring/index.es.js */ "../../../node_modules/@motionone/generators/dist/spring/index.es.js"); -var _pregenerateKeyframesEs = __webpack_require__(/*! ./utils/pregenerate-keyframes.es.js */ "../../../node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js"); -var _velocityEs = __webpack_require__(/*! ./utils/velocity.es.js */ "../../../node_modules/@motionone/generators/dist/utils/velocity.es.js"); - -/***/ }), - -/***/ "../../../node_modules/@motionone/generators/dist/spring/defaults.es.js": -/*!******************************************************************************!*\ - !*** ../../../node_modules/@motionone/generators/dist/spring/defaults.es.js ***! - \******************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.defaults = void 0; -const defaults = { - stiffness: 100.0, - damping: 10.0, - mass: 1.0 -}; -exports.defaults = defaults; - -/***/ }), - -/***/ "../../../node_modules/@motionone/generators/dist/spring/index.es.js": -/*!***************************************************************************!*\ - !*** ../../../node_modules/@motionone/generators/dist/spring/index.es.js ***! - \***************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.spring = void 0; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -var _defaultsEs = __webpack_require__(/*! ./defaults.es.js */ "../../../node_modules/@motionone/generators/dist/spring/defaults.es.js"); -var _utilsEs = __webpack_require__(/*! ./utils.es.js */ "../../../node_modules/@motionone/generators/dist/spring/utils.es.js"); -var _hasReachedTargetEs = __webpack_require__(/*! ../utils/has-reached-target.es.js */ "../../../node_modules/@motionone/generators/dist/utils/has-reached-target.es.js"); -var _velocityEs = __webpack_require__(/*! ../utils/velocity.es.js */ "../../../node_modules/@motionone/generators/dist/utils/velocity.es.js"); -const spring = function () { - let { - stiffness = _defaultsEs.defaults.stiffness, - damping = _defaultsEs.defaults.damping, - mass = _defaultsEs.defaults.mass, - from = 0, - to = 1, - velocity = 0.0, - restSpeed = 2, - restDistance = 0.5 - } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - velocity = velocity ? _utils.time.s(velocity) : 0.0; - const state = { - done: false, - hasReachedTarget: false, - current: from, - target: to - }; - const initialDelta = to - from; - const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000; - const dampingRatio = (0, _utilsEs.calcDampingRatio)(stiffness, damping, mass); - let resolveSpring; - if (dampingRatio < 1) { - const angularFreq = undampedAngularFreq * Math.sqrt(1 - dampingRatio * dampingRatio); - // Underdamped spring (bouncy) - resolveSpring = t => to - Math.exp(-dampingRatio * undampedAngularFreq * t) * ((-velocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t)); - } else { - // Critically damped spring - resolveSpring = t => { - return to - Math.exp(-undampedAngularFreq * t) * (initialDelta + (-velocity + undampedAngularFreq * initialDelta) * t); - }; - } - return t => { - state.current = resolveSpring(t); - const currentVelocity = t === 0 ? velocity : (0, _velocityEs.calcGeneratorVelocity)(resolveSpring, t, state.current); - const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed; - const isBelowDisplacementThreshold = Math.abs(to - state.current) <= restDistance; - state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold; - state.hasReachedTarget = (0, _hasReachedTargetEs.hasReachedTarget)(from, to, state.current); - return state; - }; -}; -exports.spring = spring; - -/***/ }), - -/***/ "../../../node_modules/@motionone/generators/dist/spring/utils.es.js": -/*!***************************************************************************!*\ - !*** ../../../node_modules/@motionone/generators/dist/spring/utils.es.js ***! - \***************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.calcDampingRatio = void 0; -var _defaultsEs = __webpack_require__(/*! ./defaults.es.js */ "../../../node_modules/@motionone/generators/dist/spring/defaults.es.js"); -const calcDampingRatio = function () { - let stiffness = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _defaultsEs.defaults.stiffness; - let damping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _defaultsEs.defaults.damping; - let mass = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _defaultsEs.defaults.mass; - return damping / (2 * Math.sqrt(stiffness * mass)); -}; -exports.calcDampingRatio = calcDampingRatio; - -/***/ }), - -/***/ "../../../node_modules/@motionone/generators/dist/utils/has-reached-target.es.js": -/*!***************************************************************************************!*\ - !*** ../../../node_modules/@motionone/generators/dist/utils/has-reached-target.es.js ***! - \***************************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.hasReachedTarget = hasReachedTarget; -function hasReachedTarget(origin, target, current) { - return origin < target && current >= target || origin > target && current <= target; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js": -/*!******************************************************************************************!*\ - !*** ../../../node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js ***! - \******************************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.pregenerateKeyframes = pregenerateKeyframes; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -const timeStep = 10; -const maxDuration = 10000; -function pregenerateKeyframes(generator) { - let toUnit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noopReturn; - let overshootDuration = undefined; - let timestamp = timeStep; - let state = generator(0); - const keyframes = [toUnit(state.current)]; - while (!state.done && timestamp < maxDuration) { - state = generator(timestamp); - keyframes.push(toUnit(state.done ? state.target : state.current)); - if (overshootDuration === undefined && state.hasReachedTarget) { - overshootDuration = timestamp; - } - timestamp += timeStep; - } - const duration = timestamp - timeStep; - /** - * If generating an animation that didn't actually move, - * generate a second keyframe so we have an origin and target. - */ - if (keyframes.length === 1) keyframes.push(state.current); - return { - keyframes, - duration: duration / 1000, - overshootDuration: (overshootDuration !== null && overshootDuration !== void 0 ? overshootDuration : duration) / 1000 - }; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/generators/dist/utils/velocity.es.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@motionone/generators/dist/utils/velocity.es.js ***! - \*****************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.calcGeneratorVelocity = calcGeneratorVelocity; -var _utils = __webpack_require__(/*! @motionone/utils */ "../../../node_modules/@motionone/utils/dist/index.es.js"); -const sampleT = 5; // ms -function calcGeneratorVelocity(resolveValue, t, current) { - const prevT = Math.max(t - sampleT, 0); - return (0, _utils.velocityPerSecond)(current - resolveValue(prevT), t - prevT); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/types/dist/MotionValue.es.js": -/*!*********************************************************************!*\ - !*** ../../../node_modules/@motionone/types/dist/MotionValue.es.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.MotionValue = void 0; -/** - * The MotionValue tracks the state of a single animatable - * value. Currently, updatedAt and current are unused. The - * long term idea is to use this to minimise the number - * of DOM reads, and to abstract the DOM interactions here. - */ -class MotionValue { - setAnimation(animation) { - this.animation = animation; - animation === null || animation === void 0 ? void 0 : animation.finished.then(() => this.clearAnimation()).catch(() => {}); - } - clearAnimation() { - this.animation = this.generator = undefined; - } -} -exports.MotionValue = MotionValue; - -/***/ }), - -/***/ "../../../node_modules/@motionone/types/dist/index.es.js": -/*!***************************************************************!*\ - !*** ../../../node_modules/@motionone/types/dist/index.es.js ***! - \***************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "MotionValue", ({ - enumerable: true, - get: function () { - return _MotionValueEs.MotionValue; - } -})); -var _MotionValueEs = __webpack_require__(/*! ./MotionValue.es.js */ "../../../node_modules/@motionone/types/dist/MotionValue.es.js"); - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/array.es.js": -/*!***************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/array.es.js ***! - \***************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.addUniqueItem = addUniqueItem; -exports.removeItem = removeItem; -function addUniqueItem(array, item) { - array.indexOf(item) === -1 && array.push(item); -} -function removeItem(arr, item) { - const index = arr.indexOf(item); - index > -1 && arr.splice(index, 1); -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/clamp.es.js": -/*!***************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/clamp.es.js ***! - \***************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.clamp = void 0; -const clamp = (min, max, v) => Math.min(Math.max(v, min), max); -exports.clamp = clamp; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/defaults.es.js": -/*!******************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/defaults.es.js ***! - \******************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.defaults = void 0; -const defaults = { - duration: 0.3, - delay: 0, - endDelay: 0, - repeat: 0, - easing: "ease" -}; -exports.defaults = defaults; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/easing.es.js": -/*!****************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/easing.es.js ***! - \****************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getEasingForSegment = getEasingForSegment; -var _isEasingListEs = __webpack_require__(/*! ./is-easing-list.es.js */ "../../../node_modules/@motionone/utils/dist/is-easing-list.es.js"); -var _wrapEs = __webpack_require__(/*! ./wrap.es.js */ "../../../node_modules/@motionone/utils/dist/wrap.es.js"); -function getEasingForSegment(easing, i) { - return (0, _isEasingListEs.isEasingList)(easing) ? easing[(0, _wrapEs.wrap)(0, easing.length, i)] : easing; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/index.es.js": -/*!***************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/index.es.js ***! - \***************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "addUniqueItem", ({ - enumerable: true, - get: function () { - return _arrayEs.addUniqueItem; - } -})); -Object.defineProperty(exports, "clamp", ({ - enumerable: true, - get: function () { - return _clampEs.clamp; - } -})); -Object.defineProperty(exports, "defaultOffset", ({ - enumerable: true, - get: function () { - return _offsetEs.defaultOffset; - } -})); -Object.defineProperty(exports, "defaults", ({ - enumerable: true, - get: function () { - return _defaultsEs.defaults; - } -})); -Object.defineProperty(exports, "fillOffset", ({ - enumerable: true, - get: function () { - return _offsetEs.fillOffset; - } -})); -Object.defineProperty(exports, "getEasingForSegment", ({ - enumerable: true, - get: function () { - return _easingEs.getEasingForSegment; - } -})); -Object.defineProperty(exports, "interpolate", ({ - enumerable: true, - get: function () { - return _interpolateEs.interpolate; - } -})); -Object.defineProperty(exports, "isCubicBezier", ({ - enumerable: true, - get: function () { - return _isCubicBezierEs.isCubicBezier; - } -})); -Object.defineProperty(exports, "isEasingGenerator", ({ - enumerable: true, - get: function () { - return _isEasingGeneratorEs.isEasingGenerator; - } -})); -Object.defineProperty(exports, "isEasingList", ({ - enumerable: true, - get: function () { - return _isEasingListEs.isEasingList; - } -})); -Object.defineProperty(exports, "isFunction", ({ - enumerable: true, - get: function () { - return _isFunctionEs.isFunction; - } -})); -Object.defineProperty(exports, "isNumber", ({ - enumerable: true, - get: function () { - return _isNumberEs.isNumber; - } -})); -Object.defineProperty(exports, "isString", ({ - enumerable: true, - get: function () { - return _isStringEs.isString; - } -})); -Object.defineProperty(exports, "mix", ({ - enumerable: true, - get: function () { - return _mixEs.mix; - } -})); -Object.defineProperty(exports, "noop", ({ - enumerable: true, - get: function () { - return _noopEs.noop; - } -})); -Object.defineProperty(exports, "noopReturn", ({ - enumerable: true, - get: function () { - return _noopEs.noopReturn; - } -})); -Object.defineProperty(exports, "progress", ({ - enumerable: true, - get: function () { - return _progressEs.progress; - } -})); -Object.defineProperty(exports, "removeItem", ({ - enumerable: true, - get: function () { - return _arrayEs.removeItem; - } -})); -Object.defineProperty(exports, "time", ({ - enumerable: true, - get: function () { - return _timeEs.time; - } -})); -Object.defineProperty(exports, "velocityPerSecond", ({ - enumerable: true, - get: function () { - return _velocityEs.velocityPerSecond; - } -})); -Object.defineProperty(exports, "wrap", ({ - enumerable: true, - get: function () { - return _wrapEs.wrap; - } -})); -var _arrayEs = __webpack_require__(/*! ./array.es.js */ "../../../node_modules/@motionone/utils/dist/array.es.js"); -var _clampEs = __webpack_require__(/*! ./clamp.es.js */ "../../../node_modules/@motionone/utils/dist/clamp.es.js"); -var _defaultsEs = __webpack_require__(/*! ./defaults.es.js */ "../../../node_modules/@motionone/utils/dist/defaults.es.js"); -var _easingEs = __webpack_require__(/*! ./easing.es.js */ "../../../node_modules/@motionone/utils/dist/easing.es.js"); -var _interpolateEs = __webpack_require__(/*! ./interpolate.es.js */ "../../../node_modules/@motionone/utils/dist/interpolate.es.js"); -var _isCubicBezierEs = __webpack_require__(/*! ./is-cubic-bezier.es.js */ "../../../node_modules/@motionone/utils/dist/is-cubic-bezier.es.js"); -var _isEasingGeneratorEs = __webpack_require__(/*! ./is-easing-generator.es.js */ "../../../node_modules/@motionone/utils/dist/is-easing-generator.es.js"); -var _isEasingListEs = __webpack_require__(/*! ./is-easing-list.es.js */ "../../../node_modules/@motionone/utils/dist/is-easing-list.es.js"); -var _isFunctionEs = __webpack_require__(/*! ./is-function.es.js */ "../../../node_modules/@motionone/utils/dist/is-function.es.js"); -var _isNumberEs = __webpack_require__(/*! ./is-number.es.js */ "../../../node_modules/@motionone/utils/dist/is-number.es.js"); -var _isStringEs = __webpack_require__(/*! ./is-string.es.js */ "../../../node_modules/@motionone/utils/dist/is-string.es.js"); -var _mixEs = __webpack_require__(/*! ./mix.es.js */ "../../../node_modules/@motionone/utils/dist/mix.es.js"); -var _noopEs = __webpack_require__(/*! ./noop.es.js */ "../../../node_modules/@motionone/utils/dist/noop.es.js"); -var _offsetEs = __webpack_require__(/*! ./offset.es.js */ "../../../node_modules/@motionone/utils/dist/offset.es.js"); -var _progressEs = __webpack_require__(/*! ./progress.es.js */ "../../../node_modules/@motionone/utils/dist/progress.es.js"); -var _timeEs = __webpack_require__(/*! ./time.es.js */ "../../../node_modules/@motionone/utils/dist/time.es.js"); -var _velocityEs = __webpack_require__(/*! ./velocity.es.js */ "../../../node_modules/@motionone/utils/dist/velocity.es.js"); -var _wrapEs = __webpack_require__(/*! ./wrap.es.js */ "../../../node_modules/@motionone/utils/dist/wrap.es.js"); - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/interpolate.es.js": -/*!*********************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/interpolate.es.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.interpolate = interpolate; -var _mixEs = __webpack_require__(/*! ./mix.es.js */ "../../../node_modules/@motionone/utils/dist/mix.es.js"); -var _noopEs = __webpack_require__(/*! ./noop.es.js */ "../../../node_modules/@motionone/utils/dist/noop.es.js"); -var _offsetEs = __webpack_require__(/*! ./offset.es.js */ "../../../node_modules/@motionone/utils/dist/offset.es.js"); -var _progressEs = __webpack_require__(/*! ./progress.es.js */ "../../../node_modules/@motionone/utils/dist/progress.es.js"); -var _easingEs = __webpack_require__(/*! ./easing.es.js */ "../../../node_modules/@motionone/utils/dist/easing.es.js"); -var _clampEs = __webpack_require__(/*! ./clamp.es.js */ "../../../node_modules/@motionone/utils/dist/clamp.es.js"); -function interpolate(output) { - let input = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _offsetEs.defaultOffset)(output.length); - let easing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _noopEs.noopReturn; - const length = output.length; - /** - * If the input length is lower than the output we - * fill the input to match. This currently assumes the input - * is an animation progress value so is a good candidate for - * moving outside the function. - */ - const remainder = length - input.length; - remainder > 0 && (0, _offsetEs.fillOffset)(input, remainder); - return t => { - let i = 0; - for (; i < length - 2; i++) { - if (t < input[i + 1]) break; - } - let progressInRange = (0, _clampEs.clamp)(0, 1, (0, _progressEs.progress)(input[i], input[i + 1], t)); - const segmentEasing = (0, _easingEs.getEasingForSegment)(easing, i); - progressInRange = segmentEasing(progressInRange); - return (0, _mixEs.mix)(output[i], output[i + 1], progressInRange); - }; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/is-cubic-bezier.es.js": -/*!*************************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/is-cubic-bezier.es.js ***! - \*************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isCubicBezier = void 0; -var _isNumberEs = __webpack_require__(/*! ./is-number.es.js */ "../../../node_modules/@motionone/utils/dist/is-number.es.js"); -const isCubicBezier = easing => Array.isArray(easing) && (0, _isNumberEs.isNumber)(easing[0]); -exports.isCubicBezier = isCubicBezier; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/is-easing-generator.es.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/is-easing-generator.es.js ***! - \*****************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isEasingGenerator = void 0; -const isEasingGenerator = easing => typeof easing === "object" && Boolean(easing.createAnimation); -exports.isEasingGenerator = isEasingGenerator; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/is-easing-list.es.js": -/*!************************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/is-easing-list.es.js ***! - \************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isEasingList = void 0; -var _isNumberEs = __webpack_require__(/*! ./is-number.es.js */ "../../../node_modules/@motionone/utils/dist/is-number.es.js"); -const isEasingList = easing => Array.isArray(easing) && !(0, _isNumberEs.isNumber)(easing[0]); -exports.isEasingList = isEasingList; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/is-function.es.js": -/*!*********************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/is-function.es.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isFunction = void 0; -const isFunction = value => typeof value === "function"; -exports.isFunction = isFunction; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/is-number.es.js": -/*!*******************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/is-number.es.js ***! - \*******************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isNumber = void 0; -const isNumber = value => typeof value === "number"; -exports.isNumber = isNumber; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/is-string.es.js": -/*!*******************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/is-string.es.js ***! - \*******************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isString = void 0; -const isString = value => typeof value === "string"; -exports.isString = isString; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/mix.es.js": -/*!*************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/mix.es.js ***! - \*************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.mix = void 0; -const mix = (min, max, progress) => -progress * min + progress * max + min; -exports.mix = mix; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/noop.es.js": -/*!**************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/noop.es.js ***! - \**************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.noopReturn = exports.noop = void 0; -const noop = () => {}; -exports.noop = noop; -const noopReturn = v => v; -exports.noopReturn = noopReturn; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/offset.es.js": -/*!****************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/offset.es.js ***! - \****************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.defaultOffset = defaultOffset; -exports.fillOffset = fillOffset; -var _mixEs = __webpack_require__(/*! ./mix.es.js */ "../../../node_modules/@motionone/utils/dist/mix.es.js"); -var _progressEs = __webpack_require__(/*! ./progress.es.js */ "../../../node_modules/@motionone/utils/dist/progress.es.js"); -function fillOffset(offset, remaining) { - const min = offset[offset.length - 1]; - for (let i = 1; i <= remaining; i++) { - const offsetProgress = (0, _progressEs.progress)(0, remaining, i); - offset.push((0, _mixEs.mix)(min, 1, offsetProgress)); - } -} -function defaultOffset(length) { - const offset = [0]; - fillOffset(offset, length - 1); - return offset; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/progress.es.js": -/*!******************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/progress.es.js ***! - \******************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.progress = void 0; -const progress = (min, max, value) => max - min === 0 ? 1 : (value - min) / (max - min); -exports.progress = progress; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/time.es.js": -/*!**************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/time.es.js ***! - \**************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.time = void 0; -const time = { - ms: seconds => seconds * 1000, - s: milliseconds => milliseconds / 1000 -}; -exports.time = time; - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/velocity.es.js": -/*!******************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/velocity.es.js ***! - \******************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.velocityPerSecond = velocityPerSecond; -/* - Convert velocity into velocity per second - - @param [number]: Unit per frame - @param [number]: Frame duration in ms -*/ -function velocityPerSecond(velocity, frameDuration) { - return frameDuration ? velocity * (1000 / frameDuration) : 0; -} - -/***/ }), - -/***/ "../../../node_modules/@motionone/utils/dist/wrap.es.js": -/*!**************************************************************!*\ - !*** ../../../node_modules/@motionone/utils/dist/wrap.es.js ***! - \**************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.wrap = void 0; -const wrap = (min, max, v) => { - const rangeSize = max - min; - return ((v - min) % rangeSize + rangeSize) % rangeSize + min; -}; -exports.wrap = wrap; - -/***/ }), - -/***/ "../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js": -/*!********************************************************************************!*\ - !*** ../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js ***! - \********************************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -function createDeferred() { - const d = {}; - d.promise = new Promise((resolve, reject) => { - d.resolve = resolve; - d.reject = reject; - }); - return d; -} -const SYMBOL_FINISHED = Symbol(); -const SYMBOL_NEW_VALUE = Symbol(); -/** - * makePushPullAsyncIterableIterator - * - * The iterable will publish values until return or throw is called. - * Afterwards it is in the completed state and cannot be used for publishing any further values. - * It will handle back-pressure and keep pushed values until they are consumed by a source. - */ -function makePushPullAsyncIterableIterator() { - let isRunning = true; - const values = []; - let newValueD = createDeferred(); - const finishedD = createDeferred(); - const asyncIterableIterator = async function* PushPullAsyncIterableIterator() { - while (true) { - if (values.length > 0) { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - yield values.shift(); - } else { - const result = await Promise.race([newValueD.promise, finishedD.promise]); - if (result === SYMBOL_FINISHED) { - break; - } - if (result !== SYMBOL_NEW_VALUE) { - throw result; - } - } - } - }(); - function pushValue(value) { - if (isRunning === false) { - // TODO: Should this throw? - return; - } - values.push(value); - newValueD.resolve(SYMBOL_NEW_VALUE); - newValueD = createDeferred(); - } - // We monkey patch the original generator for clean-up - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const originalReturn = asyncIterableIterator.return.bind(asyncIterableIterator); - asyncIterableIterator.return = function () { - isRunning = false; - finishedD.resolve(SYMBOL_FINISHED); - return originalReturn(...arguments); - }; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const originalThrow = asyncIterableIterator.throw.bind(asyncIterableIterator); - asyncIterableIterator.throw = err => { - isRunning = false; - finishedD.resolve(err); - return originalThrow(err); - }; - return { - pushValue, - asyncIterableIterator - }; -} -const makeAsyncIterableIteratorFromSink = make => { - const { - pushValue, - asyncIterableIterator - } = makePushPullAsyncIterableIterator(); - const dispose = make({ - next: value => { - pushValue(value); - }, - complete: () => { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - asyncIterableIterator.return(); - }, - error: err => { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - asyncIterableIterator.throw(err); - } - }); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const originalReturn = asyncIterableIterator.return; - let returnValue = undefined; - asyncIterableIterator.return = () => { - if (returnValue === undefined) { - dispose(); - returnValue = originalReturn(); - } - return returnValue; - }; - return asyncIterableIterator; -}; -function applyAsyncIterableIteratorToSink(asyncIterableIterator, sink) { - const run = async () => { - try { - for await (const value of asyncIterableIterator) { - sink.next(value); - } - sink.complete(); - } catch (err) { - sink.error(err); - } - }; - run(); - return () => { - var _a; - (_a = asyncIterableIterator.return) === null || _a === void 0 ? void 0 : _a.call(asyncIterableIterator); - }; -} -function isAsyncIterable(input) { - return typeof input === "object" && input !== null && ( - // The AsyncGenerator check is for Safari on iOS which currently does not have - // Symbol.asyncIterator implemented - // That means every custom AsyncIterable must be built using a AsyncGeneratorFunction (async function * () {}) - // eslint-disable-next-line @typescript-eslint/no-explicit-any - input[Symbol.toStringTag] === "AsyncGenerator" || Symbol.asyncIterator && Symbol.asyncIterator in input); -} -exports.applyAsyncIterableIteratorToSink = applyAsyncIterableIteratorToSink; -exports.isAsyncIterable = isAsyncIterable; -exports.makeAsyncIterableIteratorFromSink = makeAsyncIterableIteratorFromSink; -exports.makePushPullAsyncIterableIterator = makePushPullAsyncIterableIterator; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/primitive/dist/index.js": -/*!***************************************************************!*\ - !*** ../../../node_modules/@radix-ui/primitive/dist/index.js ***! - \***************************************************************/ -/***/ (function(module) { - - - -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "composeEventHandlers", () => $1a6a90a521dcd173$export$b9ecd428b558ff10); -function $1a6a90a521dcd173$export$b9ecd428b558ff10(originalEventHandler, ourEventHandler) { - let { - checkForDefaultPrevented = true - } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - return function handleEvent(event) { - originalEventHandler === null || originalEventHandler === void 0 || originalEventHandler(event); - if (checkForDefaultPrevented === false || !event.defaultPrevented) return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event); - }; -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-arrow/dist/index.js": -/*!*****************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-arrow/dist/index.js ***! - \*****************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $eQpDd$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $eQpDd$react = __webpack_require__(/*! react */ "react"); -var $eQpDd$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "Arrow", () => $09f4ad68a9251bc3$export$21b07c8f274aebd5); -$parcel$export(module.exports, "Root", () => $09f4ad68a9251bc3$export$be92b6f5f03c0fe9); - -/* ------------------------------------------------------------------------------------------------- - * Arrow - * -----------------------------------------------------------------------------------------------*/ -const $09f4ad68a9251bc3$var$NAME = 'Arrow'; -const $09f4ad68a9251bc3$export$21b07c8f274aebd5 = /*#__PURE__*/$eQpDd$react.forwardRef((props, forwardedRef) => { - const { - children: children, - width = 10, - height = 5, - ...arrowProps - } = props; - return /*#__PURE__*/$eQpDd$react.createElement($eQpDd$radixuireactprimitive.Primitive.svg, $parcel$interopDefault($eQpDd$babelruntimehelpersextends)({}, arrowProps, { - ref: forwardedRef, - width: width, - height: height, - viewBox: "0 0 30 10", - preserveAspectRatio: "none" - }), props.asChild ? children : /*#__PURE__*/$eQpDd$react.createElement("polygon", { - points: "0,0 30,0 15,10" - })); -}); -/*#__PURE__*/ -Object.assign($09f4ad68a9251bc3$export$21b07c8f274aebd5, { - displayName: $09f4ad68a9251bc3$var$NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -const $09f4ad68a9251bc3$export$be92b6f5f03c0fe9 = $09f4ad68a9251bc3$export$21b07c8f274aebd5; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-collection/dist/index.js": -/*!**********************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-collection/dist/index.js ***! - \**********************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $hnlpS$react = __webpack_require__(/*! react */ "react"); -var $hnlpS$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); -var $hnlpS$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $hnlpS$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "createCollection", () => $1a96635ec239608b$export$c74125a8e3af6bb2); - -// We have resorted to returning slots directly rather than exposing primitives that can then -// be slotted like ``. -// This is because we encountered issues with generic types that cannot be statically analysed -// due to creating them dynamically via createCollection. -function $1a96635ec239608b$export$c74125a8e3af6bb2(name) { - /* ----------------------------------------------------------------------------------------------- - * CollectionProvider - * ---------------------------------------------------------------------------------------------*/ - const PROVIDER_NAME = name + 'CollectionProvider'; - const [createCollectionContext, createCollectionScope] = $hnlpS$radixuireactcontext.createContextScope(PROVIDER_NAME); - const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, { - collectionRef: { - current: null - }, - itemMap: new Map() - }); - const CollectionProvider = props => { - const { - scope: scope, - children: children - } = props; - const ref = $parcel$interopDefault($hnlpS$react).useRef(null); - const itemMap = $parcel$interopDefault($hnlpS$react).useRef(new Map()).current; - return /*#__PURE__*/$parcel$interopDefault($hnlpS$react).createElement(CollectionProviderImpl, { - scope: scope, - itemMap: itemMap, - collectionRef: ref - }, children); - }; - /*#__PURE__*/ - Object.assign(CollectionProvider, { - displayName: PROVIDER_NAME - }); - /* ----------------------------------------------------------------------------------------------- - * CollectionSlot - * ---------------------------------------------------------------------------------------------*/ - const COLLECTION_SLOT_NAME = name + 'CollectionSlot'; - const CollectionSlot = /*#__PURE__*/$parcel$interopDefault($hnlpS$react).forwardRef((props, forwardedRef) => { - const { - scope: scope, - children: children - } = props; - const context = useCollectionContext(COLLECTION_SLOT_NAME, scope); - const composedRefs = $hnlpS$radixuireactcomposerefs.useComposedRefs(forwardedRef, context.collectionRef); - return /*#__PURE__*/$parcel$interopDefault($hnlpS$react).createElement($hnlpS$radixuireactslot.Slot, { - ref: composedRefs - }, children); - }); - /*#__PURE__*/ - Object.assign(CollectionSlot, { - displayName: COLLECTION_SLOT_NAME - }); - /* ----------------------------------------------------------------------------------------------- - * CollectionItem - * ---------------------------------------------------------------------------------------------*/ - const ITEM_SLOT_NAME = name + 'CollectionItemSlot'; - const ITEM_DATA_ATTR = 'data-radix-collection-item'; - const CollectionItemSlot = /*#__PURE__*/$parcel$interopDefault($hnlpS$react).forwardRef((props, forwardedRef) => { - const { - scope: scope, - children: children, - ...itemData - } = props; - const ref = $parcel$interopDefault($hnlpS$react).useRef(null); - const composedRefs = $hnlpS$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); - const context = useCollectionContext(ITEM_SLOT_NAME, scope); - $parcel$interopDefault($hnlpS$react).useEffect(() => { - context.itemMap.set(ref, { - ref: ref, - ...itemData - }); - return () => void context.itemMap.delete(ref); - }); - return /*#__PURE__*/$parcel$interopDefault($hnlpS$react).createElement($hnlpS$radixuireactslot.Slot, { - [ITEM_DATA_ATTR]: '', - ref: composedRefs - }, children); - }); - /*#__PURE__*/ - Object.assign(CollectionItemSlot, { - displayName: ITEM_SLOT_NAME - }); - /* ----------------------------------------------------------------------------------------------- - * useCollection - * ---------------------------------------------------------------------------------------------*/ - function useCollection(scope) { - const context = useCollectionContext(name + 'CollectionConsumer', scope); - const getItems = $parcel$interopDefault($hnlpS$react).useCallback(() => { - const collectionNode = context.collectionRef.current; - if (!collectionNode) return []; - const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`)); - const items = Array.from(context.itemMap.values()); - const orderedItems = items.sort((a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)); - return orderedItems; - }, [context.collectionRef, context.itemMap]); - return getItems; - } - return [{ - Provider: CollectionProvider, - Slot: CollectionSlot, - ItemSlot: CollectionItemSlot - }, useCollection, createCollectionScope]; -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js": -/*!************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-compose-refs/dist/index.js ***! - \************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $dJwbH$react = __webpack_require__(/*! react */ "react"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "composeRefs", () => $9c2aaba23466b352$export$43e446d32b3d21af); -$parcel$export(module.exports, "useComposedRefs", () => $9c2aaba23466b352$export$c7b2cbe3552a0d05); - -/** - * Set a given ref to a given value - * This utility takes care of different types of refs: callback refs and RefObject(s) - */ -function $9c2aaba23466b352$var$setRef(ref, value) { - if (typeof ref === 'function') ref(value);else if (ref !== null && ref !== undefined) ref.current = value; -} -/** - * A utility to compose multiple refs together - * Accepts callback refs and RefObject(s) - */ -function $9c2aaba23466b352$export$43e446d32b3d21af() { - for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) { - refs[_key] = arguments[_key]; - } - return node => refs.forEach(ref => $9c2aaba23466b352$var$setRef(ref, node)); -} -/** - * A custom hook that composes multiple refs - * Accepts callback refs and RefObject(s) - */ -function $9c2aaba23466b352$export$c7b2cbe3552a0d05() { - for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - refs[_key2] = arguments[_key2]; - } - // eslint-disable-next-line react-hooks/exhaustive-deps - return $dJwbH$react.useCallback($9c2aaba23466b352$export$43e446d32b3d21af(...refs), refs); -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-context/dist/index.js": -/*!*******************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-context/dist/index.js ***! - \*******************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $4O1Ne$react = __webpack_require__(/*! react */ "react"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "createContext", () => $dec3cc0142d4f286$export$fd42f52fd3ae1109); -$parcel$export(module.exports, "createContextScope", () => $dec3cc0142d4f286$export$50c7b4e9d9f19c1); -function $dec3cc0142d4f286$export$fd42f52fd3ae1109(rootComponentName, defaultContext) { - const Context = /*#__PURE__*/$4O1Ne$react.createContext(defaultContext); - function Provider(props) { - const { - children: children, - ...context - } = props; // Only re-memoize when prop values change - // eslint-disable-next-line react-hooks/exhaustive-deps - const value = $4O1Ne$react.useMemo(() => context, Object.values(context)); - return /*#__PURE__*/$4O1Ne$react.createElement(Context.Provider, { - value: value - }, children); - } - function useContext(consumerName) { - const context = $4O1Ne$react.useContext(Context); - if (context) return context; - if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context. - throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``); - } - Provider.displayName = rootComponentName + 'Provider'; - return [Provider, useContext]; -} -/* ------------------------------------------------------------------------------------------------- - * createContextScope - * -----------------------------------------------------------------------------------------------*/ -function $dec3cc0142d4f286$export$50c7b4e9d9f19c1(scopeName) { - let createContextScopeDeps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - let defaultContexts = []; - /* ----------------------------------------------------------------------------------------------- - * createContext - * ---------------------------------------------------------------------------------------------*/ - function $dec3cc0142d4f286$export$fd42f52fd3ae1109(rootComponentName, defaultContext) { - const BaseContext = /*#__PURE__*/$4O1Ne$react.createContext(defaultContext); - const index = defaultContexts.length; - defaultContexts = [...defaultContexts, defaultContext]; - function Provider(props) { - const { - scope: scope, - children: children, - ...context - } = props; - const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext; // Only re-memoize when prop values change - // eslint-disable-next-line react-hooks/exhaustive-deps - const value = $4O1Ne$react.useMemo(() => context, Object.values(context)); - return /*#__PURE__*/$4O1Ne$react.createElement(Context.Provider, { - value: value - }, children); - } - function useContext(consumerName, scope) { - const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext; - const context = $4O1Ne$react.useContext(Context); - if (context) return context; - if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context. - throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``); - } - Provider.displayName = rootComponentName + 'Provider'; - return [Provider, useContext]; - } - /* ----------------------------------------------------------------------------------------------- - * createScope - * ---------------------------------------------------------------------------------------------*/ - const createScope = () => { - const scopeContexts = defaultContexts.map(defaultContext => { - return /*#__PURE__*/$4O1Ne$react.createContext(defaultContext); - }); - return function useScope(scope) { - const contexts = (scope === null || scope === void 0 ? void 0 : scope[scopeName]) || scopeContexts; - return $4O1Ne$react.useMemo(() => ({ - [`__scope${scopeName}`]: { - ...scope, - [scopeName]: contexts - } - }), [scope, contexts]); - }; - }; - createScope.scopeName = scopeName; - return [$dec3cc0142d4f286$export$fd42f52fd3ae1109, $dec3cc0142d4f286$var$composeContextScopes(createScope, ...createContextScopeDeps)]; -} -/* ------------------------------------------------------------------------------------------------- - * composeContextScopes - * -----------------------------------------------------------------------------------------------*/ -function $dec3cc0142d4f286$var$composeContextScopes() { - for (var _len = arguments.length, scopes = new Array(_len), _key = 0; _key < _len; _key++) { - scopes[_key] = arguments[_key]; - } - const baseScope = scopes[0]; - if (scopes.length === 1) return baseScope; - const createScope1 = () => { - const scopeHooks = scopes.map(createScope => ({ - useScope: createScope(), - scopeName: createScope.scopeName - })); - return function useComposedScopes(overrideScopes) { - const nextScopes1 = scopeHooks.reduce((nextScopes, _ref) => { - let { - useScope: useScope, - scopeName: scopeName - } = _ref; - // We are calling a hook inside a callback which React warns against to avoid inconsistent - // renders, however, scoping doesn't have render side effects so we ignore the rule. - // eslint-disable-next-line react-hooks/rules-of-hooks - const scopeProps = useScope(overrideScopes); - const currentScope = scopeProps[`__scope${scopeName}`]; - return { - ...nextScopes, - ...currentScope - }; - }, {}); - return $4O1Ne$react.useMemo(() => ({ - [`__scope${baseScope.scopeName}`]: nextScopes1 - }), [nextScopes1]); - }; - }; - createScope1.scopeName = baseScope.scopeName; - return createScope1; -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-dialog/dist/index.js": -/*!******************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-dialog/dist/index.js ***! - \******************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $aJCrN$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $aJCrN$react = __webpack_require__(/*! react */ "react"); -var $aJCrN$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); -var $aJCrN$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $aJCrN$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); -var $aJCrN$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); -var $aJCrN$radixuireactusecontrollablestate = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js"); -var $aJCrN$radixuireactdismissablelayer = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js"); -var $aJCrN$radixuireactfocusscope = __webpack_require__(/*! @radix-ui/react-focus-scope */ "../../../node_modules/@radix-ui/react-focus-scope/dist/index.js"); -var $aJCrN$radixuireactportal = __webpack_require__(/*! @radix-ui/react-portal */ "../../../node_modules/@radix-ui/react-portal/dist/index.js"); -var $aJCrN$radixuireactpresence = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.js"); -var $aJCrN$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -var $aJCrN$radixuireactfocusguards = __webpack_require__(/*! @radix-ui/react-focus-guards */ "../../../node_modules/@radix-ui/react-focus-guards/dist/index.js"); -var $aJCrN$reactremovescroll = __webpack_require__(/*! react-remove-scroll */ "../../../node_modules/react-remove-scroll/dist/es2015/index.js"); -var $aJCrN$ariahidden = __webpack_require__(/*! aria-hidden */ "../../../node_modules/aria-hidden/dist/es2015/index.js"); -var $aJCrN$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "createDialogScope", () => $f4833395aa1bca1a$export$cc702773b8ea3e41); -$parcel$export(module.exports, "Dialog", () => $f4833395aa1bca1a$export$3ddf2d174ce01153); -$parcel$export(module.exports, "DialogTrigger", () => $f4833395aa1bca1a$export$2e1e1122cf0cba88); -$parcel$export(module.exports, "DialogPortal", () => $f4833395aa1bca1a$export$dad7c95542bacce0); -$parcel$export(module.exports, "DialogOverlay", () => $f4833395aa1bca1a$export$bd1d06c79be19e17); -$parcel$export(module.exports, "DialogContent", () => $f4833395aa1bca1a$export$b6d9565de1e068cf); -$parcel$export(module.exports, "DialogTitle", () => $f4833395aa1bca1a$export$16f7638e4a34b909); -$parcel$export(module.exports, "DialogDescription", () => $f4833395aa1bca1a$export$94e94c2ec2c954d5); -$parcel$export(module.exports, "DialogClose", () => $f4833395aa1bca1a$export$fba2fb7cd781b7ac); -$parcel$export(module.exports, "Root", () => $f4833395aa1bca1a$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "Trigger", () => $f4833395aa1bca1a$export$41fb9f06171c75f4); -$parcel$export(module.exports, "Portal", () => $f4833395aa1bca1a$export$602eac185826482c); -$parcel$export(module.exports, "Overlay", () => $f4833395aa1bca1a$export$c6fdb837b070b4ff); -$parcel$export(module.exports, "Content", () => $f4833395aa1bca1a$export$7c6e2c02157bb7d2); -$parcel$export(module.exports, "Title", () => $f4833395aa1bca1a$export$f99233281efd08a0); -$parcel$export(module.exports, "Description", () => $f4833395aa1bca1a$export$393edc798c47379d); -$parcel$export(module.exports, "Close", () => $f4833395aa1bca1a$export$f39c2d165cd861fe); -$parcel$export(module.exports, "WarningProvider", () => $f4833395aa1bca1a$export$69b62a49393917d6); - -/* ------------------------------------------------------------------------------------------------- - * Dialog - * -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$DIALOG_NAME = 'Dialog'; -const [$f4833395aa1bca1a$var$createDialogContext, $f4833395aa1bca1a$export$cc702773b8ea3e41] = $aJCrN$radixuireactcontext.createContextScope($f4833395aa1bca1a$var$DIALOG_NAME); -const [$f4833395aa1bca1a$var$DialogProvider, $f4833395aa1bca1a$var$useDialogContext] = $f4833395aa1bca1a$var$createDialogContext($f4833395aa1bca1a$var$DIALOG_NAME); -const $f4833395aa1bca1a$export$3ddf2d174ce01153 = props => { - const { - __scopeDialog: __scopeDialog, - children: children, - open: openProp, - defaultOpen: defaultOpen, - onOpenChange: onOpenChange, - modal = true - } = props; - const triggerRef = $aJCrN$react.useRef(null); - const contentRef = $aJCrN$react.useRef(null); - const [open = false, setOpen] = $aJCrN$radixuireactusecontrollablestate.useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChange - }); - return /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogProvider, { - scope: __scopeDialog, - triggerRef: triggerRef, - contentRef: contentRef, - contentId: $aJCrN$radixuireactid.useId(), - titleId: $aJCrN$radixuireactid.useId(), - descriptionId: $aJCrN$radixuireactid.useId(), - open: open, - onOpenChange: setOpen, - onOpenToggle: $aJCrN$react.useCallback(() => setOpen(prevOpen => !prevOpen), [setOpen]), - modal: modal - }, children); -}; -/*#__PURE__*/ -Object.assign($f4833395aa1bca1a$export$3ddf2d174ce01153, { - displayName: $f4833395aa1bca1a$var$DIALOG_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DialogTrigger - * -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$TRIGGER_NAME = 'DialogTrigger'; -const $f4833395aa1bca1a$export$2e1e1122cf0cba88 = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const { - __scopeDialog: __scopeDialog, - ...triggerProps - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$TRIGGER_NAME, __scopeDialog); - const composedTriggerRef = $aJCrN$radixuireactcomposerefs.useComposedRefs(forwardedRef, context.triggerRef); - return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.button, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ - type: "button", - "aria-haspopup": "dialog", - "aria-expanded": context.open, - "aria-controls": context.contentId, - "data-state": $f4833395aa1bca1a$var$getState(context.open) - }, triggerProps, { - ref: composedTriggerRef, - onClick: $aJCrN$radixuiprimitive.composeEventHandlers(props.onClick, context.onOpenToggle) - })); -}); -/*#__PURE__*/ -Object.assign($f4833395aa1bca1a$export$2e1e1122cf0cba88, { - displayName: $f4833395aa1bca1a$var$TRIGGER_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DialogPortal - * -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$PORTAL_NAME = 'DialogPortal'; -const [$f4833395aa1bca1a$var$PortalProvider, $f4833395aa1bca1a$var$usePortalContext] = $f4833395aa1bca1a$var$createDialogContext($f4833395aa1bca1a$var$PORTAL_NAME, { - forceMount: undefined -}); -const $f4833395aa1bca1a$export$dad7c95542bacce0 = props => { - const { - __scopeDialog: __scopeDialog, - forceMount: forceMount, - children: children, - container: container - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$PORTAL_NAME, __scopeDialog); - return /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$PortalProvider, { - scope: __scopeDialog, - forceMount: forceMount - }, $aJCrN$react.Children.map(children, child => /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactpresence.Presence, { - present: forceMount || context.open - }, /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactportal.Portal, { - asChild: true, - container: container - }, child)))); -}; -/*#__PURE__*/ -Object.assign($f4833395aa1bca1a$export$dad7c95542bacce0, { - displayName: $f4833395aa1bca1a$var$PORTAL_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DialogOverlay - * -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$OVERLAY_NAME = 'DialogOverlay'; -const $f4833395aa1bca1a$export$bd1d06c79be19e17 = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const portalContext = $f4833395aa1bca1a$var$usePortalContext($f4833395aa1bca1a$var$OVERLAY_NAME, props.__scopeDialog); - const { - forceMount = portalContext.forceMount, - ...overlayProps - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$OVERLAY_NAME, props.__scopeDialog); - return context.modal ? /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactpresence.Presence, { - present: forceMount || context.open - }, /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogOverlayImpl, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, overlayProps, { - ref: forwardedRef - }))) : null; -}); -/*#__PURE__*/ -Object.assign($f4833395aa1bca1a$export$bd1d06c79be19e17, { - displayName: $f4833395aa1bca1a$var$OVERLAY_NAME -}); -const $f4833395aa1bca1a$var$DialogOverlayImpl = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const { - __scopeDialog: __scopeDialog, - ...overlayProps - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$OVERLAY_NAME, __scopeDialog); - return /*#__PURE__*/ (// Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll` - // ie. when `Overlay` and `Content` are siblings - $aJCrN$react.createElement($aJCrN$reactremovescroll.RemoveScroll, { - as: $aJCrN$radixuireactslot.Slot, - allowPinchZoom: true, - shards: [context.contentRef] - }, /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.div, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ - "data-state": $f4833395aa1bca1a$var$getState(context.open) - }, overlayProps, { - ref: forwardedRef // We re-enable pointer-events prevented by `Dialog.Content` to allow scrolling the overlay. - , - - style: { - pointerEvents: 'auto', - ...overlayProps.style - } - }))) - ); -}); -/* ------------------------------------------------------------------------------------------------- - * DialogContent - * -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$CONTENT_NAME = 'DialogContent'; -const $f4833395aa1bca1a$export$b6d9565de1e068cf = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const portalContext = $f4833395aa1bca1a$var$usePortalContext($f4833395aa1bca1a$var$CONTENT_NAME, props.__scopeDialog); - const { - forceMount = portalContext.forceMount, - ...contentProps - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CONTENT_NAME, props.__scopeDialog); - return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactpresence.Presence, { - present: forceMount || context.open - }, context.modal ? /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogContentModal, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, contentProps, { - ref: forwardedRef - })) : /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogContentNonModal, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, contentProps, { - ref: forwardedRef - }))); -}); -/*#__PURE__*/ -Object.assign($f4833395aa1bca1a$export$b6d9565de1e068cf, { - displayName: $f4833395aa1bca1a$var$CONTENT_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$DialogContentModal = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CONTENT_NAME, props.__scopeDialog); - const contentRef = $aJCrN$react.useRef(null); - const composedRefs = $aJCrN$radixuireactcomposerefs.useComposedRefs(forwardedRef, context.contentRef, contentRef); // aria-hide everything except the content (better supported equivalent to setting aria-modal) - $aJCrN$react.useEffect(() => { - const content = contentRef.current; - if (content) return $aJCrN$ariahidden.hideOthers(content); - }, []); - return /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogContentImpl, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, props, { - ref: composedRefs // we make sure focus isn't trapped once `DialogContent` has been closed - , - - trapFocus: context.open, - disableOutsidePointerEvents: true, - onCloseAutoFocus: $aJCrN$radixuiprimitive.composeEventHandlers(props.onCloseAutoFocus, event => { - var _context$triggerRef$c; - event.preventDefault(); - (_context$triggerRef$c = context.triggerRef.current) === null || _context$triggerRef$c === void 0 || _context$triggerRef$c.focus(); - }), - onPointerDownOutside: $aJCrN$radixuiprimitive.composeEventHandlers(props.onPointerDownOutside, event => { - const originalEvent = event.detail.originalEvent; - const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true; - const isRightClick = originalEvent.button === 2 || ctrlLeftClick; // If the event is a right-click, we shouldn't close because - // it is effectively as if we right-clicked the `Overlay`. - if (isRightClick) event.preventDefault(); - }) // When focus is trapped, a `focusout` event may still happen. - , - - onFocusOutside: $aJCrN$radixuiprimitive.composeEventHandlers(props.onFocusOutside, event => event.preventDefault()) - })); -}); -/* -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$DialogContentNonModal = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CONTENT_NAME, props.__scopeDialog); - const hasInteractedOutsideRef = $aJCrN$react.useRef(false); - const hasPointerDownOutsideRef = $aJCrN$react.useRef(false); - return /*#__PURE__*/$aJCrN$react.createElement($f4833395aa1bca1a$var$DialogContentImpl, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({}, props, { - ref: forwardedRef, - trapFocus: false, - disableOutsidePointerEvents: false, - onCloseAutoFocus: event => { - var _props$onCloseAutoFoc; - (_props$onCloseAutoFoc = props.onCloseAutoFocus) === null || _props$onCloseAutoFoc === void 0 || _props$onCloseAutoFoc.call(props, event); - if (!event.defaultPrevented) { - var _context$triggerRef$c2; - if (!hasInteractedOutsideRef.current) (_context$triggerRef$c2 = context.triggerRef.current) === null || _context$triggerRef$c2 === void 0 || _context$triggerRef$c2.focus(); // Always prevent auto focus because we either focus manually or want user agent focus - event.preventDefault(); - } - hasInteractedOutsideRef.current = false; - hasPointerDownOutsideRef.current = false; - }, - onInteractOutside: event => { - var _props$onInteractOuts, _context$triggerRef$c3; - (_props$onInteractOuts = props.onInteractOutside) === null || _props$onInteractOuts === void 0 || _props$onInteractOuts.call(props, event); - if (!event.defaultPrevented) { - hasInteractedOutsideRef.current = true; - if (event.detail.originalEvent.type === 'pointerdown') hasPointerDownOutsideRef.current = true; - } // Prevent dismissing when clicking the trigger. - // As the trigger is already setup to close, without doing so would - // cause it to close and immediately open. - const target = event.target; - const targetIsTrigger = (_context$triggerRef$c3 = context.triggerRef.current) === null || _context$triggerRef$c3 === void 0 ? void 0 : _context$triggerRef$c3.contains(target); - if (targetIsTrigger) event.preventDefault(); // On Safari if the trigger is inside a container with tabIndex={0}, when clicked - // we will get the pointer down outside event on the trigger, but then a subsequent - // focus outside event on the container, we ignore any focus outside event when we've - // already had a pointer down outside event. - if (event.detail.originalEvent.type === 'focusin' && hasPointerDownOutsideRef.current) event.preventDefault(); - } - })); -}); -/* -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$DialogContentImpl = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const { - __scopeDialog: __scopeDialog, - trapFocus: trapFocus, - onOpenAutoFocus: onOpenAutoFocus, - onCloseAutoFocus: onCloseAutoFocus, - ...contentProps - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CONTENT_NAME, __scopeDialog); - const contentRef = $aJCrN$react.useRef(null); - const composedRefs = $aJCrN$radixuireactcomposerefs.useComposedRefs(forwardedRef, contentRef); // Make sure the whole tree has focus guards as our `Dialog` will be - // the last element in the DOM (beacuse of the `Portal`) - $aJCrN$radixuireactfocusguards.useFocusGuards(); - return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$react.Fragment, null, /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactfocusscope.FocusScope, { - asChild: true, - loop: true, - trapped: trapFocus, - onMountAutoFocus: onOpenAutoFocus, - onUnmountAutoFocus: onCloseAutoFocus - }, /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactdismissablelayer.DismissableLayer, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ - role: "dialog", - id: context.contentId, - "aria-describedby": context.descriptionId, - "aria-labelledby": context.titleId, - "data-state": $f4833395aa1bca1a$var$getState(context.open) - }, contentProps, { - ref: composedRefs, - onDismiss: () => context.onOpenChange(false) - }))), false); -}); -/* ------------------------------------------------------------------------------------------------- - * DialogTitle - * -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$TITLE_NAME = 'DialogTitle'; -const $f4833395aa1bca1a$export$16f7638e4a34b909 = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const { - __scopeDialog: __scopeDialog, - ...titleProps - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$TITLE_NAME, __scopeDialog); - return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.h2, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ - id: context.titleId - }, titleProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($f4833395aa1bca1a$export$16f7638e4a34b909, { - displayName: $f4833395aa1bca1a$var$TITLE_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DialogDescription - * -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$DESCRIPTION_NAME = 'DialogDescription'; -const $f4833395aa1bca1a$export$94e94c2ec2c954d5 = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const { - __scopeDialog: __scopeDialog, - ...descriptionProps - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$DESCRIPTION_NAME, __scopeDialog); - return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.p, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ - id: context.descriptionId - }, descriptionProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($f4833395aa1bca1a$export$94e94c2ec2c954d5, { - displayName: $f4833395aa1bca1a$var$DESCRIPTION_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DialogClose - * -----------------------------------------------------------------------------------------------*/ -const $f4833395aa1bca1a$var$CLOSE_NAME = 'DialogClose'; -const $f4833395aa1bca1a$export$fba2fb7cd781b7ac = /*#__PURE__*/$aJCrN$react.forwardRef((props, forwardedRef) => { - const { - __scopeDialog: __scopeDialog, - ...closeProps - } = props; - const context = $f4833395aa1bca1a$var$useDialogContext($f4833395aa1bca1a$var$CLOSE_NAME, __scopeDialog); - return /*#__PURE__*/$aJCrN$react.createElement($aJCrN$radixuireactprimitive.Primitive.button, $parcel$interopDefault($aJCrN$babelruntimehelpersextends)({ - type: "button" - }, closeProps, { - ref: forwardedRef, - onClick: $aJCrN$radixuiprimitive.composeEventHandlers(props.onClick, () => context.onOpenChange(false)) - })); -}); -/*#__PURE__*/ -Object.assign($f4833395aa1bca1a$export$fba2fb7cd781b7ac, { - displayName: $f4833395aa1bca1a$var$CLOSE_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -function $f4833395aa1bca1a$var$getState(open) { - return open ? 'open' : 'closed'; -} -const $f4833395aa1bca1a$var$TITLE_WARNING_NAME = 'DialogTitleWarning'; -const [$f4833395aa1bca1a$export$69b62a49393917d6, $f4833395aa1bca1a$var$useWarningContext] = $aJCrN$radixuireactcontext.createContext($f4833395aa1bca1a$var$TITLE_WARNING_NAME, { - contentName: $f4833395aa1bca1a$var$CONTENT_NAME, - titleName: $f4833395aa1bca1a$var$TITLE_NAME, - docsSlug: 'dialog' -}); -const $f4833395aa1bca1a$var$TitleWarning = _ref => { - let { - titleId: titleId - } = _ref; - const titleWarningContext = $f4833395aa1bca1a$var$useWarningContext($f4833395aa1bca1a$var$TITLE_WARNING_NAME); - const MESSAGE = `\`${titleWarningContext.contentName}\` requires a \`${titleWarningContext.titleName}\` for the component to be accessible for screen reader users. - -If you want to hide the \`${titleWarningContext.titleName}\`, you can wrap it with our VisuallyHidden component. - -For more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`; - $aJCrN$react.useEffect(() => { - if (titleId) { - const hasTitle = document.getElementById(titleId); - if (!hasTitle) throw new Error(MESSAGE); - } - }, [MESSAGE, titleId]); - return null; -}; -const $f4833395aa1bca1a$var$DESCRIPTION_WARNING_NAME = 'DialogDescriptionWarning'; -const $f4833395aa1bca1a$var$DescriptionWarning = _ref2 => { - let { - contentRef: contentRef, - descriptionId: descriptionId - } = _ref2; - const descriptionWarningContext = $f4833395aa1bca1a$var$useWarningContext($f4833395aa1bca1a$var$DESCRIPTION_WARNING_NAME); - const MESSAGE = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${descriptionWarningContext.contentName}}.`; - $aJCrN$react.useEffect(() => { - var _contentRef$current; - const describedById = (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.getAttribute('aria-describedby'); // if we have an id and the user hasn't set aria-describedby={undefined} - if (descriptionId && describedById) { - const hasDescription = document.getElementById(descriptionId); - if (!hasDescription) console.warn(MESSAGE); - } - }, [MESSAGE, contentRef, descriptionId]); - return null; -}; -const $f4833395aa1bca1a$export$be92b6f5f03c0fe9 = $f4833395aa1bca1a$export$3ddf2d174ce01153; -const $f4833395aa1bca1a$export$41fb9f06171c75f4 = $f4833395aa1bca1a$export$2e1e1122cf0cba88; -const $f4833395aa1bca1a$export$602eac185826482c = $f4833395aa1bca1a$export$dad7c95542bacce0; -const $f4833395aa1bca1a$export$c6fdb837b070b4ff = $f4833395aa1bca1a$export$bd1d06c79be19e17; -const $f4833395aa1bca1a$export$7c6e2c02157bb7d2 = $f4833395aa1bca1a$export$b6d9565de1e068cf; -const $f4833395aa1bca1a$export$f99233281efd08a0 = $f4833395aa1bca1a$export$16f7638e4a34b909; -const $f4833395aa1bca1a$export$393edc798c47379d = $f4833395aa1bca1a$export$94e94c2ec2c954d5; -const $f4833395aa1bca1a$export$f39c2d165cd861fe = $f4833395aa1bca1a$export$fba2fb7cd781b7ac; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-direction/dist/index.js": -/*!*********************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-direction/dist/index.js ***! - \*********************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $9g4ps$react = __webpack_require__(/*! react */ "react"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "useDirection", () => $cc45c1b701a63adc$export$b39126d51d94e6f3); -$parcel$export(module.exports, "Provider", () => $cc45c1b701a63adc$export$2881499e37b75b9a); -$parcel$export(module.exports, "DirectionProvider", () => $cc45c1b701a63adc$export$c760c09fdd558351); -const $cc45c1b701a63adc$var$DirectionContext = /*#__PURE__*/$9g4ps$react.createContext(undefined); -/* ------------------------------------------------------------------------------------------------- - * Direction - * -----------------------------------------------------------------------------------------------*/ -const $cc45c1b701a63adc$export$c760c09fdd558351 = props => { - const { - dir: dir, - children: children - } = props; - return /*#__PURE__*/$9g4ps$react.createElement($cc45c1b701a63adc$var$DirectionContext.Provider, { - value: dir - }, children); -}; -/* -----------------------------------------------------------------------------------------------*/ -function $cc45c1b701a63adc$export$b39126d51d94e6f3(localDir) { - const globalDir = $9g4ps$react.useContext($cc45c1b701a63adc$var$DirectionContext); - return localDir || globalDir || 'ltr'; -} -const $cc45c1b701a63adc$export$2881499e37b75b9a = $cc45c1b701a63adc$export$c760c09fdd558351; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js ***! - \*****************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $g2vWm$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $g2vWm$react = __webpack_require__(/*! react */ "react"); -var $g2vWm$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); -var $g2vWm$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -var $g2vWm$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $g2vWm$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); -var $g2vWm$radixuireactuseescapekeydown = __webpack_require__(/*! @radix-ui/react-use-escape-keydown */ "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "DismissableLayer", () => $d715e0554b679f1f$export$177fb62ff3ec1f22); -$parcel$export(module.exports, "DismissableLayerBranch", () => $d715e0554b679f1f$export$4d5eb2109db14228); -$parcel$export(module.exports, "Root", () => $d715e0554b679f1f$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "Branch", () => $d715e0554b679f1f$export$aecb2ddcb55c95be); - -/* ------------------------------------------------------------------------------------------------- - * DismissableLayer - * -----------------------------------------------------------------------------------------------*/ -const $d715e0554b679f1f$var$DISMISSABLE_LAYER_NAME = 'DismissableLayer'; -const $d715e0554b679f1f$var$CONTEXT_UPDATE = 'dismissableLayer.update'; -const $d715e0554b679f1f$var$POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside'; -const $d715e0554b679f1f$var$FOCUS_OUTSIDE = 'dismissableLayer.focusOutside'; -let $d715e0554b679f1f$var$originalBodyPointerEvents; -const $d715e0554b679f1f$var$DismissableLayerContext = /*#__PURE__*/$g2vWm$react.createContext({ - layers: new Set(), - layersWithOutsidePointerEventsDisabled: new Set(), - branches: new Set() -}); -const $d715e0554b679f1f$export$177fb62ff3ec1f22 = /*#__PURE__*/$g2vWm$react.forwardRef((props, forwardedRef) => { - var _node$ownerDocument; - const { - disableOutsidePointerEvents = false, - onEscapeKeyDown: onEscapeKeyDown, - onPointerDownOutside: onPointerDownOutside, - onFocusOutside: onFocusOutside, - onInteractOutside: onInteractOutside, - onDismiss: onDismiss, - ...layerProps - } = props; - const context = $g2vWm$react.useContext($d715e0554b679f1f$var$DismissableLayerContext); - const [node1, setNode] = $g2vWm$react.useState(null); - const ownerDocument = (_node$ownerDocument = node1 === null || node1 === void 0 ? void 0 : node1.ownerDocument) !== null && _node$ownerDocument !== void 0 ? _node$ownerDocument : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document; - const [, force] = $g2vWm$react.useState({}); - const composedRefs = $g2vWm$radixuireactcomposerefs.useComposedRefs(forwardedRef, node => setNode(node)); - const layers = Array.from(context.layers); - const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore - const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled); // prettier-ignore - const index = node1 ? layers.indexOf(node1) : -1; - const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0; - const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex; - const pointerDownOutside = $d715e0554b679f1f$var$usePointerDownOutside(event => { - const target = event.target; - const isPointerDownOnBranch = [...context.branches].some(branch => branch.contains(target)); - if (!isPointerEventsEnabled || isPointerDownOnBranch) return; - onPointerDownOutside === null || onPointerDownOutside === void 0 || onPointerDownOutside(event); - onInteractOutside === null || onInteractOutside === void 0 || onInteractOutside(event); - if (!event.defaultPrevented) onDismiss === null || onDismiss === void 0 || onDismiss(); - }, ownerDocument); - const focusOutside = $d715e0554b679f1f$var$useFocusOutside(event => { - const target = event.target; - const isFocusInBranch = [...context.branches].some(branch => branch.contains(target)); - if (isFocusInBranch) return; - onFocusOutside === null || onFocusOutside === void 0 || onFocusOutside(event); - onInteractOutside === null || onInteractOutside === void 0 || onInteractOutside(event); - if (!event.defaultPrevented) onDismiss === null || onDismiss === void 0 || onDismiss(); - }, ownerDocument); - $g2vWm$radixuireactuseescapekeydown.useEscapeKeydown(event => { - const isHighestLayer = index === context.layers.size - 1; - if (!isHighestLayer) return; - onEscapeKeyDown === null || onEscapeKeyDown === void 0 || onEscapeKeyDown(event); - if (!event.defaultPrevented && onDismiss) { - event.preventDefault(); - onDismiss(); - } - }, ownerDocument); - $g2vWm$react.useEffect(() => { - if (!node1) return; - if (disableOutsidePointerEvents) { - if (context.layersWithOutsidePointerEventsDisabled.size === 0) { - $d715e0554b679f1f$var$originalBodyPointerEvents = ownerDocument.body.style.pointerEvents; - ownerDocument.body.style.pointerEvents = 'none'; - } - context.layersWithOutsidePointerEventsDisabled.add(node1); - } - context.layers.add(node1); - $d715e0554b679f1f$var$dispatchUpdate(); - return () => { - if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) ownerDocument.body.style.pointerEvents = $d715e0554b679f1f$var$originalBodyPointerEvents; - }; - }, [node1, ownerDocument, disableOutsidePointerEvents, context]); - /** - * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect - * because a change to `disableOutsidePointerEvents` would remove this layer from the stack - * and add it to the end again so the layering order wouldn't be _creation order_. - * We only want them to be removed from context stacks when unmounted. - */ - $g2vWm$react.useEffect(() => { - return () => { - if (!node1) return; - context.layers.delete(node1); - context.layersWithOutsidePointerEventsDisabled.delete(node1); - $d715e0554b679f1f$var$dispatchUpdate(); - }; - }, [node1, context]); - $g2vWm$react.useEffect(() => { - const handleUpdate = () => force({}); - document.addEventListener($d715e0554b679f1f$var$CONTEXT_UPDATE, handleUpdate); - return () => document.removeEventListener($d715e0554b679f1f$var$CONTEXT_UPDATE, handleUpdate); - }, []); - return /*#__PURE__*/$g2vWm$react.createElement($g2vWm$radixuireactprimitive.Primitive.div, $parcel$interopDefault($g2vWm$babelruntimehelpersextends)({}, layerProps, { - ref: composedRefs, - style: { - pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? 'auto' : 'none' : undefined, - ...props.style - }, - onFocusCapture: $g2vWm$radixuiprimitive.composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture), - onBlurCapture: $g2vWm$radixuiprimitive.composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture), - onPointerDownCapture: $g2vWm$radixuiprimitive.composeEventHandlers(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture) - })); -}); -/*#__PURE__*/ -Object.assign($d715e0554b679f1f$export$177fb62ff3ec1f22, { - displayName: $d715e0554b679f1f$var$DISMISSABLE_LAYER_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DismissableLayerBranch - * -----------------------------------------------------------------------------------------------*/ -const $d715e0554b679f1f$var$BRANCH_NAME = 'DismissableLayerBranch'; -const $d715e0554b679f1f$export$4d5eb2109db14228 = /*#__PURE__*/$g2vWm$react.forwardRef((props, forwardedRef) => { - const context = $g2vWm$react.useContext($d715e0554b679f1f$var$DismissableLayerContext); - const ref = $g2vWm$react.useRef(null); - const composedRefs = $g2vWm$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); - $g2vWm$react.useEffect(() => { - const node = ref.current; - if (node) { - context.branches.add(node); - return () => { - context.branches.delete(node); - }; - } - }, [context.branches]); - return /*#__PURE__*/$g2vWm$react.createElement($g2vWm$radixuireactprimitive.Primitive.div, $parcel$interopDefault($g2vWm$babelruntimehelpersextends)({}, props, { - ref: composedRefs - })); -}); -/*#__PURE__*/ -Object.assign($d715e0554b679f1f$export$4d5eb2109db14228, { - displayName: $d715e0554b679f1f$var$BRANCH_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ /** - * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup` - * to mimic layer dismissing behaviour present in OS. - * Returns props to pass to the node we want to check for outside events. - */ -function $d715e0554b679f1f$var$usePointerDownOutside(onPointerDownOutside) { - let ownerDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document; - const handlePointerDownOutside = $g2vWm$radixuireactusecallbackref.useCallbackRef(onPointerDownOutside); - const isPointerInsideReactTreeRef = $g2vWm$react.useRef(false); - const handleClickRef = $g2vWm$react.useRef(() => {}); - $g2vWm$react.useEffect(() => { - const handlePointerDown = event => { - if (event.target && !isPointerInsideReactTreeRef.current) { - const eventDetail = { - originalEvent: event - }; - function handleAndDispatchPointerDownOutsideEvent() { - $d715e0554b679f1f$var$handleAndDispatchCustomEvent($d715e0554b679f1f$var$POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, { - discrete: true - }); - } - /** - * On touch devices, we need to wait for a click event because browsers implement - * a ~350ms delay between the time the user stops touching the display and when the - * browser executres events. We need to ensure we don't reactivate pointer-events within - * this timeframe otherwise the browser may execute events that should have been prevented. - * - * Additionally, this also lets us deal automatically with cancellations when a click event - * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc. - * - * This is why we also continuously remove the previous listener, because we cannot be - * certain that it was raised, and therefore cleaned-up. - */ - if (event.pointerType === 'touch') { - ownerDocument.removeEventListener('click', handleClickRef.current); - handleClickRef.current = handleAndDispatchPointerDownOutsideEvent; - ownerDocument.addEventListener('click', handleClickRef.current, { - once: true - }); - } else handleAndDispatchPointerDownOutsideEvent(); - } - isPointerInsideReactTreeRef.current = false; - }; - /** - * if this hook executes in a component that mounts via a `pointerdown` event, the event - * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid - * this by delaying the event listener registration on the document. - * This is not React specific, but rather how the DOM works, ie: - * ``` - * button.addEventListener('pointerdown', () => { - * console.log('I will log'); - * document.addEventListener('pointerdown', () => { - * console.log('I will also log'); - * }) - * }); - */ - const timerId = window.setTimeout(() => { - ownerDocument.addEventListener('pointerdown', handlePointerDown); - }, 0); - return () => { - window.clearTimeout(timerId); - ownerDocument.removeEventListener('pointerdown', handlePointerDown); - ownerDocument.removeEventListener('click', handleClickRef.current); - }; - }, [ownerDocument, handlePointerDownOutside]); - return { - // ensures we check React component tree (not just DOM tree) - onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true - }; -} -/** - * Listens for when focus happens outside a react subtree. - * Returns props to pass to the root (node) of the subtree we want to check. - */ -function $d715e0554b679f1f$var$useFocusOutside(onFocusOutside) { - let ownerDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document; - const handleFocusOutside = $g2vWm$radixuireactusecallbackref.useCallbackRef(onFocusOutside); - const isFocusInsideReactTreeRef = $g2vWm$react.useRef(false); - $g2vWm$react.useEffect(() => { - const handleFocus = event => { - if (event.target && !isFocusInsideReactTreeRef.current) { - const eventDetail = { - originalEvent: event - }; - $d715e0554b679f1f$var$handleAndDispatchCustomEvent($d715e0554b679f1f$var$FOCUS_OUTSIDE, handleFocusOutside, eventDetail, { - discrete: false - }); - } - }; - ownerDocument.addEventListener('focusin', handleFocus); - return () => ownerDocument.removeEventListener('focusin', handleFocus); - }, [ownerDocument, handleFocusOutside]); - return { - onFocusCapture: () => isFocusInsideReactTreeRef.current = true, - onBlurCapture: () => isFocusInsideReactTreeRef.current = false - }; -} -function $d715e0554b679f1f$var$dispatchUpdate() { - const event = new CustomEvent($d715e0554b679f1f$var$CONTEXT_UPDATE); - document.dispatchEvent(event); -} -function $d715e0554b679f1f$var$handleAndDispatchCustomEvent(name, handler, detail, _ref) { - let { - discrete: discrete - } = _ref; - const target = detail.originalEvent.target; - const event = new CustomEvent(name, { - bubbles: false, - cancelable: true, - detail: detail - }); - if (handler) target.addEventListener(name, handler, { - once: true - }); - if (discrete) $g2vWm$radixuireactprimitive.dispatchDiscreteCustomEvent(target, event);else target.dispatchEvent(event); -} -const $d715e0554b679f1f$export$be92b6f5f03c0fe9 = $d715e0554b679f1f$export$177fb62ff3ec1f22; -const $d715e0554b679f1f$export$aecb2ddcb55c95be = $d715e0554b679f1f$export$4d5eb2109db14228; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-dropdown-menu/dist/index.js": -/*!*************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-dropdown-menu/dist/index.js ***! - \*************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $7dQ7Q$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $7dQ7Q$react = __webpack_require__(/*! react */ "react"); -var $7dQ7Q$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); -var $7dQ7Q$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $7dQ7Q$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); -var $7dQ7Q$radixuireactusecontrollablestate = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js"); -var $7dQ7Q$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -var $7dQ7Q$radixuireactmenu = __webpack_require__(/*! @radix-ui/react-menu */ "../../../node_modules/@radix-ui/react-menu/dist/index.js"); -var $7dQ7Q$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "createDropdownMenuScope", () => $d1bf075a6b218014$export$c0623cd925aeb687); -$parcel$export(module.exports, "DropdownMenu", () => $d1bf075a6b218014$export$e44a253a59704894); -$parcel$export(module.exports, "DropdownMenuTrigger", () => $d1bf075a6b218014$export$d2469213b3befba9); -$parcel$export(module.exports, "DropdownMenuPortal", () => $d1bf075a6b218014$export$cd369b4d4d54efc9); -$parcel$export(module.exports, "DropdownMenuContent", () => $d1bf075a6b218014$export$6e76d93a37c01248); -$parcel$export(module.exports, "DropdownMenuGroup", () => $d1bf075a6b218014$export$246bebaba3a2f70e); -$parcel$export(module.exports, "DropdownMenuLabel", () => $d1bf075a6b218014$export$76e48c5b57f24495); -$parcel$export(module.exports, "DropdownMenuItem", () => $d1bf075a6b218014$export$ed97964d1871885d); -$parcel$export(module.exports, "DropdownMenuCheckboxItem", () => $d1bf075a6b218014$export$53a69729da201fa9); -$parcel$export(module.exports, "DropdownMenuRadioGroup", () => $d1bf075a6b218014$export$3323ad73d55f587e); -$parcel$export(module.exports, "DropdownMenuRadioItem", () => $d1bf075a6b218014$export$e4f69b41b1637536); -$parcel$export(module.exports, "DropdownMenuItemIndicator", () => $d1bf075a6b218014$export$42355ae145153fb6); -$parcel$export(module.exports, "DropdownMenuSeparator", () => $d1bf075a6b218014$export$da160178fd3bc7e9); -$parcel$export(module.exports, "DropdownMenuArrow", () => $d1bf075a6b218014$export$34b8980744021ec5); -$parcel$export(module.exports, "DropdownMenuSub", () => $d1bf075a6b218014$export$2f307d81a64f5442); -$parcel$export(module.exports, "DropdownMenuSubTrigger", () => $d1bf075a6b218014$export$21dcb7ec56f874cf); -$parcel$export(module.exports, "DropdownMenuSubContent", () => $d1bf075a6b218014$export$f34ec8bc2482cc5f); -$parcel$export(module.exports, "Root", () => $d1bf075a6b218014$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "Trigger", () => $d1bf075a6b218014$export$41fb9f06171c75f4); -$parcel$export(module.exports, "Portal", () => $d1bf075a6b218014$export$602eac185826482c); -$parcel$export(module.exports, "Content", () => $d1bf075a6b218014$export$7c6e2c02157bb7d2); -$parcel$export(module.exports, "Group", () => $d1bf075a6b218014$export$eb2fcfdbd7ba97d4); -$parcel$export(module.exports, "Label", () => $d1bf075a6b218014$export$b04be29aa201d4f5); -$parcel$export(module.exports, "Item", () => $d1bf075a6b218014$export$6d08773d2e66f8f2); -$parcel$export(module.exports, "CheckboxItem", () => $d1bf075a6b218014$export$16ce288f89fa631c); -$parcel$export(module.exports, "RadioGroup", () => $d1bf075a6b218014$export$a98f0dcb43a68a25); -$parcel$export(module.exports, "RadioItem", () => $d1bf075a6b218014$export$371ab307eab489c0); -$parcel$export(module.exports, "ItemIndicator", () => $d1bf075a6b218014$export$c3468e2714d175fa); -$parcel$export(module.exports, "Separator", () => $d1bf075a6b218014$export$1ff3c3f08ae963c0); -$parcel$export(module.exports, "Arrow", () => $d1bf075a6b218014$export$21b07c8f274aebd5); -$parcel$export(module.exports, "Sub", () => $d1bf075a6b218014$export$d7a01e11500dfb6f); -$parcel$export(module.exports, "SubTrigger", () => $d1bf075a6b218014$export$2ea8a7a591ac5eac); -$parcel$export(module.exports, "SubContent", () => $d1bf075a6b218014$export$6d4de93b380beddf); - -/* ------------------------------------------------------------------------------------------------- - * DropdownMenu - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$DROPDOWN_MENU_NAME = 'DropdownMenu'; -const [$d1bf075a6b218014$var$createDropdownMenuContext, $d1bf075a6b218014$export$c0623cd925aeb687] = $7dQ7Q$radixuireactcontext.createContextScope($d1bf075a6b218014$var$DROPDOWN_MENU_NAME, [$7dQ7Q$radixuireactmenu.createMenuScope]); -const $d1bf075a6b218014$var$useMenuScope = $7dQ7Q$radixuireactmenu.createMenuScope(); -const [$d1bf075a6b218014$var$DropdownMenuProvider, $d1bf075a6b218014$var$useDropdownMenuContext] = $d1bf075a6b218014$var$createDropdownMenuContext($d1bf075a6b218014$var$DROPDOWN_MENU_NAME); -const $d1bf075a6b218014$export$e44a253a59704894 = props => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - children: children, - dir: dir, - open: openProp, - defaultOpen: defaultOpen, - onOpenChange: onOpenChange, - modal = true - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - const triggerRef = $7dQ7Q$react.useRef(null); - const [open = false, setOpen] = $7dQ7Q$radixuireactusecontrollablestate.useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChange - }); - return /*#__PURE__*/$7dQ7Q$react.createElement($d1bf075a6b218014$var$DropdownMenuProvider, { - scope: __scopeDropdownMenu, - triggerId: $7dQ7Q$radixuireactid.useId(), - triggerRef: triggerRef, - contentId: $7dQ7Q$radixuireactid.useId(), - open: open, - onOpenChange: setOpen, - onOpenToggle: $7dQ7Q$react.useCallback(() => setOpen(prevOpen => !prevOpen), [setOpen]), - modal: modal - }, /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Root, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, { - open: open, - onOpenChange: setOpen, - dir: dir, - modal: modal - }), children)); -}; -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$e44a253a59704894, { - displayName: $d1bf075a6b218014$var$DROPDOWN_MENU_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuTrigger - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$TRIGGER_NAME = 'DropdownMenuTrigger'; -const $d1bf075a6b218014$export$d2469213b3befba9 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - disabled = false, - ...triggerProps - } = props; - const context = $d1bf075a6b218014$var$useDropdownMenuContext($d1bf075a6b218014$var$TRIGGER_NAME, __scopeDropdownMenu); - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Anchor, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({ - asChild: true - }, menuScope), /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactprimitive.Primitive.button, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({ - type: "button", - id: context.triggerId, - "aria-haspopup": "menu", - "aria-expanded": context.open, - "aria-controls": context.open ? context.contentId : undefined, - "data-state": context.open ? 'open' : 'closed', - "data-disabled": disabled ? '' : undefined, - disabled: disabled - }, triggerProps, { - ref: $7dQ7Q$radixuireactcomposerefs.composeRefs(forwardedRef, context.triggerRef), - onPointerDown: $7dQ7Q$radixuiprimitive.composeEventHandlers(props.onPointerDown, event => { - // only call handler if it's the left button (mousedown gets triggered by all mouse buttons) - // but not when the control key is pressed (avoiding MacOS right click) - if (!disabled && event.button === 0 && event.ctrlKey === false) { - context.onOpenToggle(); // prevent trigger focusing when opening - // this allows the content to be given focus without competition - if (!context.open) event.preventDefault(); - } - }), - onKeyDown: $7dQ7Q$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { - if (disabled) return; - if (['Enter', ' '].includes(event.key)) context.onOpenToggle(); - if (event.key === 'ArrowDown') context.onOpenChange(true); // prevent keydown from scrolling window / first focused item to execute - // that keydown (inadvertently closing the menu) - if (['Enter', ' ', 'ArrowDown'].includes(event.key)) event.preventDefault(); - }) - }))); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$d2469213b3befba9, { - displayName: $d1bf075a6b218014$var$TRIGGER_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuPortal - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$PORTAL_NAME = 'DropdownMenuPortal'; -const $d1bf075a6b218014$export$cd369b4d4d54efc9 = props => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...portalProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Portal, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, portalProps)); -}; -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$cd369b4d4d54efc9, { - displayName: $d1bf075a6b218014$var$PORTAL_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuContent - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$CONTENT_NAME = 'DropdownMenuContent'; -const $d1bf075a6b218014$export$6e76d93a37c01248 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...contentProps - } = props; - const context = $d1bf075a6b218014$var$useDropdownMenuContext($d1bf075a6b218014$var$CONTENT_NAME, __scopeDropdownMenu); - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - const hasInteractedOutsideRef = $7dQ7Q$react.useRef(false); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Content, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({ - id: context.contentId, - "aria-labelledby": context.triggerId - }, menuScope, contentProps, { - ref: forwardedRef, - onCloseAutoFocus: $7dQ7Q$radixuiprimitive.composeEventHandlers(props.onCloseAutoFocus, event => { - var _context$triggerRef$c; - if (!hasInteractedOutsideRef.current) (_context$triggerRef$c = context.triggerRef.current) === null || _context$triggerRef$c === void 0 || _context$triggerRef$c.focus(); - hasInteractedOutsideRef.current = false; // Always prevent auto focus because we either focus manually or want user agent focus - event.preventDefault(); - }), - onInteractOutside: $7dQ7Q$radixuiprimitive.composeEventHandlers(props.onInteractOutside, event => { - const originalEvent = event.detail.originalEvent; - const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true; - const isRightClick = originalEvent.button === 2 || ctrlLeftClick; - if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true; - }), - style: { - ...props.style, - '--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)', - '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)', - '--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)', - '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)', - '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)' - } - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$6e76d93a37c01248, { - displayName: $d1bf075a6b218014$var$CONTENT_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuGroup - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$GROUP_NAME = 'DropdownMenuGroup'; -const $d1bf075a6b218014$export$246bebaba3a2f70e = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...groupProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Group, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, groupProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$246bebaba3a2f70e, { - displayName: $d1bf075a6b218014$var$GROUP_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuLabel - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$LABEL_NAME = 'DropdownMenuLabel'; -const $d1bf075a6b218014$export$76e48c5b57f24495 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...labelProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Label, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, labelProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$76e48c5b57f24495, { - displayName: $d1bf075a6b218014$var$LABEL_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuItem - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$ITEM_NAME = 'DropdownMenuItem'; -const $d1bf075a6b218014$export$ed97964d1871885d = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...itemProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Item, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, itemProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$ed97964d1871885d, { - displayName: $d1bf075a6b218014$var$ITEM_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuCheckboxItem - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$CHECKBOX_ITEM_NAME = 'DropdownMenuCheckboxItem'; -const $d1bf075a6b218014$export$53a69729da201fa9 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...checkboxItemProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.CheckboxItem, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, checkboxItemProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$53a69729da201fa9, { - displayName: $d1bf075a6b218014$var$CHECKBOX_ITEM_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuRadioGroup - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$RADIO_GROUP_NAME = 'DropdownMenuRadioGroup'; -const $d1bf075a6b218014$export$3323ad73d55f587e = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...radioGroupProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.RadioGroup, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, radioGroupProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$3323ad73d55f587e, { - displayName: $d1bf075a6b218014$var$RADIO_GROUP_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuRadioItem - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$RADIO_ITEM_NAME = 'DropdownMenuRadioItem'; -const $d1bf075a6b218014$export$e4f69b41b1637536 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...radioItemProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.RadioItem, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, radioItemProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$e4f69b41b1637536, { - displayName: $d1bf075a6b218014$var$RADIO_ITEM_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuItemIndicator - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$INDICATOR_NAME = 'DropdownMenuItemIndicator'; -const $d1bf075a6b218014$export$42355ae145153fb6 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...itemIndicatorProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.ItemIndicator, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, itemIndicatorProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$42355ae145153fb6, { - displayName: $d1bf075a6b218014$var$INDICATOR_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuSeparator - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$SEPARATOR_NAME = 'DropdownMenuSeparator'; -const $d1bf075a6b218014$export$da160178fd3bc7e9 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...separatorProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Separator, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, separatorProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$da160178fd3bc7e9, { - displayName: $d1bf075a6b218014$var$SEPARATOR_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuArrow - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$ARROW_NAME = 'DropdownMenuArrow'; -const $d1bf075a6b218014$export$34b8980744021ec5 = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...arrowProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Arrow, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, arrowProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$34b8980744021ec5, { - displayName: $d1bf075a6b218014$var$ARROW_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuSub - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$export$2f307d81a64f5442 = props => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - children: children, - open: openProp, - onOpenChange: onOpenChange, - defaultOpen: defaultOpen - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - const [open = false, setOpen] = $7dQ7Q$radixuireactusecontrollablestate.useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChange - }); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.Sub, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, { - open: open, - onOpenChange: setOpen - }), children); -}; -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuSubTrigger - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$SUB_TRIGGER_NAME = 'DropdownMenuSubTrigger'; -const $d1bf075a6b218014$export$21dcb7ec56f874cf = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...subTriggerProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.SubTrigger, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, subTriggerProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$21dcb7ec56f874cf, { - displayName: $d1bf075a6b218014$var$SUB_TRIGGER_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * DropdownMenuSubContent - * -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$var$SUB_CONTENT_NAME = 'DropdownMenuSubContent'; -const $d1bf075a6b218014$export$f34ec8bc2482cc5f = /*#__PURE__*/$7dQ7Q$react.forwardRef((props, forwardedRef) => { - const { - __scopeDropdownMenu: __scopeDropdownMenu, - ...subContentProps - } = props; - const menuScope = $d1bf075a6b218014$var$useMenuScope(__scopeDropdownMenu); - return /*#__PURE__*/$7dQ7Q$react.createElement($7dQ7Q$radixuireactmenu.SubContent, $parcel$interopDefault($7dQ7Q$babelruntimehelpersextends)({}, menuScope, subContentProps, { - ref: forwardedRef, - style: { - ...props.style, - '--radix-dropdown-menu-content-transform-origin': 'var(--radix-popper-transform-origin)', - '--radix-dropdown-menu-content-available-width': 'var(--radix-popper-available-width)', - '--radix-dropdown-menu-content-available-height': 'var(--radix-popper-available-height)', - '--radix-dropdown-menu-trigger-width': 'var(--radix-popper-anchor-width)', - '--radix-dropdown-menu-trigger-height': 'var(--radix-popper-anchor-height)' - } - })); -}); -/*#__PURE__*/ -Object.assign($d1bf075a6b218014$export$f34ec8bc2482cc5f, { - displayName: $d1bf075a6b218014$var$SUB_CONTENT_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -const $d1bf075a6b218014$export$be92b6f5f03c0fe9 = $d1bf075a6b218014$export$e44a253a59704894; -const $d1bf075a6b218014$export$41fb9f06171c75f4 = $d1bf075a6b218014$export$d2469213b3befba9; -const $d1bf075a6b218014$export$602eac185826482c = $d1bf075a6b218014$export$cd369b4d4d54efc9; -const $d1bf075a6b218014$export$7c6e2c02157bb7d2 = $d1bf075a6b218014$export$6e76d93a37c01248; -const $d1bf075a6b218014$export$eb2fcfdbd7ba97d4 = $d1bf075a6b218014$export$246bebaba3a2f70e; -const $d1bf075a6b218014$export$b04be29aa201d4f5 = $d1bf075a6b218014$export$76e48c5b57f24495; -const $d1bf075a6b218014$export$6d08773d2e66f8f2 = $d1bf075a6b218014$export$ed97964d1871885d; -const $d1bf075a6b218014$export$16ce288f89fa631c = $d1bf075a6b218014$export$53a69729da201fa9; -const $d1bf075a6b218014$export$a98f0dcb43a68a25 = $d1bf075a6b218014$export$3323ad73d55f587e; -const $d1bf075a6b218014$export$371ab307eab489c0 = $d1bf075a6b218014$export$e4f69b41b1637536; -const $d1bf075a6b218014$export$c3468e2714d175fa = $d1bf075a6b218014$export$42355ae145153fb6; -const $d1bf075a6b218014$export$1ff3c3f08ae963c0 = $d1bf075a6b218014$export$da160178fd3bc7e9; -const $d1bf075a6b218014$export$21b07c8f274aebd5 = $d1bf075a6b218014$export$34b8980744021ec5; -const $d1bf075a6b218014$export$d7a01e11500dfb6f = $d1bf075a6b218014$export$2f307d81a64f5442; -const $d1bf075a6b218014$export$2ea8a7a591ac5eac = $d1bf075a6b218014$export$21dcb7ec56f874cf; -const $d1bf075a6b218014$export$6d4de93b380beddf = $d1bf075a6b218014$export$f34ec8bc2482cc5f; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-focus-guards/dist/index.js": -/*!************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-focus-guards/dist/index.js ***! - \************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $cnctE$react = __webpack_require__(/*! react */ "react"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "FocusGuards", () => $71476a6ed7dbbaf3$export$ac5b58043b79449b); -$parcel$export(module.exports, "Root", () => $71476a6ed7dbbaf3$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "useFocusGuards", () => $71476a6ed7dbbaf3$export$b7ece24a22aeda8c); - -/** Number of components which have requested interest to have focus guards */ -let $71476a6ed7dbbaf3$var$count = 0; -function $71476a6ed7dbbaf3$export$ac5b58043b79449b(props) { - $71476a6ed7dbbaf3$export$b7ece24a22aeda8c(); - return props.children; -} -/** - * Injects a pair of focus guards at the edges of the whole DOM tree - * to ensure `focusin` & `focusout` events can be caught consistently. - */ -function $71476a6ed7dbbaf3$export$b7ece24a22aeda8c() { - $cnctE$react.useEffect(() => { - var _edgeGuards$, _edgeGuards$2; - const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]'); - document.body.insertAdjacentElement('afterbegin', (_edgeGuards$ = edgeGuards[0]) !== null && _edgeGuards$ !== void 0 ? _edgeGuards$ : $71476a6ed7dbbaf3$var$createFocusGuard()); - document.body.insertAdjacentElement('beforeend', (_edgeGuards$2 = edgeGuards[1]) !== null && _edgeGuards$2 !== void 0 ? _edgeGuards$2 : $71476a6ed7dbbaf3$var$createFocusGuard()); - $71476a6ed7dbbaf3$var$count++; - return () => { - if ($71476a6ed7dbbaf3$var$count === 1) document.querySelectorAll('[data-radix-focus-guard]').forEach(node => node.remove()); - $71476a6ed7dbbaf3$var$count--; - }; - }, []); -} -function $71476a6ed7dbbaf3$var$createFocusGuard() { - const element = document.createElement('span'); - element.setAttribute('data-radix-focus-guard', ''); - element.tabIndex = 0; - element.style.cssText = 'outline: none; opacity: 0; position: fixed; pointer-events: none'; - return element; -} -const $71476a6ed7dbbaf3$export$be92b6f5f03c0fe9 = $71476a6ed7dbbaf3$export$ac5b58043b79449b; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-focus-scope/dist/index.js": -/*!***********************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-focus-scope/dist/index.js ***! - \***********************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $buum9$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $buum9$react = __webpack_require__(/*! react */ "react"); -var $buum9$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $buum9$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -var $buum9$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "FocusScope", () => $2bc01e66e04aa9ed$export$20e40289641fbbb6); -$parcel$export(module.exports, "Root", () => $2bc01e66e04aa9ed$export$be92b6f5f03c0fe9); -const $2bc01e66e04aa9ed$var$AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount'; -const $2bc01e66e04aa9ed$var$AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount'; -const $2bc01e66e04aa9ed$var$EVENT_OPTIONS = { - bubbles: false, - cancelable: true -}; -/* ------------------------------------------------------------------------------------------------- - * FocusScope - * -----------------------------------------------------------------------------------------------*/ -const $2bc01e66e04aa9ed$var$FOCUS_SCOPE_NAME = 'FocusScope'; -const $2bc01e66e04aa9ed$export$20e40289641fbbb6 = /*#__PURE__*/$buum9$react.forwardRef((props, forwardedRef) => { - const { - loop = false, - trapped = false, - onMountAutoFocus: onMountAutoFocusProp, - onUnmountAutoFocus: onUnmountAutoFocusProp, - ...scopeProps - } = props; - const [container1, setContainer] = $buum9$react.useState(null); - const onMountAutoFocus = $buum9$radixuireactusecallbackref.useCallbackRef(onMountAutoFocusProp); - const onUnmountAutoFocus = $buum9$radixuireactusecallbackref.useCallbackRef(onUnmountAutoFocusProp); - const lastFocusedElementRef = $buum9$react.useRef(null); - const composedRefs = $buum9$radixuireactcomposerefs.useComposedRefs(forwardedRef, node => setContainer(node)); - const focusScope = $buum9$react.useRef({ - paused: false, - pause() { - this.paused = true; - }, - resume() { - this.paused = false; - } - }).current; // Takes care of trapping focus if focus is moved outside programmatically for example - $buum9$react.useEffect(() => { - if (trapped) { - function handleFocusIn(event) { - if (focusScope.paused || !container1) return; - const target = event.target; - if (container1.contains(target)) lastFocusedElementRef.current = target;else $2bc01e66e04aa9ed$var$focus(lastFocusedElementRef.current, { - select: true - }); - } - function handleFocusOut(event) { - if (focusScope.paused || !container1) return; - const relatedTarget = event.relatedTarget; // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases: - // - // 1. When the user switches app/tabs/windows/the browser itself loses focus. - // 2. In Google Chrome, when the focused element is removed from the DOM. - // - // We let the browser do its thing here because: - // - // 1. The browser already keeps a memory of what's focused for when the page gets refocused. - // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it - // throws the CPU to 100%, so we avoid doing anything for this reason here too. - if (relatedTarget === null) return; // If the focus has moved to an actual legitimate element (`relatedTarget !== null`) - // that is outside the container, we move focus to the last valid focused element inside. - if (!container1.contains(relatedTarget)) $2bc01e66e04aa9ed$var$focus(lastFocusedElementRef.current, { - select: true - }); - } // When the focused element gets removed from the DOM, browsers move focus - // back to the document.body. In this case, we move focus to the container - // to keep focus trapped correctly. - function handleMutations(mutations) { - const focusedElement = document.activeElement; - for (const mutation of mutations) { - if (mutation.removedNodes.length > 0) { - if (!(container1 !== null && container1 !== void 0 && container1.contains(focusedElement))) $2bc01e66e04aa9ed$var$focus(container1); - } - } - } - document.addEventListener('focusin', handleFocusIn); - document.addEventListener('focusout', handleFocusOut); - const mutationObserver = new MutationObserver(handleMutations); - if (container1) mutationObserver.observe(container1, { - childList: true, - subtree: true - }); - return () => { - document.removeEventListener('focusin', handleFocusIn); - document.removeEventListener('focusout', handleFocusOut); - mutationObserver.disconnect(); - }; - } - }, [trapped, container1, focusScope.paused]); - $buum9$react.useEffect(() => { - if (container1) { - $2bc01e66e04aa9ed$var$focusScopesStack.add(focusScope); - const previouslyFocusedElement = document.activeElement; - const hasFocusedCandidate = container1.contains(previouslyFocusedElement); - if (!hasFocusedCandidate) { - const mountEvent = new CustomEvent($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_MOUNT, $2bc01e66e04aa9ed$var$EVENT_OPTIONS); - container1.addEventListener($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_MOUNT, onMountAutoFocus); - container1.dispatchEvent(mountEvent); - if (!mountEvent.defaultPrevented) { - $2bc01e66e04aa9ed$var$focusFirst($2bc01e66e04aa9ed$var$removeLinks($2bc01e66e04aa9ed$var$getTabbableCandidates(container1)), { - select: true - }); - if (document.activeElement === previouslyFocusedElement) $2bc01e66e04aa9ed$var$focus(container1); - } - } - return () => { - container1.removeEventListener($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_MOUNT, onMountAutoFocus); // We hit a react bug (fixed in v17) with focusing in unmount. - // We need to delay the focus a little to get around it for now. - // See: https://github.com/facebook/react/issues/17894 - setTimeout(() => { - const unmountEvent = new CustomEvent($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_UNMOUNT, $2bc01e66e04aa9ed$var$EVENT_OPTIONS); - container1.addEventListener($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus); - container1.dispatchEvent(unmountEvent); - if (!unmountEvent.defaultPrevented) $2bc01e66e04aa9ed$var$focus(previouslyFocusedElement !== null && previouslyFocusedElement !== void 0 ? previouslyFocusedElement : document.body, { - select: true - }); - // we need to remove the listener after we `dispatchEvent` - container1.removeEventListener($2bc01e66e04aa9ed$var$AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus); - $2bc01e66e04aa9ed$var$focusScopesStack.remove(focusScope); - }, 0); - }; - } - }, [container1, onMountAutoFocus, onUnmountAutoFocus, focusScope]); // Takes care of looping focus (when tabbing whilst at the edges) - const handleKeyDown = $buum9$react.useCallback(event => { - if (!loop && !trapped) return; - if (focusScope.paused) return; - const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey; - const focusedElement = document.activeElement; - if (isTabKey && focusedElement) { - const container = event.currentTarget; - const [first, last] = $2bc01e66e04aa9ed$var$getTabbableEdges(container); - const hasTabbableElementsInside = first && last; // we can only wrap focus if we have tabbable edges - if (!hasTabbableElementsInside) { - if (focusedElement === container) event.preventDefault(); - } else { - if (!event.shiftKey && focusedElement === last) { - event.preventDefault(); - if (loop) $2bc01e66e04aa9ed$var$focus(first, { - select: true - }); - } else if (event.shiftKey && focusedElement === first) { - event.preventDefault(); - if (loop) $2bc01e66e04aa9ed$var$focus(last, { - select: true - }); - } - } - } - }, [loop, trapped, focusScope.paused]); - return /*#__PURE__*/$buum9$react.createElement($buum9$radixuireactprimitive.Primitive.div, $parcel$interopDefault($buum9$babelruntimehelpersextends)({ - tabIndex: -1 - }, scopeProps, { - ref: composedRefs, - onKeyDown: handleKeyDown - })); -}); -/*#__PURE__*/ -Object.assign($2bc01e66e04aa9ed$export$20e40289641fbbb6, { - displayName: $2bc01e66e04aa9ed$var$FOCUS_SCOPE_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * Utils - * -----------------------------------------------------------------------------------------------*/ /** - * Attempts focusing the first element in a list of candidates. - * Stops when focus has actually moved. - */ -function $2bc01e66e04aa9ed$var$focusFirst(candidates) { - let { - select = false - } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - const previouslyFocusedElement = document.activeElement; - for (const candidate of candidates) { - $2bc01e66e04aa9ed$var$focus(candidate, { - select: select - }); - if (document.activeElement !== previouslyFocusedElement) return; - } -} -/** - * Returns the first and last tabbable elements inside a container. - */ -function $2bc01e66e04aa9ed$var$getTabbableEdges(container) { - const candidates = $2bc01e66e04aa9ed$var$getTabbableCandidates(container); - const first = $2bc01e66e04aa9ed$var$findVisible(candidates, container); - const last = $2bc01e66e04aa9ed$var$findVisible(candidates.reverse(), container); - return [first, last]; -} -/** - * Returns a list of potential tabbable candidates. - * - * NOTE: This is only a close approximation. For example it doesn't take into account cases like when - * elements are not visible. This cannot be worked out easily by just reading a property, but rather - * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately. - * - * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker - * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1 - */ -function $2bc01e66e04aa9ed$var$getTabbableCandidates(container) { - const nodes = []; - const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, { - acceptNode: node => { - const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden'; - if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP; // `.tabIndex` is not the same as the `tabindex` attribute. It works on the - // runtime's understanding of tabbability, so this automatically accounts - // for any kind of element that could be tabbed to. - return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; - } - }); - while (walker.nextNode()) nodes.push(walker.currentNode); // we do not take into account the order of nodes with positive `tabIndex` as it - // hinders accessibility to have tab order different from visual order. - return nodes; -} -/** - * Returns the first visible element in a list. - * NOTE: Only checks visibility up to the `container`. - */ -function $2bc01e66e04aa9ed$var$findVisible(elements, container) { - for (const element of elements) { - // we stop checking if it's hidden at the `container` level (excluding) - if (!$2bc01e66e04aa9ed$var$isHidden(element, { - upTo: container - })) return element; - } -} -function $2bc01e66e04aa9ed$var$isHidden(node, _ref) { - let { - upTo: upTo - } = _ref; - if (getComputedStyle(node).visibility === 'hidden') return true; - while (node) { - // we stop at `upTo` (excluding it) - if (upTo !== undefined && node === upTo) return false; - if (getComputedStyle(node).display === 'none') return true; - node = node.parentElement; - } - return false; -} -function $2bc01e66e04aa9ed$var$isSelectableInput(element) { - return element instanceof HTMLInputElement && 'select' in element; -} -function $2bc01e66e04aa9ed$var$focus(element) { - let { - select = false - } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - // only focus if that element is focusable - if (element && element.focus) { - const previouslyFocusedElement = document.activeElement; // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users - element.focus({ - preventScroll: true - }); // only select if its not the same element, it supports selection and we need to select - if (element !== previouslyFocusedElement && $2bc01e66e04aa9ed$var$isSelectableInput(element) && select) element.select(); - } -} -/* ------------------------------------------------------------------------------------------------- - * FocusScope stack - * -----------------------------------------------------------------------------------------------*/ -const $2bc01e66e04aa9ed$var$focusScopesStack = $2bc01e66e04aa9ed$var$createFocusScopesStack(); -function $2bc01e66e04aa9ed$var$createFocusScopesStack() { - /** A stack of focus scopes, with the active one at the top */let stack = []; - return { - add(focusScope) { - // pause the currently active focus scope (at the top of the stack) - const activeFocusScope = stack[0]; - if (focusScope !== activeFocusScope) activeFocusScope === null || activeFocusScope === void 0 || activeFocusScope.pause(); - // remove in case it already exists (because we'll re-add it at the top of the stack) - stack = $2bc01e66e04aa9ed$var$arrayRemove(stack, focusScope); - stack.unshift(focusScope); - }, - remove(focusScope) { - var _stack$; - stack = $2bc01e66e04aa9ed$var$arrayRemove(stack, focusScope); - (_stack$ = stack[0]) === null || _stack$ === void 0 || _stack$.resume(); - } - }; -} -function $2bc01e66e04aa9ed$var$arrayRemove(array, item) { - const updatedArray = [...array]; - const index = updatedArray.indexOf(item); - if (index !== -1) updatedArray.splice(index, 1); - return updatedArray; -} -function $2bc01e66e04aa9ed$var$removeLinks(items) { - return items.filter(item => item.tagName !== 'A'); -} -const $2bc01e66e04aa9ed$export$be92b6f5f03c0fe9 = $2bc01e66e04aa9ed$export$20e40289641fbbb6; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-id/dist/index.js": -/*!**************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-id/dist/index.js ***! - \**************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $47woD$react = __webpack_require__(/*! react */ "react"); -var $47woD$radixuireactuselayouteffect = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "useId", () => $dc478e4659f630c5$export$f680877a34711e37); -const $dc478e4659f630c5$var$useReactId = $47woD$react['useId'.toString()] || (() => undefined); -let $dc478e4659f630c5$var$count = 0; -function $dc478e4659f630c5$export$f680877a34711e37(deterministicId) { - const [id, setId] = $47woD$react.useState($dc478e4659f630c5$var$useReactId()); // React versions older than 18 will have client-side ids only. - $47woD$radixuireactuselayouteffect.useLayoutEffect(() => { - if (!deterministicId) setId(reactId => reactId !== null && reactId !== void 0 ? reactId : String($dc478e4659f630c5$var$count++)); - }, [deterministicId]); - return deterministicId || (id ? `radix-${id}` : ''); -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-menu/dist/index.js": -/*!****************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-menu/dist/index.js ***! - \****************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $cnSS2$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $cnSS2$react = __webpack_require__(/*! react */ "react"); -var $cnSS2$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); -var $cnSS2$radixuireactcollection = __webpack_require__(/*! @radix-ui/react-collection */ "../../../node_modules/@radix-ui/react-collection/dist/index.js"); -var $cnSS2$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $cnSS2$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); -var $cnSS2$radixuireactdirection = __webpack_require__(/*! @radix-ui/react-direction */ "../../../node_modules/@radix-ui/react-direction/dist/index.js"); -var $cnSS2$radixuireactdismissablelayer = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js"); -var $cnSS2$radixuireactfocusguards = __webpack_require__(/*! @radix-ui/react-focus-guards */ "../../../node_modules/@radix-ui/react-focus-guards/dist/index.js"); -var $cnSS2$radixuireactfocusscope = __webpack_require__(/*! @radix-ui/react-focus-scope */ "../../../node_modules/@radix-ui/react-focus-scope/dist/index.js"); -var $cnSS2$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); -var $cnSS2$radixuireactpopper = __webpack_require__(/*! @radix-ui/react-popper */ "../../../node_modules/@radix-ui/react-popper/dist/index.js"); -var $cnSS2$radixuireactportal = __webpack_require__(/*! @radix-ui/react-portal */ "../../../node_modules/@radix-ui/react-portal/dist/index.js"); -var $cnSS2$radixuireactpresence = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.js"); -var $cnSS2$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -var $cnSS2$radixuireactrovingfocus = __webpack_require__(/*! @radix-ui/react-roving-focus */ "../../../node_modules/@radix-ui/react-roving-focus/dist/index.js"); -var $cnSS2$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); -var $cnSS2$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); -var $cnSS2$ariahidden = __webpack_require__(/*! aria-hidden */ "../../../node_modules/aria-hidden/dist/es2015/index.js"); -var $cnSS2$reactremovescroll = __webpack_require__(/*! react-remove-scroll */ "../../../node_modules/react-remove-scroll/dist/es2015/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "createMenuScope", () => $213e4d2df823067d$export$4027731b685e72eb); -$parcel$export(module.exports, "Menu", () => $213e4d2df823067d$export$d9b273488cd8ce6f); -$parcel$export(module.exports, "MenuAnchor", () => $213e4d2df823067d$export$9fa5ebd18bee4d43); -$parcel$export(module.exports, "MenuPortal", () => $213e4d2df823067d$export$793392f970497feb); -$parcel$export(module.exports, "MenuContent", () => $213e4d2df823067d$export$479f0f2f71193efe); -$parcel$export(module.exports, "MenuGroup", () => $213e4d2df823067d$export$22a631d1f72787bb); -$parcel$export(module.exports, "MenuLabel", () => $213e4d2df823067d$export$dd37bec0e8a99143); -$parcel$export(module.exports, "MenuItem", () => $213e4d2df823067d$export$2ce376c2cc3355c8); -$parcel$export(module.exports, "MenuCheckboxItem", () => $213e4d2df823067d$export$f6f243521332502d); -$parcel$export(module.exports, "MenuRadioGroup", () => $213e4d2df823067d$export$ea2200c9eee416b3); -$parcel$export(module.exports, "MenuRadioItem", () => $213e4d2df823067d$export$69bd225e9817f6d0); -$parcel$export(module.exports, "MenuItemIndicator", () => $213e4d2df823067d$export$a2593e23056970a3); -$parcel$export(module.exports, "MenuSeparator", () => $213e4d2df823067d$export$1cec7dcdd713e220); -$parcel$export(module.exports, "MenuArrow", () => $213e4d2df823067d$export$bcdda4773debf5fa); -$parcel$export(module.exports, "MenuSub", () => $213e4d2df823067d$export$71bdb9d1e2909932); -$parcel$export(module.exports, "MenuSubTrigger", () => $213e4d2df823067d$export$5fbbb3ba7297405f); -$parcel$export(module.exports, "MenuSubContent", () => $213e4d2df823067d$export$e7142ab31822bde6); -$parcel$export(module.exports, "Root", () => $213e4d2df823067d$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "Anchor", () => $213e4d2df823067d$export$b688253958b8dfe7); -$parcel$export(module.exports, "Portal", () => $213e4d2df823067d$export$602eac185826482c); -$parcel$export(module.exports, "Content", () => $213e4d2df823067d$export$7c6e2c02157bb7d2); -$parcel$export(module.exports, "Group", () => $213e4d2df823067d$export$eb2fcfdbd7ba97d4); -$parcel$export(module.exports, "Label", () => $213e4d2df823067d$export$b04be29aa201d4f5); -$parcel$export(module.exports, "Item", () => $213e4d2df823067d$export$6d08773d2e66f8f2); -$parcel$export(module.exports, "CheckboxItem", () => $213e4d2df823067d$export$16ce288f89fa631c); -$parcel$export(module.exports, "RadioGroup", () => $213e4d2df823067d$export$a98f0dcb43a68a25); -$parcel$export(module.exports, "RadioItem", () => $213e4d2df823067d$export$371ab307eab489c0); -$parcel$export(module.exports, "ItemIndicator", () => $213e4d2df823067d$export$c3468e2714d175fa); -$parcel$export(module.exports, "Separator", () => $213e4d2df823067d$export$1ff3c3f08ae963c0); -$parcel$export(module.exports, "Arrow", () => $213e4d2df823067d$export$21b07c8f274aebd5); -$parcel$export(module.exports, "Sub", () => $213e4d2df823067d$export$d7a01e11500dfb6f); -$parcel$export(module.exports, "SubTrigger", () => $213e4d2df823067d$export$2ea8a7a591ac5eac); -$parcel$export(module.exports, "SubContent", () => $213e4d2df823067d$export$6d4de93b380beddf); -const $213e4d2df823067d$var$SELECTION_KEYS = ['Enter', ' ']; -const $213e4d2df823067d$var$FIRST_KEYS = ['ArrowDown', 'PageUp', 'Home']; -const $213e4d2df823067d$var$LAST_KEYS = ['ArrowUp', 'PageDown', 'End']; -const $213e4d2df823067d$var$FIRST_LAST_KEYS = [...$213e4d2df823067d$var$FIRST_KEYS, ...$213e4d2df823067d$var$LAST_KEYS]; -const $213e4d2df823067d$var$SUB_OPEN_KEYS = { - ltr: [...$213e4d2df823067d$var$SELECTION_KEYS, 'ArrowRight'], - rtl: [...$213e4d2df823067d$var$SELECTION_KEYS, 'ArrowLeft'] -}; -const $213e4d2df823067d$var$SUB_CLOSE_KEYS = { - ltr: ['ArrowLeft'], - rtl: ['ArrowRight'] -}; -/* ------------------------------------------------------------------------------------------------- - * Menu - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$MENU_NAME = 'Menu'; -const [$213e4d2df823067d$var$Collection, $213e4d2df823067d$var$useCollection, $213e4d2df823067d$var$createCollectionScope] = $cnSS2$radixuireactcollection.createCollection($213e4d2df823067d$var$MENU_NAME); -const [$213e4d2df823067d$var$createMenuContext, $213e4d2df823067d$export$4027731b685e72eb] = $cnSS2$radixuireactcontext.createContextScope($213e4d2df823067d$var$MENU_NAME, [$213e4d2df823067d$var$createCollectionScope, $cnSS2$radixuireactpopper.createPopperScope, $cnSS2$radixuireactrovingfocus.createRovingFocusGroupScope]); -const $213e4d2df823067d$var$usePopperScope = $cnSS2$radixuireactpopper.createPopperScope(); -const $213e4d2df823067d$var$useRovingFocusGroupScope = $cnSS2$radixuireactrovingfocus.createRovingFocusGroupScope(); -const [$213e4d2df823067d$var$MenuProvider, $213e4d2df823067d$var$useMenuContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$MENU_NAME); -const [$213e4d2df823067d$var$MenuRootProvider, $213e4d2df823067d$var$useMenuRootContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$MENU_NAME); -const $213e4d2df823067d$export$d9b273488cd8ce6f = props => { - const { - __scopeMenu: __scopeMenu, - open = false, - children: children, - dir: dir, - onOpenChange: onOpenChange, - modal = true - } = props; - const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); - const [content, setContent] = $cnSS2$react.useState(null); - const isUsingKeyboardRef = $cnSS2$react.useRef(false); - const handleOpenChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onOpenChange); - const direction = $cnSS2$radixuireactdirection.useDirection(dir); - $cnSS2$react.useEffect(() => { - // Capture phase ensures we set the boolean before any side effects execute - // in response to the key or pointer event as they might depend on this value. - const handleKeyDown = () => { - isUsingKeyboardRef.current = true; - document.addEventListener('pointerdown', handlePointer, { - capture: true, - once: true - }); - document.addEventListener('pointermove', handlePointer, { - capture: true, - once: true - }); - }; - const handlePointer = () => isUsingKeyboardRef.current = false; - document.addEventListener('keydown', handleKeyDown, { - capture: true - }); - return () => { - document.removeEventListener('keydown', handleKeyDown, { - capture: true - }); - document.removeEventListener('pointerdown', handlePointer, { - capture: true - }); - document.removeEventListener('pointermove', handlePointer, { - capture: true - }); - }; - }, []); - return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, { - scope: __scopeMenu, - open: open, - onOpenChange: handleOpenChange, - content: content, - onContentChange: setContent - }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuRootProvider, { - scope: __scopeMenu, - onClose: $cnSS2$react.useCallback(() => handleOpenChange(false), [handleOpenChange]), - isUsingKeyboardRef: isUsingKeyboardRef, - dir: direction, - modal: modal - }, children))); -}; -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$d9b273488cd8ce6f, { - displayName: $213e4d2df823067d$var$MENU_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuAnchor - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$ANCHOR_NAME = 'MenuAnchor'; -const $213e4d2df823067d$export$9fa5ebd18bee4d43 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - __scopeMenu: __scopeMenu, - ...anchorProps - } = props; - const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); - return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Anchor, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, popperScope, anchorProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$9fa5ebd18bee4d43, { - displayName: $213e4d2df823067d$var$ANCHOR_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuPortal - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$PORTAL_NAME = 'MenuPortal'; -const [$213e4d2df823067d$var$PortalProvider, $213e4d2df823067d$var$usePortalContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$PORTAL_NAME, { - forceMount: undefined -}); -const $213e4d2df823067d$export$793392f970497feb = props => { - const { - __scopeMenu: __scopeMenu, - forceMount: forceMount, - children: children, - container: container - } = props; - const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$PORTAL_NAME, __scopeMenu); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$PortalProvider, { - scope: __scopeMenu, - forceMount: forceMount - }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, { - present: forceMount || context.open - }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactportal.Portal, { - asChild: true, - container: container - }, children))); -}; -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$793392f970497feb, { - displayName: $213e4d2df823067d$var$PORTAL_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuContent - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$CONTENT_NAME = 'MenuContent'; -const [$213e4d2df823067d$var$MenuContentProvider, $213e4d2df823067d$var$useMenuContentContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$CONTENT_NAME); -const $213e4d2df823067d$export$479f0f2f71193efe = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const portalContext = $213e4d2df823067d$var$usePortalContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); - const { - forceMount = portalContext.forceMount, - ...contentProps - } = props; - const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); - const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.Provider, { - scope: props.__scopeMenu - }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, { - present: forceMount || context.open - }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.Slot, { - scope: props.__scopeMenu - }, rootContext.modal ? /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentModal, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, contentProps, { - ref: forwardedRef - })) : /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuRootContentNonModal, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, contentProps, { - ref: forwardedRef - }))))); -}); -/* ---------------------------------------------------------------------------------------------- */ -const $213e4d2df823067d$var$MenuRootContentModal = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); - const ref = $cnSS2$react.useRef(null); - const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); // Hide everything from ARIA except the `MenuContent` - $cnSS2$react.useEffect(() => { - const content = ref.current; - if (content) return $cnSS2$ariahidden.hideOthers(content); - }, []); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, props, { - ref: composedRefs // we make sure we're not trapping once it's been closed - , - - trapFocus: context.open // make sure to only disable pointer events when open - , - - disableOutsidePointerEvents: context.open, - disableOutsideScroll: true // When focus is trapped, a `focusout` event may still happen. - , - - onFocusOutside: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocusOutside, event => event.preventDefault(), { - checkForDefaultPrevented: false - }), - onDismiss: () => context.onOpenChange(false) - })); -}); -const $213e4d2df823067d$var$MenuRootContentNonModal = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, props, { - ref: forwardedRef, - trapFocus: false, - disableOutsidePointerEvents: false, - disableOutsideScroll: false, - onDismiss: () => context.onOpenChange(false) - })); -}); -/* ---------------------------------------------------------------------------------------------- */ -const $213e4d2df823067d$var$MenuContentImpl = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - __scopeMenu: __scopeMenu, - loop = false, - trapFocus: trapFocus, - onOpenAutoFocus: onOpenAutoFocus, - onCloseAutoFocus: onCloseAutoFocus, - disableOutsidePointerEvents: disableOutsidePointerEvents, - onEntryFocus: onEntryFocus, - onEscapeKeyDown: onEscapeKeyDown, - onPointerDownOutside: onPointerDownOutside, - onFocusOutside: onFocusOutside, - onInteractOutside: onInteractOutside, - onDismiss: onDismiss, - disableOutsideScroll: disableOutsideScroll, - ...contentProps - } = props; - const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, __scopeMenu); - const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, __scopeMenu); - const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); - const rovingFocusGroupScope = $213e4d2df823067d$var$useRovingFocusGroupScope(__scopeMenu); - const getItems = $213e4d2df823067d$var$useCollection(__scopeMenu); - const [currentItemId, setCurrentItemId] = $cnSS2$react.useState(null); - const contentRef = $cnSS2$react.useRef(null); - const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, contentRef, context.onContentChange); - const timerRef = $cnSS2$react.useRef(0); - const searchRef = $cnSS2$react.useRef(''); - const pointerGraceTimerRef = $cnSS2$react.useRef(0); - const pointerGraceIntentRef = $cnSS2$react.useRef(null); - const pointerDirRef = $cnSS2$react.useRef('right'); - const lastPointerXRef = $cnSS2$react.useRef(0); - const ScrollLockWrapper = disableOutsideScroll ? $cnSS2$reactremovescroll.RemoveScroll : $cnSS2$react.Fragment; - const scrollLockWrapperProps = disableOutsideScroll ? { - as: $cnSS2$radixuireactslot.Slot, - allowPinchZoom: true - } : undefined; - const handleTypeaheadSearch = key => { - var _items$find, _items$find2; - const search = searchRef.current + key; - const items = getItems().filter(item => !item.disabled); - const currentItem = document.activeElement; - const currentMatch = (_items$find = items.find(item => item.ref.current === currentItem)) === null || _items$find === void 0 ? void 0 : _items$find.textValue; - const values = items.map(item => item.textValue); - const nextMatch = $213e4d2df823067d$var$getNextMatch(values, search, currentMatch); - const newItem = (_items$find2 = items.find(item => item.textValue === nextMatch)) === null || _items$find2 === void 0 ? void 0 : _items$find2.ref.current; // Reset `searchRef` 1 second after it was last updated - (function updateSearch(value) { - searchRef.current = value; - window.clearTimeout(timerRef.current); - if (value !== '') timerRef.current = window.setTimeout(() => updateSearch(''), 1000); - })(search); - if (newItem) - /** - * Imperative focus during keydown is risky so we prevent React's batching updates - * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332 - */ - setTimeout(() => newItem.focus()); - }; - $cnSS2$react.useEffect(() => { - return () => window.clearTimeout(timerRef.current); - }, []); // Make sure the whole tree has focus guards as our `MenuContent` may be - // the last element in the DOM (beacuse of the `Portal`) - $cnSS2$radixuireactfocusguards.useFocusGuards(); - const isPointerMovingToSubmenu = $cnSS2$react.useCallback(event => { - var _pointerGraceIntentRe, _pointerGraceIntentRe2; - const isMovingTowards = pointerDirRef.current === ((_pointerGraceIntentRe = pointerGraceIntentRef.current) === null || _pointerGraceIntentRe === void 0 ? void 0 : _pointerGraceIntentRe.side); - return isMovingTowards && $213e4d2df823067d$var$isPointerInGraceArea(event, (_pointerGraceIntentRe2 = pointerGraceIntentRef.current) === null || _pointerGraceIntentRe2 === void 0 ? void 0 : _pointerGraceIntentRe2.area); - }, []); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuContentProvider, { - scope: __scopeMenu, - searchRef: searchRef, - onItemEnter: $cnSS2$react.useCallback(event => { - if (isPointerMovingToSubmenu(event)) event.preventDefault(); - }, [isPointerMovingToSubmenu]), - onItemLeave: $cnSS2$react.useCallback(event => { - var _contentRef$current; - if (isPointerMovingToSubmenu(event)) return; - (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 || _contentRef$current.focus(); - setCurrentItemId(null); - }, [isPointerMovingToSubmenu]), - onTriggerLeave: $cnSS2$react.useCallback(event => { - if (isPointerMovingToSubmenu(event)) event.preventDefault(); - }, [isPointerMovingToSubmenu]), - pointerGraceTimerRef: pointerGraceTimerRef, - onPointerGraceIntentChange: $cnSS2$react.useCallback(intent => { - pointerGraceIntentRef.current = intent; - }, []) - }, /*#__PURE__*/$cnSS2$react.createElement(ScrollLockWrapper, scrollLockWrapperProps, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactfocusscope.FocusScope, { - asChild: true, - trapped: trapFocus, - onMountAutoFocus: $cnSS2$radixuiprimitive.composeEventHandlers(onOpenAutoFocus, event => { - var _contentRef$current2; - // when opening, explicitly focus the content area only and leave - // `onEntryFocus` in control of focusing first item - event.preventDefault(); - (_contentRef$current2 = contentRef.current) === null || _contentRef$current2 === void 0 || _contentRef$current2.focus(); - }), - onUnmountAutoFocus: onCloseAutoFocus - }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactdismissablelayer.DismissableLayer, { - asChild: true, - disableOutsidePointerEvents: disableOutsidePointerEvents, - onEscapeKeyDown: onEscapeKeyDown, - onPointerDownOutside: onPointerDownOutside, - onFocusOutside: onFocusOutside, - onInteractOutside: onInteractOutside, - onDismiss: onDismiss - }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactrovingfocus.Root, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - asChild: true - }, rovingFocusGroupScope, { - dir: rootContext.dir, - orientation: "vertical", - loop: loop, - currentTabStopId: currentItemId, - onCurrentTabStopIdChange: setCurrentItemId, - onEntryFocus: $cnSS2$radixuiprimitive.composeEventHandlers(onEntryFocus, event => { - // only focus first item when using keyboard - if (!rootContext.isUsingKeyboardRef.current) event.preventDefault(); - }) - }), /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Content, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - role: "menu", - "aria-orientation": "vertical", - "data-state": $213e4d2df823067d$var$getOpenState(context.open), - "data-radix-menu-content": "", - dir: rootContext.dir - }, popperScope, contentProps, { - ref: composedRefs, - style: { - outline: 'none', - ...contentProps.style - }, - onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(contentProps.onKeyDown, event => { - // submenu key events bubble through portals. We only care about keys in this menu. - const target = event.target; - const isKeyDownInside = target.closest('[data-radix-menu-content]') === event.currentTarget; - const isModifierKey = event.ctrlKey || event.altKey || event.metaKey; - const isCharacterKey = event.key.length === 1; - if (isKeyDownInside) { - // menus should not be navigated using tab key so we prevent it - if (event.key === 'Tab') event.preventDefault(); - if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key); - } // focus first/last item based on key pressed - const content = contentRef.current; - if (event.target !== content) return; - if (!$213e4d2df823067d$var$FIRST_LAST_KEYS.includes(event.key)) return; - event.preventDefault(); - const items = getItems().filter(item => !item.disabled); - const candidateNodes = items.map(item => item.ref.current); - if ($213e4d2df823067d$var$LAST_KEYS.includes(event.key)) candidateNodes.reverse(); - $213e4d2df823067d$var$focusFirst(candidateNodes); - }), - onBlur: $cnSS2$radixuiprimitive.composeEventHandlers(props.onBlur, event => { - // clear search buffer when leaving the menu - if (!event.currentTarget.contains(event.target)) { - window.clearTimeout(timerRef.current); - searchRef.current = ''; - } - }), - onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse(event => { - const target = event.target; - const pointerXHasChanged = lastPointerXRef.current !== event.clientX; // We don't use `event.movementX` for this check because Safari will - // always return `0` on a pointer event. - if (event.currentTarget.contains(target) && pointerXHasChanged) { - const newDir = event.clientX > lastPointerXRef.current ? 'right' : 'left'; - pointerDirRef.current = newDir; - lastPointerXRef.current = event.clientX; - } - })) - }))))))); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$479f0f2f71193efe, { - displayName: $213e4d2df823067d$var$CONTENT_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuGroup - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$GROUP_NAME = 'MenuGroup'; -const $213e4d2df823067d$export$22a631d1f72787bb = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - __scopeMenu: __scopeMenu, - ...groupProps - } = props; - return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - role: "group" - }, groupProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$22a631d1f72787bb, { - displayName: $213e4d2df823067d$var$GROUP_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuLabel - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$LABEL_NAME = 'MenuLabel'; -const $213e4d2df823067d$export$dd37bec0e8a99143 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - __scopeMenu: __scopeMenu, - ...labelProps - } = props; - return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, labelProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$dd37bec0e8a99143, { - displayName: $213e4d2df823067d$var$LABEL_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuItem - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$ITEM_NAME = 'MenuItem'; -const $213e4d2df823067d$var$ITEM_SELECT = 'menu.itemSelect'; -const $213e4d2df823067d$export$2ce376c2cc3355c8 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - disabled = false, - onSelect: onSelect, - ...itemProps - } = props; - const ref = $cnSS2$react.useRef(null); - const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$ITEM_NAME, props.__scopeMenu); - const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$ITEM_NAME, props.__scopeMenu); - const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); - const isPointerDownRef = $cnSS2$react.useRef(false); - const handleSelect = () => { - const menuItem = ref.current; - if (!disabled && menuItem) { - const itemSelectEvent = new CustomEvent($213e4d2df823067d$var$ITEM_SELECT, { - bubbles: true, - cancelable: true - }); - menuItem.addEventListener($213e4d2df823067d$var$ITEM_SELECT, event => onSelect === null || onSelect === void 0 ? void 0 : onSelect(event), { - once: true - }); - $cnSS2$radixuireactprimitive.dispatchDiscreteCustomEvent(menuItem, itemSelectEvent); - if (itemSelectEvent.defaultPrevented) isPointerDownRef.current = false;else rootContext.onClose(); - } - }; - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, itemProps, { - ref: composedRefs, - disabled: disabled, - onClick: $cnSS2$radixuiprimitive.composeEventHandlers(props.onClick, handleSelect), - onPointerDown: event => { - var _props$onPointerDown; - (_props$onPointerDown = props.onPointerDown) === null || _props$onPointerDown === void 0 || _props$onPointerDown.call(props, event); - isPointerDownRef.current = true; - }, - onPointerUp: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerUp, event => { - var _event$currentTarget; - // Pointer down can move to a different menu item which should activate it on pointer up. - // We dispatch a click for selection to allow composition with click based triggers and to - // prevent Firefox from getting stuck in text selection mode when the menu closes. - if (!isPointerDownRef.current) (_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || _event$currentTarget.click(); - }), - onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { - const isTypingAhead = contentContext.searchRef.current !== ''; - if (disabled || isTypingAhead && event.key === ' ') return; - if ($213e4d2df823067d$var$SELECTION_KEYS.includes(event.key)) { - event.currentTarget.click(); - /** - * We prevent default browser behaviour for selection keys as they should trigger - * a selection only: - * - prevents space from scrolling the page. - * - if keydown causes focus to move, prevents keydown from firing on the new target. - */ - event.preventDefault(); - } - }) - })); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$2ce376c2cc3355c8, { - displayName: $213e4d2df823067d$var$ITEM_NAME -}); -/* ---------------------------------------------------------------------------------------------- */ -const $213e4d2df823067d$var$MenuItemImpl = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - __scopeMenu: __scopeMenu, - disabled = false, - textValue: textValue, - ...itemProps - } = props; - const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$ITEM_NAME, __scopeMenu); - const rovingFocusGroupScope = $213e4d2df823067d$var$useRovingFocusGroupScope(__scopeMenu); - const ref = $cnSS2$react.useRef(null); - const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); - const [isFocused, setIsFocused] = $cnSS2$react.useState(false); // get the item's `.textContent` as default strategy for typeahead `textValue` - const [textContent, setTextContent] = $cnSS2$react.useState(''); - $cnSS2$react.useEffect(() => { - const menuItem = ref.current; - if (menuItem) { - var _menuItem$textContent; - setTextContent(((_menuItem$textContent = menuItem.textContent) !== null && _menuItem$textContent !== void 0 ? _menuItem$textContent : '').trim()); - } - }, [itemProps.children]); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.ItemSlot, { - scope: __scopeMenu, - disabled: disabled, - textValue: textValue !== null && textValue !== void 0 ? textValue : textContent - }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactrovingfocus.Item, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - asChild: true - }, rovingFocusGroupScope, { - focusable: !disabled - }), /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - role: "menuitem", - "data-highlighted": isFocused ? '' : undefined, - "aria-disabled": disabled || undefined, - "data-disabled": disabled ? '' : undefined - }, itemProps, { - ref: composedRefs, - onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse(event => { - if (disabled) contentContext.onItemLeave(event);else { - contentContext.onItemEnter(event); - if (!event.defaultPrevented) { - const item = event.currentTarget; - item.focus(); - } - } - })), - onPointerLeave: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $213e4d2df823067d$var$whenMouse(event => contentContext.onItemLeave(event))), - onFocus: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocus, () => setIsFocused(true)), - onBlur: $cnSS2$radixuiprimitive.composeEventHandlers(props.onBlur, () => setIsFocused(false)) - })))); -}); -/* ------------------------------------------------------------------------------------------------- - * MenuCheckboxItem - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$CHECKBOX_ITEM_NAME = 'MenuCheckboxItem'; -const $213e4d2df823067d$export$f6f243521332502d = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - checked = false, - onCheckedChange: onCheckedChange, - ...checkboxItemProps - } = props; - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$ItemIndicatorProvider, { - scope: props.__scopeMenu, - checked: checked - }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$export$2ce376c2cc3355c8, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - role: "menuitemcheckbox", - "aria-checked": $213e4d2df823067d$var$isIndeterminate(checked) ? 'mixed' : checked - }, checkboxItemProps, { - ref: forwardedRef, - "data-state": $213e4d2df823067d$var$getCheckedState(checked), - onSelect: $cnSS2$radixuiprimitive.composeEventHandlers(checkboxItemProps.onSelect, () => onCheckedChange === null || onCheckedChange === void 0 ? void 0 : onCheckedChange($213e4d2df823067d$var$isIndeterminate(checked) ? true : !checked), { - checkForDefaultPrevented: false - }) - }))); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$f6f243521332502d, { - displayName: $213e4d2df823067d$var$CHECKBOX_ITEM_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuRadioGroup - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$RADIO_GROUP_NAME = 'MenuRadioGroup'; -const [$213e4d2df823067d$var$RadioGroupProvider, $213e4d2df823067d$var$useRadioGroupContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$RADIO_GROUP_NAME, { - value: undefined, - onValueChange: () => {} -}); -const $213e4d2df823067d$export$ea2200c9eee416b3 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - value: value, - onValueChange: onValueChange, - ...groupProps - } = props; - const handleValueChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onValueChange); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$RadioGroupProvider, { - scope: props.__scopeMenu, - value: value, - onValueChange: handleValueChange - }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$export$22a631d1f72787bb, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, groupProps, { - ref: forwardedRef - }))); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$ea2200c9eee416b3, { - displayName: $213e4d2df823067d$var$RADIO_GROUP_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuRadioItem - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$RADIO_ITEM_NAME = 'MenuRadioItem'; -const $213e4d2df823067d$export$69bd225e9817f6d0 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - value: value, - ...radioItemProps - } = props; - const context = $213e4d2df823067d$var$useRadioGroupContext($213e4d2df823067d$var$RADIO_ITEM_NAME, props.__scopeMenu); - const checked = value === context.value; - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$ItemIndicatorProvider, { - scope: props.__scopeMenu, - checked: checked - }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$export$2ce376c2cc3355c8, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - role: "menuitemradio", - "aria-checked": checked - }, radioItemProps, { - ref: forwardedRef, - "data-state": $213e4d2df823067d$var$getCheckedState(checked), - onSelect: $cnSS2$radixuiprimitive.composeEventHandlers(radioItemProps.onSelect, () => { - var _context$onValueChang; - return (_context$onValueChang = context.onValueChange) === null || _context$onValueChang === void 0 ? void 0 : _context$onValueChang.call(context, value); - }, { - checkForDefaultPrevented: false - }) - }))); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$69bd225e9817f6d0, { - displayName: $213e4d2df823067d$var$RADIO_ITEM_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuItemIndicator - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$ITEM_INDICATOR_NAME = 'MenuItemIndicator'; -const [$213e4d2df823067d$var$ItemIndicatorProvider, $213e4d2df823067d$var$useItemIndicatorContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$ITEM_INDICATOR_NAME, { - checked: false -}); -const $213e4d2df823067d$export$a2593e23056970a3 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - __scopeMenu: __scopeMenu, - forceMount: forceMount, - ...itemIndicatorProps - } = props; - const indicatorContext = $213e4d2df823067d$var$useItemIndicatorContext($213e4d2df823067d$var$ITEM_INDICATOR_NAME, __scopeMenu); - return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, { - present: forceMount || $213e4d2df823067d$var$isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true - }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.span, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, itemIndicatorProps, { - ref: forwardedRef, - "data-state": $213e4d2df823067d$var$getCheckedState(indicatorContext.checked) - }))); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$a2593e23056970a3, { - displayName: $213e4d2df823067d$var$ITEM_INDICATOR_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuSeparator - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$SEPARATOR_NAME = 'MenuSeparator'; -const $213e4d2df823067d$export$1cec7dcdd713e220 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - __scopeMenu: __scopeMenu, - ...separatorProps - } = props; - return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactprimitive.Primitive.div, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - role: "separator", - "aria-orientation": "horizontal" - }, separatorProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$1cec7dcdd713e220, { - displayName: $213e4d2df823067d$var$SEPARATOR_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuArrow - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$ARROW_NAME = 'MenuArrow'; -const $213e4d2df823067d$export$bcdda4773debf5fa = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const { - __scopeMenu: __scopeMenu, - ...arrowProps - } = props; - const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); - return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Arrow, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({}, popperScope, arrowProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$bcdda4773debf5fa, { - displayName: $213e4d2df823067d$var$ARROW_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuSub - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$SUB_NAME = 'MenuSub'; -const [$213e4d2df823067d$var$MenuSubProvider, $213e4d2df823067d$var$useMenuSubContext] = $213e4d2df823067d$var$createMenuContext($213e4d2df823067d$var$SUB_NAME); -const $213e4d2df823067d$export$71bdb9d1e2909932 = props => { - const { - __scopeMenu: __scopeMenu, - children: children, - open = false, - onOpenChange: onOpenChange - } = props; - const parentMenuContext = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_NAME, __scopeMenu); - const popperScope = $213e4d2df823067d$var$usePopperScope(__scopeMenu); - const [trigger, setTrigger] = $cnSS2$react.useState(null); - const [content, setContent] = $cnSS2$react.useState(null); - const handleOpenChange = $cnSS2$radixuireactusecallbackref.useCallbackRef(onOpenChange); // Prevent the parent menu from reopening with open submenus. - $cnSS2$react.useEffect(() => { - if (parentMenuContext.open === false) handleOpenChange(false); - return () => handleOpenChange(false); - }, [parentMenuContext.open, handleOpenChange]); - return /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpopper.Root, popperScope, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuProvider, { - scope: __scopeMenu, - open: open, - onOpenChange: handleOpenChange, - content: content, - onContentChange: setContent - }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuSubProvider, { - scope: __scopeMenu, - contentId: $cnSS2$radixuireactid.useId(), - triggerId: $cnSS2$radixuireactid.useId(), - trigger: trigger, - onTriggerChange: setTrigger - }, children))); -}; -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$71bdb9d1e2909932, { - displayName: $213e4d2df823067d$var$SUB_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuSubTrigger - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$SUB_TRIGGER_NAME = 'MenuSubTrigger'; -const $213e4d2df823067d$export$5fbbb3ba7297405f = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu); - const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu); - const subContext = $213e4d2df823067d$var$useMenuSubContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu); - const contentContext = $213e4d2df823067d$var$useMenuContentContext($213e4d2df823067d$var$SUB_TRIGGER_NAME, props.__scopeMenu); - const openTimerRef = $cnSS2$react.useRef(null); - const { - pointerGraceTimerRef: pointerGraceTimerRef, - onPointerGraceIntentChange: onPointerGraceIntentChange - } = contentContext; - const scope = { - __scopeMenu: props.__scopeMenu - }; - const clearOpenTimer = $cnSS2$react.useCallback(() => { - if (openTimerRef.current) window.clearTimeout(openTimerRef.current); - openTimerRef.current = null; - }, []); - $cnSS2$react.useEffect(() => clearOpenTimer, [clearOpenTimer]); - $cnSS2$react.useEffect(() => { - const pointerGraceTimer = pointerGraceTimerRef.current; - return () => { - window.clearTimeout(pointerGraceTimer); - onPointerGraceIntentChange(null); - }; - }, [pointerGraceTimerRef, onPointerGraceIntentChange]); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$export$9fa5ebd18bee4d43, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - asChild: true - }, scope), /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuItemImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - id: subContext.triggerId, - "aria-haspopup": "menu", - "aria-expanded": context.open, - "aria-controls": subContext.contentId, - "data-state": $213e4d2df823067d$var$getOpenState(context.open) - }, props, { - ref: $cnSS2$radixuireactcomposerefs.composeRefs(forwardedRef, subContext.onTriggerChange) // This is redundant for mouse users but we cannot determine pointer type from - , - - onClick: event => { - var _props$onClick; - (_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, event); - if (props.disabled || event.defaultPrevented) return; - /** - * We manually focus because iOS Safari doesn't always focus on click (e.g. buttons) - * and we rely heavily on `onFocusOutside` for submenus to close when switching - * between separate submenus. - */ - event.currentTarget.focus(); - if (!context.open) context.onOpenChange(true); - }, - onPointerMove: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerMove, $213e4d2df823067d$var$whenMouse(event => { - contentContext.onItemEnter(event); - if (event.defaultPrevented) return; - if (!props.disabled && !context.open && !openTimerRef.current) { - contentContext.onPointerGraceIntentChange(null); - openTimerRef.current = window.setTimeout(() => { - context.onOpenChange(true); - clearOpenTimer(); - }, 100); - } - })), - onPointerLeave: $cnSS2$radixuiprimitive.composeEventHandlers(props.onPointerLeave, $213e4d2df823067d$var$whenMouse(event => { - var _context$content; - clearOpenTimer(); - const contentRect = (_context$content = context.content) === null || _context$content === void 0 ? void 0 : _context$content.getBoundingClientRect(); - if (contentRect) { - var _context$content2; - // TODO: make sure to update this when we change positioning logic - const side = (_context$content2 = context.content) === null || _context$content2 === void 0 ? void 0 : _context$content2.dataset.side; - const rightSide = side === 'right'; - const bleed = rightSide ? -5 : 5; - const contentNearEdge = contentRect[rightSide ? 'left' : 'right']; - const contentFarEdge = contentRect[rightSide ? 'right' : 'left']; - contentContext.onPointerGraceIntentChange({ - area: [ - // consistently within polygon bounds - { - x: event.clientX + bleed, - y: event.clientY - }, { - x: contentNearEdge, - y: contentRect.top - }, { - x: contentFarEdge, - y: contentRect.top - }, { - x: contentFarEdge, - y: contentRect.bottom - }, { - x: contentNearEdge, - y: contentRect.bottom - }], - side: side - }); - window.clearTimeout(pointerGraceTimerRef.current); - pointerGraceTimerRef.current = window.setTimeout(() => contentContext.onPointerGraceIntentChange(null), 300); - } else { - contentContext.onTriggerLeave(event); - if (event.defaultPrevented) return; // There's 100ms where the user may leave an item before the submenu was opened. - contentContext.onPointerGraceIntentChange(null); - } - })), - onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { - const isTypingAhead = contentContext.searchRef.current !== ''; - if (props.disabled || isTypingAhead && event.key === ' ') return; - if ($213e4d2df823067d$var$SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) { - var _context$content3; - context.onOpenChange(true); // The trigger may hold focus if opened via pointer interaction - // so we ensure content is given focus again when switching to keyboard. - (_context$content3 = context.content) === null || _context$content3 === void 0 || _context$content3.focus(); // prevent window from scrolling - event.preventDefault(); - } - }) - }))); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$5fbbb3ba7297405f, { - displayName: $213e4d2df823067d$var$SUB_TRIGGER_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * MenuSubContent - * -----------------------------------------------------------------------------------------------*/ -const $213e4d2df823067d$var$SUB_CONTENT_NAME = 'MenuSubContent'; -const $213e4d2df823067d$export$e7142ab31822bde6 = /*#__PURE__*/$cnSS2$react.forwardRef((props, forwardedRef) => { - const portalContext = $213e4d2df823067d$var$usePortalContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); - const { - forceMount = portalContext.forceMount, - ...subContentProps - } = props; - const context = $213e4d2df823067d$var$useMenuContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); - const rootContext = $213e4d2df823067d$var$useMenuRootContext($213e4d2df823067d$var$CONTENT_NAME, props.__scopeMenu); - const subContext = $213e4d2df823067d$var$useMenuSubContext($213e4d2df823067d$var$SUB_CONTENT_NAME, props.__scopeMenu); - const ref = $cnSS2$react.useRef(null); - const composedRefs = $cnSS2$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); - return /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.Provider, { - scope: props.__scopeMenu - }, /*#__PURE__*/$cnSS2$react.createElement($cnSS2$radixuireactpresence.Presence, { - present: forceMount || context.open - }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$Collection.Slot, { - scope: props.__scopeMenu - }, /*#__PURE__*/$cnSS2$react.createElement($213e4d2df823067d$var$MenuContentImpl, $parcel$interopDefault($cnSS2$babelruntimehelpersextends)({ - id: subContext.contentId, - "aria-labelledby": subContext.triggerId - }, subContentProps, { - ref: composedRefs, - align: "start", - side: rootContext.dir === 'rtl' ? 'left' : 'right', - disableOutsidePointerEvents: false, - disableOutsideScroll: false, - trapFocus: false, - onOpenAutoFocus: event => { - var _ref$current; - // when opening a submenu, focus content for keyboard users only - if (rootContext.isUsingKeyboardRef.current) (_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus(); - event.preventDefault(); - } // The menu might close because of focusing another menu item in the parent menu. We - , - - onCloseAutoFocus: event => event.preventDefault(), - onFocusOutside: $cnSS2$radixuiprimitive.composeEventHandlers(props.onFocusOutside, event => { - // We prevent closing when the trigger is focused to avoid triggering a re-open animation - // on pointer interaction. - if (event.target !== subContext.trigger) context.onOpenChange(false); - }), - onEscapeKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onEscapeKeyDown, event => { - rootContext.onClose(); // ensure pressing escape in submenu doesn't escape full screen mode - event.preventDefault(); - }), - onKeyDown: $cnSS2$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { - // Submenu key events bubble through portals. We only care about keys in this menu. - const isKeyDownInside = event.currentTarget.contains(event.target); - const isCloseKey = $213e4d2df823067d$var$SUB_CLOSE_KEYS[rootContext.dir].includes(event.key); - if (isKeyDownInside && isCloseKey) { - var _subContext$trigger; - context.onOpenChange(false); // We focus manually because we prevented it in `onCloseAutoFocus` - (_subContext$trigger = subContext.trigger) === null || _subContext$trigger === void 0 || _subContext$trigger.focus(); // prevent window from scrolling - event.preventDefault(); - } - }) - }))))); -}); -/*#__PURE__*/ -Object.assign($213e4d2df823067d$export$e7142ab31822bde6, { - displayName: $213e4d2df823067d$var$SUB_CONTENT_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -function $213e4d2df823067d$var$getOpenState(open) { - return open ? 'open' : 'closed'; -} -function $213e4d2df823067d$var$isIndeterminate(checked) { - return checked === 'indeterminate'; -} -function $213e4d2df823067d$var$getCheckedState(checked) { - return $213e4d2df823067d$var$isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked'; -} -function $213e4d2df823067d$var$focusFirst(candidates) { - const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement; - for (const candidate of candidates) { - // if focus is already where we want to go, we don't want to keep going through the candidates - if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return; - candidate.focus(); - if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return; - } -} -/** - * Wraps an array around itself at a given start index - * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']` - */ -function $213e4d2df823067d$var$wrapArray(array, startIndex) { - return array.map((_, index) => array[(startIndex + index) % array.length]); -} -/** - * This is the "meat" of the typeahead matching logic. It takes in all the values, - * the search and the current match, and returns the next match (or `undefined`). - * - * We normalize the search because if a user has repeatedly pressed a character, - * we want the exact same behavior as if we only had that one character - * (ie. cycle through options starting with that character) - * - * We also reorder the values by wrapping the array around the current match. - * This is so we always look forward from the current match, and picking the first - * match will always be the correct one. - * - * Finally, if the normalized search is exactly one character, we exclude the - * current match from the values because otherwise it would be the first to match always - * and focus would never move. This is as opposed to the regular case, where we - * don't want focus to move if the current match still matches. - */ -function $213e4d2df823067d$var$getNextMatch(values, search, currentMatch) { - const isRepeated = search.length > 1 && Array.from(search).every(char => char === search[0]); - const normalizedSearch = isRepeated ? search[0] : search; - const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1; - let wrappedValues = $213e4d2df823067d$var$wrapArray(values, Math.max(currentMatchIndex, 0)); - const excludeCurrentMatch = normalizedSearch.length === 1; - if (excludeCurrentMatch) wrappedValues = wrappedValues.filter(v => v !== currentMatch); - const nextMatch = wrappedValues.find(value => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())); - return nextMatch !== currentMatch ? nextMatch : undefined; -} -// Determine if a point is inside of a polygon. -// Based on https://github.com/substack/point-in-polygon -function $213e4d2df823067d$var$isPointInPolygon(point, polygon) { - const { - x: x, - y: y - } = point; - let inside = false; - for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) { - const xi = polygon[i].x; - const yi = polygon[i].y; - const xj = polygon[j].x; - const yj = polygon[j].y; // prettier-ignore - const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi; - if (intersect) inside = !inside; - } - return inside; -} -function $213e4d2df823067d$var$isPointerInGraceArea(event, area) { - if (!area) return false; - const cursorPos = { - x: event.clientX, - y: event.clientY - }; - return $213e4d2df823067d$var$isPointInPolygon(cursorPos, area); -} -function $213e4d2df823067d$var$whenMouse(handler) { - return event => event.pointerType === 'mouse' ? handler(event) : undefined; -} -const $213e4d2df823067d$export$be92b6f5f03c0fe9 = $213e4d2df823067d$export$d9b273488cd8ce6f; -const $213e4d2df823067d$export$b688253958b8dfe7 = $213e4d2df823067d$export$9fa5ebd18bee4d43; -const $213e4d2df823067d$export$602eac185826482c = $213e4d2df823067d$export$793392f970497feb; -const $213e4d2df823067d$export$7c6e2c02157bb7d2 = $213e4d2df823067d$export$479f0f2f71193efe; -const $213e4d2df823067d$export$eb2fcfdbd7ba97d4 = $213e4d2df823067d$export$22a631d1f72787bb; -const $213e4d2df823067d$export$b04be29aa201d4f5 = $213e4d2df823067d$export$dd37bec0e8a99143; -const $213e4d2df823067d$export$6d08773d2e66f8f2 = $213e4d2df823067d$export$2ce376c2cc3355c8; -const $213e4d2df823067d$export$16ce288f89fa631c = $213e4d2df823067d$export$f6f243521332502d; -const $213e4d2df823067d$export$a98f0dcb43a68a25 = $213e4d2df823067d$export$ea2200c9eee416b3; -const $213e4d2df823067d$export$371ab307eab489c0 = $213e4d2df823067d$export$69bd225e9817f6d0; -const $213e4d2df823067d$export$c3468e2714d175fa = $213e4d2df823067d$export$a2593e23056970a3; -const $213e4d2df823067d$export$1ff3c3f08ae963c0 = $213e4d2df823067d$export$1cec7dcdd713e220; -const $213e4d2df823067d$export$21b07c8f274aebd5 = $213e4d2df823067d$export$bcdda4773debf5fa; -const $213e4d2df823067d$export$d7a01e11500dfb6f = $213e4d2df823067d$export$71bdb9d1e2909932; -const $213e4d2df823067d$export$2ea8a7a591ac5eac = $213e4d2df823067d$export$5fbbb3ba7297405f; -const $213e4d2df823067d$export$6d4de93b380beddf = $213e4d2df823067d$export$e7142ab31822bde6; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-popper/dist/index.js": -/*!******************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-popper/dist/index.js ***! - \******************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $50Iv9$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $50Iv9$react = __webpack_require__(/*! react */ "react"); -var $50Iv9$floatinguireactdom = __webpack_require__(/*! @floating-ui/react-dom */ "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js"); -var $50Iv9$radixuireactarrow = __webpack_require__(/*! @radix-ui/react-arrow */ "../../../node_modules/@radix-ui/react-arrow/dist/index.js"); -var $50Iv9$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $50Iv9$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); -var $50Iv9$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -var $50Iv9$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); -var $50Iv9$radixuireactuselayouteffect = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js"); -var $50Iv9$radixuireactusesize = __webpack_require__(/*! @radix-ui/react-use-size */ "../../../node_modules/@radix-ui/react-use-size/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "createPopperScope", () => $34310caa050a8d63$export$722aac194ae923); -$parcel$export(module.exports, "Popper", () => $34310caa050a8d63$export$badac9ada3a0bdf9); -$parcel$export(module.exports, "PopperAnchor", () => $34310caa050a8d63$export$ecd4e1ccab6ed6d); -$parcel$export(module.exports, "PopperContent", () => $34310caa050a8d63$export$bc4ae5855d3c4fc); -$parcel$export(module.exports, "PopperArrow", () => $34310caa050a8d63$export$79d62cd4e10a3fd0); -$parcel$export(module.exports, "Root", () => $34310caa050a8d63$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "Anchor", () => $34310caa050a8d63$export$b688253958b8dfe7); -$parcel$export(module.exports, "Content", () => $34310caa050a8d63$export$7c6e2c02157bb7d2); -$parcel$export(module.exports, "Arrow", () => $34310caa050a8d63$export$21b07c8f274aebd5); -$parcel$export(module.exports, "SIDE_OPTIONS", () => $34310caa050a8d63$export$36f0086da09c4b9f); -$parcel$export(module.exports, "ALIGN_OPTIONS", () => $34310caa050a8d63$export$3671ffab7b302fc9); -const $34310caa050a8d63$export$36f0086da09c4b9f = ['top', 'right', 'bottom', 'left']; -const $34310caa050a8d63$export$3671ffab7b302fc9 = ['start', 'center', 'end']; -/* ------------------------------------------------------------------------------------------------- - * Popper - * -----------------------------------------------------------------------------------------------*/ -const $34310caa050a8d63$var$POPPER_NAME = 'Popper'; -const [$34310caa050a8d63$var$createPopperContext, $34310caa050a8d63$export$722aac194ae923] = $50Iv9$radixuireactcontext.createContextScope($34310caa050a8d63$var$POPPER_NAME); -const [$34310caa050a8d63$var$PopperProvider, $34310caa050a8d63$var$usePopperContext] = $34310caa050a8d63$var$createPopperContext($34310caa050a8d63$var$POPPER_NAME); -const $34310caa050a8d63$export$badac9ada3a0bdf9 = props => { - const { - __scopePopper: __scopePopper, - children: children - } = props; - const [anchor, setAnchor] = $50Iv9$react.useState(null); - return /*#__PURE__*/$50Iv9$react.createElement($34310caa050a8d63$var$PopperProvider, { - scope: __scopePopper, - anchor: anchor, - onAnchorChange: setAnchor - }, children); -}; -/*#__PURE__*/ -Object.assign($34310caa050a8d63$export$badac9ada3a0bdf9, { - displayName: $34310caa050a8d63$var$POPPER_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * PopperAnchor - * -----------------------------------------------------------------------------------------------*/ -const $34310caa050a8d63$var$ANCHOR_NAME = 'PopperAnchor'; -const $34310caa050a8d63$export$ecd4e1ccab6ed6d = /*#__PURE__*/$50Iv9$react.forwardRef((props, forwardedRef) => { - const { - __scopePopper: __scopePopper, - virtualRef: virtualRef, - ...anchorProps - } = props; - const context = $34310caa050a8d63$var$usePopperContext($34310caa050a8d63$var$ANCHOR_NAME, __scopePopper); - const ref = $50Iv9$react.useRef(null); - const composedRefs = $50Iv9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); - $50Iv9$react.useEffect(() => { - // Consumer can anchor the popper to something that isn't - // a DOM node e.g. pointer position, so we override the - // `anchorRef` with their virtual ref in this case. - context.onAnchorChange((virtualRef === null || virtualRef === void 0 ? void 0 : virtualRef.current) || ref.current); - }); - return virtualRef ? null : /*#__PURE__*/$50Iv9$react.createElement($50Iv9$radixuireactprimitive.Primitive.div, $parcel$interopDefault($50Iv9$babelruntimehelpersextends)({}, anchorProps, { - ref: composedRefs - })); -}); -/*#__PURE__*/ -Object.assign($34310caa050a8d63$export$ecd4e1ccab6ed6d, { - displayName: $34310caa050a8d63$var$ANCHOR_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * PopperContent - * -----------------------------------------------------------------------------------------------*/ -const $34310caa050a8d63$var$CONTENT_NAME = 'PopperContent'; -const [$34310caa050a8d63$var$PopperContentProvider, $34310caa050a8d63$var$useContentContext] = $34310caa050a8d63$var$createPopperContext($34310caa050a8d63$var$CONTENT_NAME); -const $34310caa050a8d63$export$bc4ae5855d3c4fc = /*#__PURE__*/$50Iv9$react.forwardRef((props, forwardedRef) => { - var _arrowSize$width, _arrowSize$height, _middlewareData$arrow, _middlewareData$arrow2, _middlewareData$arrow3, _middlewareData$trans, _middlewareData$trans2, _middlewareData$hide; - const { - __scopePopper: __scopePopper, - side = 'bottom', - sideOffset = 0, - align = 'center', - alignOffset = 0, - arrowPadding = 0, - collisionBoundary = [], - collisionPadding: collisionPaddingProp = 0, - sticky = 'partial', - hideWhenDetached = false, - avoidCollisions = true, - onPlaced: onPlaced, - ...contentProps - } = props; - const context = $34310caa050a8d63$var$usePopperContext($34310caa050a8d63$var$CONTENT_NAME, __scopePopper); - const [content, setContent] = $50Iv9$react.useState(null); - const composedRefs = $50Iv9$radixuireactcomposerefs.useComposedRefs(forwardedRef, node => setContent(node)); - const [arrow, setArrow] = $50Iv9$react.useState(null); - const arrowSize = $50Iv9$radixuireactusesize.useSize(arrow); - const arrowWidth = (_arrowSize$width = arrowSize === null || arrowSize === void 0 ? void 0 : arrowSize.width) !== null && _arrowSize$width !== void 0 ? _arrowSize$width : 0; - const arrowHeight = (_arrowSize$height = arrowSize === null || arrowSize === void 0 ? void 0 : arrowSize.height) !== null && _arrowSize$height !== void 0 ? _arrowSize$height : 0; - const desiredPlacement = side + (align !== 'center' ? '-' + align : ''); - const collisionPadding = typeof collisionPaddingProp === 'number' ? collisionPaddingProp : { - top: 0, - right: 0, - bottom: 0, - left: 0, - ...collisionPaddingProp - }; - const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary]; - const hasExplicitBoundaries = boundary.length > 0; - const detectOverflowOptions = { - padding: collisionPadding, - boundary: boundary.filter($34310caa050a8d63$var$isNotNull), - // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries - altBoundary: hasExplicitBoundaries - }; - const { - refs: refs, - floatingStyles: floatingStyles, - placement: placement, - isPositioned: isPositioned, - middlewareData: middlewareData - } = $50Iv9$floatinguireactdom.useFloating({ - // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues - strategy: 'fixed', - placement: desiredPlacement, - whileElementsMounted: $50Iv9$floatinguireactdom.autoUpdate, - elements: { - reference: context.anchor - }, - middleware: [$50Iv9$floatinguireactdom.offset({ - mainAxis: sideOffset + arrowHeight, - alignmentAxis: alignOffset - }), avoidCollisions && $50Iv9$floatinguireactdom.shift({ - mainAxis: true, - crossAxis: false, - limiter: sticky === 'partial' ? $50Iv9$floatinguireactdom.limitShift() : undefined, - ...detectOverflowOptions - }), avoidCollisions && $50Iv9$floatinguireactdom.flip({ - ...detectOverflowOptions - }), $50Iv9$floatinguireactdom.size({ - ...detectOverflowOptions, - apply: _ref => { - let { - elements: elements, - rects: rects, - availableWidth: availableWidth, - availableHeight: availableHeight - } = _ref; - const { - width: anchorWidth, - height: anchorHeight - } = rects.reference; - const contentStyle = elements.floating.style; - contentStyle.setProperty('--radix-popper-available-width', `${availableWidth}px`); - contentStyle.setProperty('--radix-popper-available-height', `${availableHeight}px`); - contentStyle.setProperty('--radix-popper-anchor-width', `${anchorWidth}px`); - contentStyle.setProperty('--radix-popper-anchor-height', `${anchorHeight}px`); - } - }), arrow && $50Iv9$floatinguireactdom.arrow({ - element: arrow, - padding: arrowPadding - }), $34310caa050a8d63$var$transformOrigin({ - arrowWidth: arrowWidth, - arrowHeight: arrowHeight - }), hideWhenDetached && $50Iv9$floatinguireactdom.hide({ - strategy: 'referenceHidden' - })] - }); - const [placedSide, placedAlign] = $34310caa050a8d63$var$getSideAndAlignFromPlacement(placement); - const handlePlaced = $50Iv9$radixuireactusecallbackref.useCallbackRef(onPlaced); - $50Iv9$radixuireactuselayouteffect.useLayoutEffect(() => { - if (isPositioned) handlePlaced === null || handlePlaced === void 0 || handlePlaced(); - }, [isPositioned, handlePlaced]); - const arrowX = (_middlewareData$arrow = middlewareData.arrow) === null || _middlewareData$arrow === void 0 ? void 0 : _middlewareData$arrow.x; - const arrowY = (_middlewareData$arrow2 = middlewareData.arrow) === null || _middlewareData$arrow2 === void 0 ? void 0 : _middlewareData$arrow2.y; - const cannotCenterArrow = ((_middlewareData$arrow3 = middlewareData.arrow) === null || _middlewareData$arrow3 === void 0 ? void 0 : _middlewareData$arrow3.centerOffset) !== 0; - const [contentZIndex, setContentZIndex] = $50Iv9$react.useState(); - $50Iv9$radixuireactuselayouteffect.useLayoutEffect(() => { - if (content) setContentZIndex(window.getComputedStyle(content).zIndex); - }, [content]); - return /*#__PURE__*/$50Iv9$react.createElement("div", { - ref: refs.setFloating, - "data-radix-popper-content-wrapper": "", - style: { - ...floatingStyles, - transform: isPositioned ? floatingStyles.transform : 'translate(0, -200%)', - // keep off the page when measuring - minWidth: 'max-content', - zIndex: contentZIndex, - ['--radix-popper-transform-origin']: [(_middlewareData$trans = middlewareData.transformOrigin) === null || _middlewareData$trans === void 0 ? void 0 : _middlewareData$trans.x, (_middlewareData$trans2 = middlewareData.transformOrigin) === null || _middlewareData$trans2 === void 0 ? void 0 : _middlewareData$trans2.y].join(' ') - } // Floating UI interally calculates logical alignment based the `dir` attribute on - , - - dir: props.dir - }, /*#__PURE__*/$50Iv9$react.createElement($34310caa050a8d63$var$PopperContentProvider, { - scope: __scopePopper, - placedSide: placedSide, - onArrowChange: setArrow, - arrowX: arrowX, - arrowY: arrowY, - shouldHideArrow: cannotCenterArrow - }, /*#__PURE__*/$50Iv9$react.createElement($50Iv9$radixuireactprimitive.Primitive.div, $parcel$interopDefault($50Iv9$babelruntimehelpersextends)({ - "data-side": placedSide, - "data-align": placedAlign - }, contentProps, { - ref: composedRefs, - style: { - ...contentProps.style, - // if the PopperContent hasn't been placed yet (not all measurements done) - // we prevent animations so that users's animation don't kick in too early referring wrong sides - animation: !isPositioned ? 'none' : undefined, - // hide the content if using the hide middleware and should be hidden - opacity: (_middlewareData$hide = middlewareData.hide) !== null && _middlewareData$hide !== void 0 && _middlewareData$hide.referenceHidden ? 0 : undefined - } - })))); -}); -/*#__PURE__*/ -Object.assign($34310caa050a8d63$export$bc4ae5855d3c4fc, { - displayName: $34310caa050a8d63$var$CONTENT_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * PopperArrow - * -----------------------------------------------------------------------------------------------*/ -const $34310caa050a8d63$var$ARROW_NAME = 'PopperArrow'; -const $34310caa050a8d63$var$OPPOSITE_SIDE = { - top: 'bottom', - right: 'left', - bottom: 'top', - left: 'right' -}; -const $34310caa050a8d63$export$79d62cd4e10a3fd0 = /*#__PURE__*/$50Iv9$react.forwardRef(function $34310caa050a8d63$export$79d62cd4e10a3fd0(props, forwardedRef) { - const { - __scopePopper: __scopePopper, - ...arrowProps - } = props; - const contentContext = $34310caa050a8d63$var$useContentContext($34310caa050a8d63$var$ARROW_NAME, __scopePopper); - const baseSide = $34310caa050a8d63$var$OPPOSITE_SIDE[contentContext.placedSide]; - return /*#__PURE__*/ (// we have to use an extra wrapper because `ResizeObserver` (used by `useSize`) - // doesn't report size as we'd expect on SVG elements. - // it reports their bounding box which is effectively the largest path inside the SVG. - $50Iv9$react.createElement("span", { - ref: contentContext.onArrowChange, - style: { - position: 'absolute', - left: contentContext.arrowX, - top: contentContext.arrowY, - [baseSide]: 0, - transformOrigin: { - top: '', - right: '0 0', - bottom: 'center 0', - left: '100% 0' - }[contentContext.placedSide], - transform: { - top: 'translateY(100%)', - right: 'translateY(50%) rotate(90deg) translateX(-50%)', - bottom: `rotate(180deg)`, - left: 'translateY(50%) rotate(-90deg) translateX(50%)' - }[contentContext.placedSide], - visibility: contentContext.shouldHideArrow ? 'hidden' : undefined - } - }, /*#__PURE__*/$50Iv9$react.createElement($50Iv9$radixuireactarrow.Root, $parcel$interopDefault($50Iv9$babelruntimehelpersextends)({}, arrowProps, { - ref: forwardedRef, - style: { - ...arrowProps.style, - // ensures the element can be measured correctly (mostly for if SVG) - display: 'block' - } - }))) - ); -}); -/*#__PURE__*/ -Object.assign($34310caa050a8d63$export$79d62cd4e10a3fd0, { - displayName: $34310caa050a8d63$var$ARROW_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -function $34310caa050a8d63$var$isNotNull(value) { - return value !== null; -} -const $34310caa050a8d63$var$transformOrigin = options => ({ - name: 'transformOrigin', - options: options, - fn(data) { - var _middlewareData$arrow4, _middlewareData$arrow5, _middlewareData$arrow6, _middlewareData$arrow7, _middlewareData$arrow8; - const { - placement: placement, - rects: rects, - middlewareData: middlewareData - } = data; - const cannotCenterArrow = ((_middlewareData$arrow4 = middlewareData.arrow) === null || _middlewareData$arrow4 === void 0 ? void 0 : _middlewareData$arrow4.centerOffset) !== 0; - const isArrowHidden = cannotCenterArrow; - const arrowWidth = isArrowHidden ? 0 : options.arrowWidth; - const arrowHeight = isArrowHidden ? 0 : options.arrowHeight; - const [placedSide, placedAlign] = $34310caa050a8d63$var$getSideAndAlignFromPlacement(placement); - const noArrowAlign = { - start: '0%', - center: '50%', - end: '100%' - }[placedAlign]; - const arrowXCenter = ((_middlewareData$arrow5 = (_middlewareData$arrow6 = middlewareData.arrow) === null || _middlewareData$arrow6 === void 0 ? void 0 : _middlewareData$arrow6.x) !== null && _middlewareData$arrow5 !== void 0 ? _middlewareData$arrow5 : 0) + arrowWidth / 2; - const arrowYCenter = ((_middlewareData$arrow7 = (_middlewareData$arrow8 = middlewareData.arrow) === null || _middlewareData$arrow8 === void 0 ? void 0 : _middlewareData$arrow8.y) !== null && _middlewareData$arrow7 !== void 0 ? _middlewareData$arrow7 : 0) + arrowHeight / 2; - let x = ''; - let y = ''; - if (placedSide === 'bottom') { - x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`; - y = `${-arrowHeight}px`; - } else if (placedSide === 'top') { - x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`; - y = `${rects.floating.height + arrowHeight}px`; - } else if (placedSide === 'right') { - x = `${-arrowHeight}px`; - y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`; - } else if (placedSide === 'left') { - x = `${rects.floating.width + arrowHeight}px`; - y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`; - } - return { - data: { - x: x, - y: y - } - }; - } -}); -function $34310caa050a8d63$var$getSideAndAlignFromPlacement(placement) { - const [side, align = 'center'] = placement.split('-'); - return [side, align]; -} -const $34310caa050a8d63$export$be92b6f5f03c0fe9 = $34310caa050a8d63$export$badac9ada3a0bdf9; -const $34310caa050a8d63$export$b688253958b8dfe7 = $34310caa050a8d63$export$ecd4e1ccab6ed6d; -const $34310caa050a8d63$export$7c6e2c02157bb7d2 = $34310caa050a8d63$export$bc4ae5855d3c4fc; -const $34310caa050a8d63$export$21b07c8f274aebd5 = $34310caa050a8d63$export$79d62cd4e10a3fd0; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-portal/dist/index.js": -/*!******************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-portal/dist/index.js ***! - \******************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $amzHf$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $amzHf$react = __webpack_require__(/*! react */ "react"); -var $amzHf$reactdom = __webpack_require__(/*! react-dom */ "react-dom"); -var $amzHf$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "Portal", () => $913a70b877676c16$export$602eac185826482c); -$parcel$export(module.exports, "Root", () => $913a70b877676c16$export$be92b6f5f03c0fe9); - -/* ------------------------------------------------------------------------------------------------- - * Portal - * -----------------------------------------------------------------------------------------------*/ -const $913a70b877676c16$var$PORTAL_NAME = 'Portal'; -const $913a70b877676c16$export$602eac185826482c = /*#__PURE__*/$amzHf$react.forwardRef((props, forwardedRef) => { - var _globalThis$document; - const { - container = globalThis === null || globalThis === void 0 ? void 0 : (_globalThis$document = globalThis.document) === null || _globalThis$document === void 0 ? void 0 : _globalThis$document.body, - ...portalProps - } = props; - return container ? /*#__PURE__*/$parcel$interopDefault($amzHf$reactdom).createPortal( /*#__PURE__*/$amzHf$react.createElement($amzHf$radixuireactprimitive.Primitive.div, $parcel$interopDefault($amzHf$babelruntimehelpersextends)({}, portalProps, { - ref: forwardedRef - })), container) : null; -}); -/*#__PURE__*/ -Object.assign($913a70b877676c16$export$602eac185826482c, { - displayName: $913a70b877676c16$var$PORTAL_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -const $913a70b877676c16$export$be92b6f5f03c0fe9 = $913a70b877676c16$export$602eac185826482c; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-presence/dist/index.js": -/*!********************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-presence/dist/index.js ***! - \********************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $fnLeV$react = __webpack_require__(/*! react */ "react"); -var $fnLeV$reactdom = __webpack_require__(/*! react-dom */ "react-dom"); -var $fnLeV$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $fnLeV$radixuireactuselayouteffect = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "Presence", () => $a2fa0214bb2735a1$export$99c2b779aa4e8b8b); -function $8f63844556d0d3cd$export$3e6543de14f8614f(initialState, machine) { - return $fnLeV$react.useReducer((state, event) => { - const nextState = machine[state][event]; - return nextState !== null && nextState !== void 0 ? nextState : state; - }, initialState); -} -const $a2fa0214bb2735a1$export$99c2b779aa4e8b8b = props => { - const { - present: present, - children: children - } = props; - const presence = $a2fa0214bb2735a1$var$usePresence(present); - const child = typeof children === 'function' ? children({ - present: presence.isPresent - }) : $fnLeV$react.Children.only(children); - const ref = $fnLeV$radixuireactcomposerefs.useComposedRefs(presence.ref, child.ref); - const forceMount = typeof children === 'function'; - return forceMount || presence.isPresent ? /*#__PURE__*/$fnLeV$react.cloneElement(child, { - ref: ref - }) : null; -}; -$a2fa0214bb2735a1$export$99c2b779aa4e8b8b.displayName = 'Presence'; -/* ------------------------------------------------------------------------------------------------- - * usePresence - * -----------------------------------------------------------------------------------------------*/ -function $a2fa0214bb2735a1$var$usePresence(present) { - const [node1, setNode] = $fnLeV$react.useState(); - const stylesRef = $fnLeV$react.useRef({}); - const prevPresentRef = $fnLeV$react.useRef(present); - const prevAnimationNameRef = $fnLeV$react.useRef('none'); - const initialState = present ? 'mounted' : 'unmounted'; - const [state, send] = $8f63844556d0d3cd$export$3e6543de14f8614f(initialState, { - mounted: { - UNMOUNT: 'unmounted', - ANIMATION_OUT: 'unmountSuspended' - }, - unmountSuspended: { - MOUNT: 'mounted', - ANIMATION_END: 'unmounted' - }, - unmounted: { - MOUNT: 'mounted' - } - }); - $fnLeV$react.useEffect(() => { - const currentAnimationName = $a2fa0214bb2735a1$var$getAnimationName(stylesRef.current); - prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none'; - }, [state]); - $fnLeV$radixuireactuselayouteffect.useLayoutEffect(() => { - const styles = stylesRef.current; - const wasPresent = prevPresentRef.current; - const hasPresentChanged = wasPresent !== present; - if (hasPresentChanged) { - const prevAnimationName = prevAnimationNameRef.current; - const currentAnimationName = $a2fa0214bb2735a1$var$getAnimationName(styles); - if (present) send('MOUNT');else if (currentAnimationName === 'none' || (styles === null || styles === void 0 ? void 0 : styles.display) === 'none') - // If there is no exit animation or the element is hidden, animations won't run - // so we unmount instantly - send('UNMOUNT');else { - /** - * When `present` changes to `false`, we check changes to animation-name to - * determine whether an animation has started. We chose this approach (reading - * computed styles) because there is no `animationrun` event and `animationstart` - * fires after `animation-delay` has expired which would be too late. - */ - const isAnimating = prevAnimationName !== currentAnimationName; - if (wasPresent && isAnimating) send('ANIMATION_OUT');else send('UNMOUNT'); - } - prevPresentRef.current = present; - } - }, [present, send]); - $fnLeV$radixuireactuselayouteffect.useLayoutEffect(() => { - if (node1) { - /** - * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel` - * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we - * make sure we only trigger ANIMATION_END for the currently active animation. - */ - const handleAnimationEnd = event => { - const currentAnimationName = $a2fa0214bb2735a1$var$getAnimationName(stylesRef.current); - const isCurrentAnimation = currentAnimationName.includes(event.animationName); - if (event.target === node1 && isCurrentAnimation) - // With React 18 concurrency this update is applied - // a frame after the animation ends, creating a flash of visible content. - // By manually flushing we ensure they sync within a frame, removing the flash. - $fnLeV$reactdom.flushSync(() => send('ANIMATION_END')); - }; - const handleAnimationStart = event => { - if (event.target === node1) - // if animation occurred, store its name as the previous animation. - prevAnimationNameRef.current = $a2fa0214bb2735a1$var$getAnimationName(stylesRef.current); - }; - node1.addEventListener('animationstart', handleAnimationStart); - node1.addEventListener('animationcancel', handleAnimationEnd); - node1.addEventListener('animationend', handleAnimationEnd); - return () => { - node1.removeEventListener('animationstart', handleAnimationStart); - node1.removeEventListener('animationcancel', handleAnimationEnd); - node1.removeEventListener('animationend', handleAnimationEnd); - }; - } else - // Transition to the unmounted state if the node is removed prematurely. - // We avoid doing so during cleanup as the node may change but still exist. - send('ANIMATION_END'); - }, [node1, send]); - return { - isPresent: ['mounted', 'unmountSuspended'].includes(state), - ref: $fnLeV$react.useCallback(node => { - if (node) stylesRef.current = getComputedStyle(node); - setNode(node); - }, []) - }; -} -/* -----------------------------------------------------------------------------------------------*/ -function $a2fa0214bb2735a1$var$getAnimationName(styles) { - return (styles === null || styles === void 0 ? void 0 : styles.animationName) || 'none'; -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-primitive/dist/index.js": -/*!*********************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-primitive/dist/index.js ***! - \*********************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $iMixA$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $iMixA$react = __webpack_require__(/*! react */ "react"); -var $iMixA$reactdom = __webpack_require__(/*! react-dom */ "react-dom"); -var $iMixA$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "Primitive", () => $c3def6332c2749a6$export$250ffa63cdc0d034); -$parcel$export(module.exports, "Root", () => $c3def6332c2749a6$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "dispatchDiscreteCustomEvent", () => $c3def6332c2749a6$export$6d1a0317bde7de7f); -const $c3def6332c2749a6$var$NODES = ['a', 'button', 'div', 'form', 'h2', 'h3', 'img', 'input', 'label', 'li', 'nav', 'ol', 'p', 'span', 'svg', 'ul']; // Temporary while we await merge of this fix: -// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396 -// prettier-ignore -/* ------------------------------------------------------------------------------------------------- - * Primitive - * -----------------------------------------------------------------------------------------------*/ -const $c3def6332c2749a6$export$250ffa63cdc0d034 = $c3def6332c2749a6$var$NODES.reduce((primitive, node) => { - const Node = /*#__PURE__*/$iMixA$react.forwardRef((props, forwardedRef) => { - const { - asChild: asChild, - ...primitiveProps - } = props; - const Comp = asChild ? $iMixA$radixuireactslot.Slot : node; - $iMixA$react.useEffect(() => { - window[Symbol.for('radix-ui')] = true; - }, []); - return /*#__PURE__*/$iMixA$react.createElement(Comp, $parcel$interopDefault($iMixA$babelruntimehelpersextends)({}, primitiveProps, { - ref: forwardedRef - })); - }); - Node.displayName = `Primitive.${node}`; - return { - ...primitive, - [node]: Node - }; -}, {}); -/* ------------------------------------------------------------------------------------------------- - * Utils - * -----------------------------------------------------------------------------------------------*/ /** - * Flush custom event dispatch - * https://github.com/radix-ui/primitives/pull/1378 - * - * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types. - * - * Internally, React prioritises events in the following order: - * - discrete - * - continuous - * - default - * - * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350 - * - * `discrete` is an important distinction as updates within these events are applied immediately. - * React however, is not able to infer the priority of custom event types due to how they are detected internally. - * Because of this, it's possible for updates from custom events to be unexpectedly batched when - * dispatched by another `discrete` event. - * - * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch. - * This utility should be used when dispatching a custom event from within another `discrete` event, this utility - * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event. - * For example: - * - * dispatching a known click 👎 - * target.dispatchEvent(new Event(‘click’)) - * - * dispatching a custom type within a non-discrete event 👎 - * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))} - * - * dispatching a custom type within a `discrete` event 👍 - * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))} - * - * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use - * this utility with them. This is because it's possible for those handlers to be called implicitly during render - * e.g. when focus is within a component as it is unmounted, or when managing focus on mount. - */ -function $c3def6332c2749a6$export$6d1a0317bde7de7f(target, event) { - if (target) $iMixA$reactdom.flushSync(() => target.dispatchEvent(event)); -} -/* -----------------------------------------------------------------------------------------------*/ -const $c3def6332c2749a6$export$be92b6f5f03c0fe9 = $c3def6332c2749a6$export$250ffa63cdc0d034; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-roving-focus/dist/index.js": -/*!************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-roving-focus/dist/index.js ***! - \************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $9QJ9Y$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $9QJ9Y$react = __webpack_require__(/*! react */ "react"); -var $9QJ9Y$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); -var $9QJ9Y$radixuireactcollection = __webpack_require__(/*! @radix-ui/react-collection */ "../../../node_modules/@radix-ui/react-collection/dist/index.js"); -var $9QJ9Y$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $9QJ9Y$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); -var $9QJ9Y$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); -var $9QJ9Y$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -var $9QJ9Y$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); -var $9QJ9Y$radixuireactusecontrollablestate = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js"); -var $9QJ9Y$radixuireactdirection = __webpack_require__(/*! @radix-ui/react-direction */ "../../../node_modules/@radix-ui/react-direction/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "createRovingFocusGroupScope", () => $0063afae63b3fa70$export$c7109489551a4f4); -$parcel$export(module.exports, "RovingFocusGroup", () => $0063afae63b3fa70$export$8699f7c8af148338); -$parcel$export(module.exports, "RovingFocusGroupItem", () => $0063afae63b3fa70$export$ab9df7c53fe8454); -$parcel$export(module.exports, "Root", () => $0063afae63b3fa70$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "Item", () => $0063afae63b3fa70$export$6d08773d2e66f8f2); -const $0063afae63b3fa70$var$ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus'; -const $0063afae63b3fa70$var$EVENT_OPTIONS = { - bubbles: false, - cancelable: true -}; -/* ------------------------------------------------------------------------------------------------- - * RovingFocusGroup - * -----------------------------------------------------------------------------------------------*/ -const $0063afae63b3fa70$var$GROUP_NAME = 'RovingFocusGroup'; -const [$0063afae63b3fa70$var$Collection, $0063afae63b3fa70$var$useCollection, $0063afae63b3fa70$var$createCollectionScope] = $9QJ9Y$radixuireactcollection.createCollection($0063afae63b3fa70$var$GROUP_NAME); -const [$0063afae63b3fa70$var$createRovingFocusGroupContext, $0063afae63b3fa70$export$c7109489551a4f4] = $9QJ9Y$radixuireactcontext.createContextScope($0063afae63b3fa70$var$GROUP_NAME, [$0063afae63b3fa70$var$createCollectionScope]); -const [$0063afae63b3fa70$var$RovingFocusProvider, $0063afae63b3fa70$var$useRovingFocusContext] = $0063afae63b3fa70$var$createRovingFocusGroupContext($0063afae63b3fa70$var$GROUP_NAME); -const $0063afae63b3fa70$export$8699f7c8af148338 = /*#__PURE__*/$9QJ9Y$react.forwardRef((props, forwardedRef) => { - return /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$Collection.Provider, { - scope: props.__scopeRovingFocusGroup - }, /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$Collection.Slot, { - scope: props.__scopeRovingFocusGroup - }, /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$RovingFocusGroupImpl, $parcel$interopDefault($9QJ9Y$babelruntimehelpersextends)({}, props, { - ref: forwardedRef - })))); -}); -/*#__PURE__*/ -Object.assign($0063afae63b3fa70$export$8699f7c8af148338, { - displayName: $0063afae63b3fa70$var$GROUP_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -const $0063afae63b3fa70$var$RovingFocusGroupImpl = /*#__PURE__*/$9QJ9Y$react.forwardRef((props, forwardedRef) => { - const { - __scopeRovingFocusGroup: __scopeRovingFocusGroup, - orientation: orientation, - loop = false, - dir: dir, - currentTabStopId: currentTabStopIdProp, - defaultCurrentTabStopId: defaultCurrentTabStopId, - onCurrentTabStopIdChange: onCurrentTabStopIdChange, - onEntryFocus: onEntryFocus, - ...groupProps - } = props; - const ref = $9QJ9Y$react.useRef(null); - const composedRefs = $9QJ9Y$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); - const direction = $9QJ9Y$radixuireactdirection.useDirection(dir); - const [currentTabStopId = null, setCurrentTabStopId] = $9QJ9Y$radixuireactusecontrollablestate.useControllableState({ - prop: currentTabStopIdProp, - defaultProp: defaultCurrentTabStopId, - onChange: onCurrentTabStopIdChange - }); - const [isTabbingBackOut, setIsTabbingBackOut] = $9QJ9Y$react.useState(false); - const handleEntryFocus = $9QJ9Y$radixuireactusecallbackref.useCallbackRef(onEntryFocus); - const getItems = $0063afae63b3fa70$var$useCollection(__scopeRovingFocusGroup); - const isClickFocusRef = $9QJ9Y$react.useRef(false); - const [focusableItemsCount, setFocusableItemsCount] = $9QJ9Y$react.useState(0); - $9QJ9Y$react.useEffect(() => { - const node = ref.current; - if (node) { - node.addEventListener($0063afae63b3fa70$var$ENTRY_FOCUS, handleEntryFocus); - return () => node.removeEventListener($0063afae63b3fa70$var$ENTRY_FOCUS, handleEntryFocus); - } - }, [handleEntryFocus]); - return /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$RovingFocusProvider, { - scope: __scopeRovingFocusGroup, - orientation: orientation, - dir: direction, - loop: loop, - currentTabStopId: currentTabStopId, - onItemFocus: $9QJ9Y$react.useCallback(tabStopId => setCurrentTabStopId(tabStopId), [setCurrentTabStopId]), - onItemShiftTab: $9QJ9Y$react.useCallback(() => setIsTabbingBackOut(true), []), - onFocusableItemAdd: $9QJ9Y$react.useCallback(() => setFocusableItemsCount(prevCount => prevCount + 1), []), - onFocusableItemRemove: $9QJ9Y$react.useCallback(() => setFocusableItemsCount(prevCount => prevCount - 1), []) - }, /*#__PURE__*/$9QJ9Y$react.createElement($9QJ9Y$radixuireactprimitive.Primitive.div, $parcel$interopDefault($9QJ9Y$babelruntimehelpersextends)({ - tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0, - "data-orientation": orientation - }, groupProps, { - ref: composedRefs, - style: { - outline: 'none', - ...props.style - }, - onMouseDown: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onMouseDown, () => { - isClickFocusRef.current = true; - }), - onFocus: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onFocus, event => { - // We normally wouldn't need this check, because we already check - // that the focus is on the current target and not bubbling to it. - // We do this because Safari doesn't focus buttons when clicked, and - // instead, the wrapper will get focused and not through a bubbling event. - const isKeyboardFocus = !isClickFocusRef.current; - if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) { - const entryFocusEvent = new CustomEvent($0063afae63b3fa70$var$ENTRY_FOCUS, $0063afae63b3fa70$var$EVENT_OPTIONS); - event.currentTarget.dispatchEvent(entryFocusEvent); - if (!entryFocusEvent.defaultPrevented) { - const items = getItems().filter(item => item.focusable); - const activeItem = items.find(item => item.active); - const currentItem = items.find(item => item.id === currentTabStopId); - const candidateItems = [activeItem, currentItem, ...items].filter(Boolean); - const candidateNodes = candidateItems.map(item => item.ref.current); - $0063afae63b3fa70$var$focusFirst(candidateNodes); - } - } - isClickFocusRef.current = false; - }), - onBlur: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false)) - }))); -}); -/* ------------------------------------------------------------------------------------------------- - * RovingFocusGroupItem - * -----------------------------------------------------------------------------------------------*/ -const $0063afae63b3fa70$var$ITEM_NAME = 'RovingFocusGroupItem'; -const $0063afae63b3fa70$export$ab9df7c53fe8454 = /*#__PURE__*/$9QJ9Y$react.forwardRef((props, forwardedRef) => { - const { - __scopeRovingFocusGroup: __scopeRovingFocusGroup, - focusable = true, - active = false, - tabStopId: tabStopId, - ...itemProps - } = props; - const autoId = $9QJ9Y$radixuireactid.useId(); - const id = tabStopId || autoId; - const context = $0063afae63b3fa70$var$useRovingFocusContext($0063afae63b3fa70$var$ITEM_NAME, __scopeRovingFocusGroup); - const isCurrentTabStop = context.currentTabStopId === id; - const getItems = $0063afae63b3fa70$var$useCollection(__scopeRovingFocusGroup); - const { - onFocusableItemAdd: onFocusableItemAdd, - onFocusableItemRemove: onFocusableItemRemove - } = context; - $9QJ9Y$react.useEffect(() => { - if (focusable) { - onFocusableItemAdd(); - return () => onFocusableItemRemove(); - } - }, [focusable, onFocusableItemAdd, onFocusableItemRemove]); - return /*#__PURE__*/$9QJ9Y$react.createElement($0063afae63b3fa70$var$Collection.ItemSlot, { - scope: __scopeRovingFocusGroup, - id: id, - focusable: focusable, - active: active - }, /*#__PURE__*/$9QJ9Y$react.createElement($9QJ9Y$radixuireactprimitive.Primitive.span, $parcel$interopDefault($9QJ9Y$babelruntimehelpersextends)({ - tabIndex: isCurrentTabStop ? 0 : -1, - "data-orientation": context.orientation - }, itemProps, { - ref: forwardedRef, - onMouseDown: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onMouseDown, event => { - // We prevent focusing non-focusable items on `mousedown`. - // Even though the item has tabIndex={-1}, that only means take it out of the tab order. - if (!focusable) event.preventDefault(); // Safari doesn't focus a button when clicked so we run our logic on mousedown also - else context.onItemFocus(id); - }), - onFocus: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onFocus, () => context.onItemFocus(id)), - onKeyDown: $9QJ9Y$radixuiprimitive.composeEventHandlers(props.onKeyDown, event => { - if (event.key === 'Tab' && event.shiftKey) { - context.onItemShiftTab(); - return; - } - if (event.target !== event.currentTarget) return; - const focusIntent = $0063afae63b3fa70$var$getFocusIntent(event, context.orientation, context.dir); - if (focusIntent !== undefined) { - event.preventDefault(); - const items = getItems().filter(item => item.focusable); - let candidateNodes = items.map(item => item.ref.current); - if (focusIntent === 'last') candidateNodes.reverse();else if (focusIntent === 'prev' || focusIntent === 'next') { - if (focusIntent === 'prev') candidateNodes.reverse(); - const currentIndex = candidateNodes.indexOf(event.currentTarget); - candidateNodes = context.loop ? $0063afae63b3fa70$var$wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1); - } - /** - * Imperative focus during keydown is risky so we prevent React's batching updates - * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332 - */ - setTimeout(() => $0063afae63b3fa70$var$focusFirst(candidateNodes)); - } - }) - }))); -}); -/*#__PURE__*/ -Object.assign($0063afae63b3fa70$export$ab9df7c53fe8454, { - displayName: $0063afae63b3fa70$var$ITEM_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ // prettier-ignore -const $0063afae63b3fa70$var$MAP_KEY_TO_FOCUS_INTENT = { - ArrowLeft: 'prev', - ArrowUp: 'prev', - ArrowRight: 'next', - ArrowDown: 'next', - PageUp: 'first', - Home: 'first', - PageDown: 'last', - End: 'last' -}; -function $0063afae63b3fa70$var$getDirectionAwareKey(key, dir) { - if (dir !== 'rtl') return key; - return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key; -} -function $0063afae63b3fa70$var$getFocusIntent(event, orientation, dir) { - const key = $0063afae63b3fa70$var$getDirectionAwareKey(event.key, dir); - if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined; - if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined; - return $0063afae63b3fa70$var$MAP_KEY_TO_FOCUS_INTENT[key]; -} -function $0063afae63b3fa70$var$focusFirst(candidates) { - const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement; - for (const candidate of candidates) { - // if focus is already where we want to go, we don't want to keep going through the candidates - if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return; - candidate.focus(); - if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return; - } -} -/** - * Wraps an array around itself at a given start index - * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']` - */ -function $0063afae63b3fa70$var$wrapArray(array, startIndex) { - return array.map((_, index) => array[(startIndex + index) % array.length]); -} -const $0063afae63b3fa70$export$be92b6f5f03c0fe9 = $0063afae63b3fa70$export$8699f7c8af148338; -const $0063afae63b3fa70$export$6d08773d2e66f8f2 = $0063afae63b3fa70$export$ab9df7c53fe8454; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-slot/dist/index.js": -/*!****************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-slot/dist/index.js ***! - \****************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $dAvBt$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $dAvBt$react = __webpack_require__(/*! react */ "react"); -var $dAvBt$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "Slot", () => $82dc8d030dec7549$export$8c6ed5c666ac1360); -$parcel$export(module.exports, "Slottable", () => $82dc8d030dec7549$export$d9f1ccf0bdb05d45); -$parcel$export(module.exports, "Root", () => $82dc8d030dec7549$export$be92b6f5f03c0fe9); - -/* ------------------------------------------------------------------------------------------------- - * Slot - * -----------------------------------------------------------------------------------------------*/ -const $82dc8d030dec7549$export$8c6ed5c666ac1360 = /*#__PURE__*/$dAvBt$react.forwardRef((props, forwardedRef) => { - const { - children: children, - ...slotProps - } = props; - const childrenArray = $dAvBt$react.Children.toArray(children); - const slottable = childrenArray.find($82dc8d030dec7549$var$isSlottable); - if (slottable) { - // the new element to render is the one passed as a child of `Slottable` - const newElement = slottable.props.children; - const newChildren = childrenArray.map(child => { - if (child === slottable) { - // because the new element will be the one rendered, we are only interested - // in grabbing its children (`newElement.props.children`) - if ($dAvBt$react.Children.count(newElement) > 1) return $dAvBt$react.Children.only(null); - return /*#__PURE__*/$dAvBt$react.isValidElement(newElement) ? newElement.props.children : null; - } else return child; - }); - return /*#__PURE__*/$dAvBt$react.createElement($82dc8d030dec7549$var$SlotClone, $parcel$interopDefault($dAvBt$babelruntimehelpersextends)({}, slotProps, { - ref: forwardedRef - }), /*#__PURE__*/$dAvBt$react.isValidElement(newElement) ? /*#__PURE__*/$dAvBt$react.cloneElement(newElement, undefined, newChildren) : null); - } - return /*#__PURE__*/$dAvBt$react.createElement($82dc8d030dec7549$var$SlotClone, $parcel$interopDefault($dAvBt$babelruntimehelpersextends)({}, slotProps, { - ref: forwardedRef - }), children); -}); -$82dc8d030dec7549$export$8c6ed5c666ac1360.displayName = 'Slot'; -/* ------------------------------------------------------------------------------------------------- - * SlotClone - * -----------------------------------------------------------------------------------------------*/ -const $82dc8d030dec7549$var$SlotClone = /*#__PURE__*/$dAvBt$react.forwardRef((props, forwardedRef) => { - const { - children: children, - ...slotProps - } = props; - if ( /*#__PURE__*/$dAvBt$react.isValidElement(children)) return /*#__PURE__*/$dAvBt$react.cloneElement(children, { - ...$82dc8d030dec7549$var$mergeProps(slotProps, children.props), - ref: forwardedRef ? $dAvBt$radixuireactcomposerefs.composeRefs(forwardedRef, children.ref) : children.ref - }); - return $dAvBt$react.Children.count(children) > 1 ? $dAvBt$react.Children.only(null) : null; -}); -$82dc8d030dec7549$var$SlotClone.displayName = 'SlotClone'; -/* ------------------------------------------------------------------------------------------------- - * Slottable - * -----------------------------------------------------------------------------------------------*/ -const $82dc8d030dec7549$export$d9f1ccf0bdb05d45 = _ref => { - let { - children: children - } = _ref; - return /*#__PURE__*/$dAvBt$react.createElement($dAvBt$react.Fragment, null, children); -}; -/* ---------------------------------------------------------------------------------------------- */ -function $82dc8d030dec7549$var$isSlottable(child) { - return /*#__PURE__*/$dAvBt$react.isValidElement(child) && child.type === $82dc8d030dec7549$export$d9f1ccf0bdb05d45; -} -function $82dc8d030dec7549$var$mergeProps(slotProps, childProps) { - // all child props should override - const overrideProps = { - ...childProps - }; - for (const propName in childProps) { - const slotPropValue = slotProps[propName]; - const childPropValue = childProps[propName]; - const isHandler = /^on[A-Z]/.test(propName); - if (isHandler) { - // if the handler exists on both, we compose them - if (slotPropValue && childPropValue) overrideProps[propName] = function () { - childPropValue(...arguments); - slotPropValue(...arguments); - };else if (slotPropValue) overrideProps[propName] = slotPropValue; - } else if (propName === 'style') overrideProps[propName] = { - ...slotPropValue, - ...childPropValue - };else if (propName === 'className') overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' '); - } - return { - ...slotProps, - ...overrideProps - }; -} -const $82dc8d030dec7549$export$be92b6f5f03c0fe9 = $82dc8d030dec7549$export$8c6ed5c666ac1360; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-tooltip/dist/index.js": -/*!*******************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-tooltip/dist/index.js ***! - \*******************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $iVrL9$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $iVrL9$react = __webpack_require__(/*! react */ "react"); -var $iVrL9$radixuiprimitive = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.js"); -var $iVrL9$radixuireactcomposerefs = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js"); -var $iVrL9$radixuireactcontext = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.js"); -var $iVrL9$radixuireactdismissablelayer = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js"); -var $iVrL9$radixuireactid = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.js"); -var $iVrL9$radixuireactpopper = __webpack_require__(/*! @radix-ui/react-popper */ "../../../node_modules/@radix-ui/react-popper/dist/index.js"); -var $iVrL9$radixuireactportal = __webpack_require__(/*! @radix-ui/react-portal */ "../../../node_modules/@radix-ui/react-portal/dist/index.js"); -var $iVrL9$radixuireactpresence = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.js"); -var $iVrL9$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -var $iVrL9$radixuireactslot = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.js"); -var $iVrL9$radixuireactusecontrollablestate = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js"); -var $iVrL9$radixuireactvisuallyhidden = __webpack_require__(/*! @radix-ui/react-visually-hidden */ "../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "createTooltipScope", () => $c34afbc43c90cc6f$export$1c540a2224f0d865); -$parcel$export(module.exports, "TooltipProvider", () => $c34afbc43c90cc6f$export$f78649fb9ca566b8); -$parcel$export(module.exports, "Tooltip", () => $c34afbc43c90cc6f$export$28c660c63b792dea); -$parcel$export(module.exports, "TooltipTrigger", () => $c34afbc43c90cc6f$export$8c610744efcf8a1d); -$parcel$export(module.exports, "TooltipPortal", () => $c34afbc43c90cc6f$export$7b36b8f925ab7497); -$parcel$export(module.exports, "TooltipContent", () => $c34afbc43c90cc6f$export$e9003e2be37ec060); -$parcel$export(module.exports, "TooltipArrow", () => $c34afbc43c90cc6f$export$c27ee0ad710f7559); -$parcel$export(module.exports, "Provider", () => $c34afbc43c90cc6f$export$2881499e37b75b9a); -$parcel$export(module.exports, "Root", () => $c34afbc43c90cc6f$export$be92b6f5f03c0fe9); -$parcel$export(module.exports, "Trigger", () => $c34afbc43c90cc6f$export$41fb9f06171c75f4); -$parcel$export(module.exports, "Portal", () => $c34afbc43c90cc6f$export$602eac185826482c); -$parcel$export(module.exports, "Content", () => $c34afbc43c90cc6f$export$7c6e2c02157bb7d2); -$parcel$export(module.exports, "Arrow", () => $c34afbc43c90cc6f$export$21b07c8f274aebd5); -const [$c34afbc43c90cc6f$var$createTooltipContext, $c34afbc43c90cc6f$export$1c540a2224f0d865] = $iVrL9$radixuireactcontext.createContextScope('Tooltip', [$iVrL9$radixuireactpopper.createPopperScope]); -const $c34afbc43c90cc6f$var$usePopperScope = $iVrL9$radixuireactpopper.createPopperScope(); -/* ------------------------------------------------------------------------------------------------- - * TooltipProvider - * -----------------------------------------------------------------------------------------------*/ -const $c34afbc43c90cc6f$var$PROVIDER_NAME = 'TooltipProvider'; -const $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION = 700; -const $c34afbc43c90cc6f$var$TOOLTIP_OPEN = 'tooltip.open'; -const [$c34afbc43c90cc6f$var$TooltipProviderContextProvider, $c34afbc43c90cc6f$var$useTooltipProviderContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$PROVIDER_NAME); -const $c34afbc43c90cc6f$export$f78649fb9ca566b8 = props => { - const { - __scopeTooltip: __scopeTooltip, - delayDuration = $c34afbc43c90cc6f$var$DEFAULT_DELAY_DURATION, - skipDelayDuration = 300, - disableHoverableContent = false, - children: children - } = props; - const [isOpenDelayed, setIsOpenDelayed] = $iVrL9$react.useState(true); - const isPointerInTransitRef = $iVrL9$react.useRef(false); - const skipDelayTimerRef = $iVrL9$react.useRef(0); - $iVrL9$react.useEffect(() => { - const skipDelayTimer = skipDelayTimerRef.current; - return () => window.clearTimeout(skipDelayTimer); - }, []); - return /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipProviderContextProvider, { - scope: __scopeTooltip, - isOpenDelayed: isOpenDelayed, - delayDuration: delayDuration, - onOpen: $iVrL9$react.useCallback(() => { - window.clearTimeout(skipDelayTimerRef.current); - setIsOpenDelayed(false); - }, []), - onClose: $iVrL9$react.useCallback(() => { - window.clearTimeout(skipDelayTimerRef.current); - skipDelayTimerRef.current = window.setTimeout(() => setIsOpenDelayed(true), skipDelayDuration); - }, [skipDelayDuration]), - isPointerInTransitRef: isPointerInTransitRef, - onPointerInTransitChange: $iVrL9$react.useCallback(inTransit => { - isPointerInTransitRef.current = inTransit; - }, []), - disableHoverableContent: disableHoverableContent - }, children); -}; -/*#__PURE__*/ -Object.assign($c34afbc43c90cc6f$export$f78649fb9ca566b8, { - displayName: $c34afbc43c90cc6f$var$PROVIDER_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * Tooltip - * -----------------------------------------------------------------------------------------------*/ -const $c34afbc43c90cc6f$var$TOOLTIP_NAME = 'Tooltip'; -const [$c34afbc43c90cc6f$var$TooltipContextProvider, $c34afbc43c90cc6f$var$useTooltipContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$TOOLTIP_NAME); -const $c34afbc43c90cc6f$export$28c660c63b792dea = props => { - const { - __scopeTooltip: __scopeTooltip, - children: children, - open: openProp, - defaultOpen = false, - onOpenChange: onOpenChange, - disableHoverableContent: disableHoverableContentProp, - delayDuration: delayDurationProp - } = props; - const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$TOOLTIP_NAME, props.__scopeTooltip); - const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip); - const [trigger, setTrigger] = $iVrL9$react.useState(null); - const contentId = $iVrL9$radixuireactid.useId(); - const openTimerRef = $iVrL9$react.useRef(0); - const disableHoverableContent = disableHoverableContentProp !== null && disableHoverableContentProp !== void 0 ? disableHoverableContentProp : providerContext.disableHoverableContent; - const delayDuration = delayDurationProp !== null && delayDurationProp !== void 0 ? delayDurationProp : providerContext.delayDuration; - const wasOpenDelayedRef = $iVrL9$react.useRef(false); - const [open1 = false, setOpen] = $iVrL9$radixuireactusecontrollablestate.useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: open => { - if (open) { - providerContext.onOpen(); // as `onChange` is called within a lifecycle method we - // avoid dispatching via `dispatchDiscreteCustomEvent`. - document.dispatchEvent(new CustomEvent($c34afbc43c90cc6f$var$TOOLTIP_OPEN)); - } else providerContext.onClose(); - onOpenChange === null || onOpenChange === void 0 || onOpenChange(open); - } - }); - const stateAttribute = $iVrL9$react.useMemo(() => { - return open1 ? wasOpenDelayedRef.current ? 'delayed-open' : 'instant-open' : 'closed'; - }, [open1]); - const handleOpen = $iVrL9$react.useCallback(() => { - window.clearTimeout(openTimerRef.current); - wasOpenDelayedRef.current = false; - setOpen(true); - }, [setOpen]); - const handleClose = $iVrL9$react.useCallback(() => { - window.clearTimeout(openTimerRef.current); - setOpen(false); - }, [setOpen]); - const handleDelayedOpen = $iVrL9$react.useCallback(() => { - window.clearTimeout(openTimerRef.current); - openTimerRef.current = window.setTimeout(() => { - wasOpenDelayedRef.current = true; - setOpen(true); - }, delayDuration); - }, [delayDuration, setOpen]); - $iVrL9$react.useEffect(() => { - return () => window.clearTimeout(openTimerRef.current); - }, []); - return /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpopper.Root, popperScope, /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContextProvider, { - scope: __scopeTooltip, - contentId: contentId, - open: open1, - stateAttribute: stateAttribute, - trigger: trigger, - onTriggerChange: setTrigger, - onTriggerEnter: $iVrL9$react.useCallback(() => { - if (providerContext.isOpenDelayed) handleDelayedOpen();else handleOpen(); - }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]), - onTriggerLeave: $iVrL9$react.useCallback(() => { - if (disableHoverableContent) handleClose();else - // Clear the timer in case the pointer leaves the trigger before the tooltip is opened. - window.clearTimeout(openTimerRef.current); - }, [handleClose, disableHoverableContent]), - onOpen: handleOpen, - onClose: handleClose, - disableHoverableContent: disableHoverableContent - }, children)); -}; -/*#__PURE__*/ -Object.assign($c34afbc43c90cc6f$export$28c660c63b792dea, { - displayName: $c34afbc43c90cc6f$var$TOOLTIP_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * TooltipTrigger - * -----------------------------------------------------------------------------------------------*/ -const $c34afbc43c90cc6f$var$TRIGGER_NAME = 'TooltipTrigger'; -const $c34afbc43c90cc6f$export$8c610744efcf8a1d = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { - const { - __scopeTooltip: __scopeTooltip, - ...triggerProps - } = props; - const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$TRIGGER_NAME, __scopeTooltip); - const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$TRIGGER_NAME, __scopeTooltip); - const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip); - const ref = $iVrL9$react.useRef(null); - const composedRefs = $iVrL9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref, context.onTriggerChange); - const isPointerDownRef = $iVrL9$react.useRef(false); - const hasPointerMoveOpenedRef = $iVrL9$react.useRef(false); - const handlePointerUp = $iVrL9$react.useCallback(() => isPointerDownRef.current = false, []); - $iVrL9$react.useEffect(() => { - return () => document.removeEventListener('pointerup', handlePointerUp); - }, [handlePointerUp]); - return /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpopper.Anchor, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ - asChild: true - }, popperScope), /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactprimitive.Primitive.button, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ - // We purposefully avoid adding `type=button` here because tooltip triggers are also - // commonly anchors and the anchor `type` attribute signifies MIME type. - "aria-describedby": context.open ? context.contentId : undefined, - "data-state": context.stateAttribute - }, triggerProps, { - ref: composedRefs, - onPointerMove: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerMove, event => { - if (event.pointerType === 'touch') return; - if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) { - context.onTriggerEnter(); - hasPointerMoveOpenedRef.current = true; - } - }), - onPointerLeave: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerLeave, () => { - context.onTriggerLeave(); - hasPointerMoveOpenedRef.current = false; - }), - onPointerDown: $iVrL9$radixuiprimitive.composeEventHandlers(props.onPointerDown, () => { - isPointerDownRef.current = true; - document.addEventListener('pointerup', handlePointerUp, { - once: true - }); - }), - onFocus: $iVrL9$radixuiprimitive.composeEventHandlers(props.onFocus, () => { - if (!isPointerDownRef.current) context.onOpen(); - }), - onBlur: $iVrL9$radixuiprimitive.composeEventHandlers(props.onBlur, context.onClose), - onClick: $iVrL9$radixuiprimitive.composeEventHandlers(props.onClick, context.onClose) - }))); -}); -/*#__PURE__*/ -Object.assign($c34afbc43c90cc6f$export$8c610744efcf8a1d, { - displayName: $c34afbc43c90cc6f$var$TRIGGER_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * TooltipPortal - * -----------------------------------------------------------------------------------------------*/ -const $c34afbc43c90cc6f$var$PORTAL_NAME = 'TooltipPortal'; -const [$c34afbc43c90cc6f$var$PortalProvider, $c34afbc43c90cc6f$var$usePortalContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$PORTAL_NAME, { - forceMount: undefined -}); -const $c34afbc43c90cc6f$export$7b36b8f925ab7497 = props => { - const { - __scopeTooltip: __scopeTooltip, - forceMount: forceMount, - children: children, - container: container - } = props; - const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$PORTAL_NAME, __scopeTooltip); - return /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$PortalProvider, { - scope: __scopeTooltip, - forceMount: forceMount - }, /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpresence.Presence, { - present: forceMount || context.open - }, /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactportal.Portal, { - asChild: true, - container: container - }, children))); -}; -/*#__PURE__*/ -Object.assign($c34afbc43c90cc6f$export$7b36b8f925ab7497, { - displayName: $c34afbc43c90cc6f$var$PORTAL_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * TooltipContent - * -----------------------------------------------------------------------------------------------*/ -const $c34afbc43c90cc6f$var$CONTENT_NAME = 'TooltipContent'; -const $c34afbc43c90cc6f$export$e9003e2be37ec060 = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { - const portalContext = $c34afbc43c90cc6f$var$usePortalContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip); - const { - forceMount = portalContext.forceMount, - side = 'top', - ...contentProps - } = props; - const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip); - return /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpresence.Presence, { - present: forceMount || context.open - }, context.disableHoverableContent ? /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ - side: side - }, contentProps, { - ref: forwardedRef - })) : /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentHoverable, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ - side: side - }, contentProps, { - ref: forwardedRef - }))); -}); -const $c34afbc43c90cc6f$var$TooltipContentHoverable = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { - const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip); - const providerContext = $c34afbc43c90cc6f$var$useTooltipProviderContext($c34afbc43c90cc6f$var$CONTENT_NAME, props.__scopeTooltip); - const ref = $iVrL9$react.useRef(null); - const composedRefs = $iVrL9$radixuireactcomposerefs.useComposedRefs(forwardedRef, ref); - const [pointerGraceArea, setPointerGraceArea] = $iVrL9$react.useState(null); - const { - trigger: trigger, - onClose: onClose - } = context; - const content = ref.current; - const { - onPointerInTransitChange: onPointerInTransitChange - } = providerContext; - const handleRemoveGraceArea = $iVrL9$react.useCallback(() => { - setPointerGraceArea(null); - onPointerInTransitChange(false); - }, [onPointerInTransitChange]); - const handleCreateGraceArea = $iVrL9$react.useCallback((event, hoverTarget) => { - const currentTarget = event.currentTarget; - const exitPoint = { - x: event.clientX, - y: event.clientY - }; - const exitSide = $c34afbc43c90cc6f$var$getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect()); - const paddedExitPoints = $c34afbc43c90cc6f$var$getPaddedExitPoints(exitPoint, exitSide); - const hoverTargetPoints = $c34afbc43c90cc6f$var$getPointsFromRect(hoverTarget.getBoundingClientRect()); - const graceArea = $c34afbc43c90cc6f$var$getHull([...paddedExitPoints, ...hoverTargetPoints]); - setPointerGraceArea(graceArea); - onPointerInTransitChange(true); - }, [onPointerInTransitChange]); - $iVrL9$react.useEffect(() => { - return () => handleRemoveGraceArea(); - }, [handleRemoveGraceArea]); - $iVrL9$react.useEffect(() => { - if (trigger && content) { - const handleTriggerLeave = event => handleCreateGraceArea(event, content); - const handleContentLeave = event => handleCreateGraceArea(event, trigger); - trigger.addEventListener('pointerleave', handleTriggerLeave); - content.addEventListener('pointerleave', handleContentLeave); - return () => { - trigger.removeEventListener('pointerleave', handleTriggerLeave); - content.removeEventListener('pointerleave', handleContentLeave); - }; - } - }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]); - $iVrL9$react.useEffect(() => { - if (pointerGraceArea) { - const handleTrackPointerGrace = event => { - const target = event.target; - const pointerPosition = { - x: event.clientX, - y: event.clientY - }; - const hasEnteredTarget = (trigger === null || trigger === void 0 ? void 0 : trigger.contains(target)) || (content === null || content === void 0 ? void 0 : content.contains(target)); - const isPointerOutsideGraceArea = !$c34afbc43c90cc6f$var$isPointInPolygon(pointerPosition, pointerGraceArea); - if (hasEnteredTarget) handleRemoveGraceArea();else if (isPointerOutsideGraceArea) { - handleRemoveGraceArea(); - onClose(); - } - }; - document.addEventListener('pointermove', handleTrackPointerGrace); - return () => document.removeEventListener('pointermove', handleTrackPointerGrace); - } - }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]); - return /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$TooltipContentImpl, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({}, props, { - ref: composedRefs - })); -}); -const [$c34afbc43c90cc6f$var$VisuallyHiddenContentContextProvider, $c34afbc43c90cc6f$var$useVisuallyHiddenContentContext] = $c34afbc43c90cc6f$var$createTooltipContext($c34afbc43c90cc6f$var$TOOLTIP_NAME, { - isInside: false -}); -const $c34afbc43c90cc6f$var$TooltipContentImpl = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { - const { - __scopeTooltip: __scopeTooltip, - children: children, - 'aria-label': ariaLabel, - onEscapeKeyDown: onEscapeKeyDown, - onPointerDownOutside: onPointerDownOutside, - ...contentProps - } = props; - const context = $c34afbc43c90cc6f$var$useTooltipContext($c34afbc43c90cc6f$var$CONTENT_NAME, __scopeTooltip); - const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip); - const { - onClose: onClose - } = context; // Close this tooltip if another one opens - $iVrL9$react.useEffect(() => { - document.addEventListener($c34afbc43c90cc6f$var$TOOLTIP_OPEN, onClose); - return () => document.removeEventListener($c34afbc43c90cc6f$var$TOOLTIP_OPEN, onClose); - }, [onClose]); // Close the tooltip if the trigger is scrolled - $iVrL9$react.useEffect(() => { - if (context.trigger) { - const handleScroll = event => { - const target = event.target; - if (target !== null && target !== void 0 && target.contains(context.trigger)) onClose(); - }; - window.addEventListener('scroll', handleScroll, { - capture: true - }); - return () => window.removeEventListener('scroll', handleScroll, { - capture: true - }); - } - }, [context.trigger, onClose]); - return /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactdismissablelayer.DismissableLayer, { - asChild: true, - disableOutsidePointerEvents: false, - onEscapeKeyDown: onEscapeKeyDown, - onPointerDownOutside: onPointerDownOutside, - onFocusOutside: event => event.preventDefault(), - onDismiss: onClose - }, /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpopper.Content, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({ - "data-state": context.stateAttribute - }, popperScope, contentProps, { - ref: forwardedRef, - style: { - ...contentProps.style, - '--radix-tooltip-content-transform-origin': 'var(--radix-popper-transform-origin)', - '--radix-tooltip-content-available-width': 'var(--radix-popper-available-width)', - '--radix-tooltip-content-available-height': 'var(--radix-popper-available-height)', - '--radix-tooltip-trigger-width': 'var(--radix-popper-anchor-width)', - '--radix-tooltip-trigger-height': 'var(--radix-popper-anchor-height)' - } - }), /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactslot.Slottable, null, children), /*#__PURE__*/$iVrL9$react.createElement($c34afbc43c90cc6f$var$VisuallyHiddenContentContextProvider, { - scope: __scopeTooltip, - isInside: true - }, /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactvisuallyhidden.Root, { - id: context.contentId, - role: "tooltip" - }, ariaLabel || children)))); -}); -/*#__PURE__*/ -Object.assign($c34afbc43c90cc6f$export$e9003e2be37ec060, { - displayName: $c34afbc43c90cc6f$var$CONTENT_NAME -}); -/* ------------------------------------------------------------------------------------------------- - * TooltipArrow - * -----------------------------------------------------------------------------------------------*/ -const $c34afbc43c90cc6f$var$ARROW_NAME = 'TooltipArrow'; -const $c34afbc43c90cc6f$export$c27ee0ad710f7559 = /*#__PURE__*/$iVrL9$react.forwardRef((props, forwardedRef) => { - const { - __scopeTooltip: __scopeTooltip, - ...arrowProps - } = props; - const popperScope = $c34afbc43c90cc6f$var$usePopperScope(__scopeTooltip); - const visuallyHiddenContentContext = $c34afbc43c90cc6f$var$useVisuallyHiddenContentContext($c34afbc43c90cc6f$var$ARROW_NAME, __scopeTooltip); // if the arrow is inside the `VisuallyHidden`, we don't want to render it all to - // prevent issues in positioning the arrow due to the duplicate - return visuallyHiddenContentContext.isInside ? null : /*#__PURE__*/$iVrL9$react.createElement($iVrL9$radixuireactpopper.Arrow, $parcel$interopDefault($iVrL9$babelruntimehelpersextends)({}, popperScope, arrowProps, { - ref: forwardedRef - })); -}); -/*#__PURE__*/ -Object.assign($c34afbc43c90cc6f$export$c27ee0ad710f7559, { - displayName: $c34afbc43c90cc6f$var$ARROW_NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -function $c34afbc43c90cc6f$var$getExitSideFromRect(point, rect) { - const top = Math.abs(rect.top - point.y); - const bottom = Math.abs(rect.bottom - point.y); - const right = Math.abs(rect.right - point.x); - const left = Math.abs(rect.left - point.x); - switch (Math.min(top, bottom, right, left)) { - case left: - return 'left'; - case right: - return 'right'; - case top: - return 'top'; - case bottom: - return 'bottom'; - default: - throw new Error('unreachable'); - } -} -function $c34afbc43c90cc6f$var$getPaddedExitPoints(exitPoint, exitSide) { - let padding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; - const paddedExitPoints = []; - switch (exitSide) { - case 'top': - paddedExitPoints.push({ - x: exitPoint.x - padding, - y: exitPoint.y + padding - }, { - x: exitPoint.x + padding, - y: exitPoint.y + padding - }); - break; - case 'bottom': - paddedExitPoints.push({ - x: exitPoint.x - padding, - y: exitPoint.y - padding - }, { - x: exitPoint.x + padding, - y: exitPoint.y - padding - }); - break; - case 'left': - paddedExitPoints.push({ - x: exitPoint.x + padding, - y: exitPoint.y - padding - }, { - x: exitPoint.x + padding, - y: exitPoint.y + padding - }); - break; - case 'right': - paddedExitPoints.push({ - x: exitPoint.x - padding, - y: exitPoint.y - padding - }, { - x: exitPoint.x - padding, - y: exitPoint.y + padding - }); - break; - } - return paddedExitPoints; -} -function $c34afbc43c90cc6f$var$getPointsFromRect(rect) { - const { - top: top, - right: right, - bottom: bottom, - left: left - } = rect; - return [{ - x: left, - y: top - }, { - x: right, - y: top - }, { - x: right, - y: bottom - }, { - x: left, - y: bottom - }]; -} // Determine if a point is inside of a polygon. -// Based on https://github.com/substack/point-in-polygon -function $c34afbc43c90cc6f$var$isPointInPolygon(point, polygon) { - const { - x: x, - y: y - } = point; - let inside = false; - for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) { - const xi = polygon[i].x; - const yi = polygon[i].y; - const xj = polygon[j].x; - const yj = polygon[j].y; // prettier-ignore - const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi; - if (intersect) inside = !inside; - } - return inside; -} // Returns a new array of points representing the convex hull of the given set of points. -// https://www.nayuki.io/page/convex-hull-algorithm -function $c34afbc43c90cc6f$var$getHull(points) { - const newPoints = points.slice(); - newPoints.sort((a, b) => { - if (a.x < b.x) return -1;else if (a.x > b.x) return 1;else if (a.y < b.y) return -1;else if (a.y > b.y) return 1;else return 0; - }); - return $c34afbc43c90cc6f$var$getHullPresorted(newPoints); -} // Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time. -function $c34afbc43c90cc6f$var$getHullPresorted(points) { - if (points.length <= 1) return points.slice(); - const upperHull = []; - for (let i = 0; i < points.length; i++) { - const p = points[i]; - while (upperHull.length >= 2) { - const q = upperHull[upperHull.length - 1]; - const r = upperHull[upperHull.length - 2]; - if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();else break; - } - upperHull.push(p); - } - upperHull.pop(); - const lowerHull = []; - for (let i1 = points.length - 1; i1 >= 0; i1--) { - const p = points[i1]; - while (lowerHull.length >= 2) { - const q = lowerHull[lowerHull.length - 1]; - const r = lowerHull[lowerHull.length - 2]; - if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();else break; - } - lowerHull.push(p); - } - lowerHull.pop(); - if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) return upperHull;else return upperHull.concat(lowerHull); -} -const $c34afbc43c90cc6f$export$2881499e37b75b9a = $c34afbc43c90cc6f$export$f78649fb9ca566b8; -const $c34afbc43c90cc6f$export$be92b6f5f03c0fe9 = $c34afbc43c90cc6f$export$28c660c63b792dea; -const $c34afbc43c90cc6f$export$41fb9f06171c75f4 = $c34afbc43c90cc6f$export$8c610744efcf8a1d; -const $c34afbc43c90cc6f$export$602eac185826482c = $c34afbc43c90cc6f$export$7b36b8f925ab7497; -const $c34afbc43c90cc6f$export$7c6e2c02157bb7d2 = $c34afbc43c90cc6f$export$e9003e2be37ec060; -const $c34afbc43c90cc6f$export$21b07c8f274aebd5 = $c34afbc43c90cc6f$export$c27ee0ad710f7559; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js": -/*!****************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js ***! - \****************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $92muK$react = __webpack_require__(/*! react */ "react"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "useCallbackRef", () => $28e03942f763e819$export$25bec8c6f54ee79a); - -/** - * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a - * prop or avoid re-executing effects when passed as a dependency - */ -function $28e03942f763e819$export$25bec8c6f54ee79a(callback) { - const callbackRef = $92muK$react.useRef(callback); - $92muK$react.useEffect(() => { - callbackRef.current = callback; - }); // https://github.com/facebook/react/issues/19240 - return $92muK$react.useMemo(() => function () { - var _callbackRef$current; - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef, ...args); - }, []); -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js": -/*!**********************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js ***! - \**********************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $ijazI$react = __webpack_require__(/*! react */ "react"); -var $ijazI$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "useControllableState", () => $b84d42d44371bff7$export$6f32135080cb4c3); -function $b84d42d44371bff7$export$6f32135080cb4c3(_ref) { - let { - prop: prop, - defaultProp: defaultProp, - onChange = () => {} - } = _ref; - const [uncontrolledProp, setUncontrolledProp] = $b84d42d44371bff7$var$useUncontrolledState({ - defaultProp: defaultProp, - onChange: onChange - }); - const isControlled = prop !== undefined; - const value1 = isControlled ? prop : uncontrolledProp; - const handleChange = $ijazI$radixuireactusecallbackref.useCallbackRef(onChange); - const setValue = $ijazI$react.useCallback(nextValue => { - if (isControlled) { - const setter = nextValue; - const value = typeof nextValue === 'function' ? setter(prop) : nextValue; - if (value !== prop) handleChange(value); - } else setUncontrolledProp(nextValue); - }, [isControlled, prop, setUncontrolledProp, handleChange]); - return [value1, setValue]; -} -function $b84d42d44371bff7$var$useUncontrolledState(_ref2) { - let { - defaultProp: defaultProp, - onChange: onChange - } = _ref2; - const uncontrolledState = $ijazI$react.useState(defaultProp); - const [value] = uncontrolledState; - const prevValueRef = $ijazI$react.useRef(value); - const handleChange = $ijazI$radixuireactusecallbackref.useCallbackRef(onChange); - $ijazI$react.useEffect(() => { - if (prevValueRef.current !== value) { - handleChange(value); - prevValueRef.current = value; - } - }, [value, prevValueRef, handleChange]); - return uncontrolledState; -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.js": -/*!******************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.js ***! - \******************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $b0gz3$react = __webpack_require__(/*! react */ "react"); -var $b0gz3$radixuireactusecallbackref = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "useEscapeKeydown", () => $24c84e9f83c4454f$export$3a72a57244d6e765); - -/** - * Listens for when the escape key is down - */ -function $24c84e9f83c4454f$export$3a72a57244d6e765(onEscapeKeyDownProp) { - let ownerDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document; - const onEscapeKeyDown = $b0gz3$radixuireactusecallbackref.useCallbackRef(onEscapeKeyDownProp); - $b0gz3$react.useEffect(() => { - const handleKeyDown = event => { - if (event.key === 'Escape') onEscapeKeyDown(event); - }; - ownerDocument.addEventListener('keydown', handleKeyDown); - return () => ownerDocument.removeEventListener('keydown', handleKeyDown); - }, [onEscapeKeyDown, ownerDocument]); -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js": -/*!*****************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js ***! - \*****************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $caHyQ$react = __webpack_require__(/*! react */ "react"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "useLayoutEffect", () => $ca21affb0542a8a4$export$e5c5a5f917a5871c); - -/** - * On the server, React emits a warning when calling `useLayoutEffect`. - * This is because neither `useLayoutEffect` nor `useEffect` run on the server. - * We use this safe version which suppresses the warning by replacing it with a noop on the server. - * - * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect - */ -const $ca21affb0542a8a4$export$e5c5a5f917a5871c = Boolean(globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) ? $caHyQ$react.useLayoutEffect : () => {}; - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-use-size/dist/index.js": -/*!********************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-use-size/dist/index.js ***! - \********************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $ksDzM$react = __webpack_require__(/*! react */ "react"); -var $ksDzM$radixuireactuselayouteffect = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -$parcel$export(module.exports, "useSize", () => $d2c1d285af17635b$export$1ab7ae714698c4b8); -function $d2c1d285af17635b$export$1ab7ae714698c4b8(element) { - const [size, setSize] = $ksDzM$react.useState(undefined); - $ksDzM$radixuireactuselayouteffect.useLayoutEffect(() => { - if (element) { - // provide size as early as possible - setSize({ - width: element.offsetWidth, - height: element.offsetHeight - }); - const resizeObserver = new ResizeObserver(entries => { - if (!Array.isArray(entries)) return; - // Since we only observe the one element, we don't need to loop over the - // array - if (!entries.length) return; - const entry = entries[0]; - let width; - let height; - if ('borderBoxSize' in entry) { - const borderSizeEntry = entry['borderBoxSize']; // iron out differences between browsers - const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry; - width = borderSize['inlineSize']; - height = borderSize['blockSize']; - } else { - // for browsers that don't support `borderBoxSize` - // we calculate it ourselves to get the correct border box. - width = element.offsetWidth; - height = element.offsetHeight; - } - setSize({ - width: width, - height: height - }); - }); - resizeObserver.observe(element, { - box: 'border-box' - }); - return () => resizeObserver.unobserve(element); - } else - // We only want to reset to `undefined` when the element becomes `null`, - // not if it changes to another element. - setSize(undefined); - }, [element]); - return size; -} - -/***/ }), - -/***/ "../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js": -/*!***************************************************************************!*\ - !*** ../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js ***! - \***************************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var $awrN2$babelruntimehelpersextends = __webpack_require__(/*! @babel/runtime/helpers/extends */ "../../../node_modules/@babel/runtime/helpers/extends.js"); -var $awrN2$react = __webpack_require__(/*! react */ "react"); -var $awrN2$radixuireactprimitive = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.js"); -function $parcel$export(e, n, v, s) { - Object.defineProperty(e, n, { - get: v, - set: s, - enumerable: true, - configurable: true - }); -} -function $parcel$interopDefault(a) { - return a && a.__esModule ? a.default : a; -} -$parcel$export(module.exports, "VisuallyHidden", () => $685371e9c20848e2$export$439d29a4e110a164); -$parcel$export(module.exports, "Root", () => $685371e9c20848e2$export$be92b6f5f03c0fe9); - -/* ------------------------------------------------------------------------------------------------- - * VisuallyHidden - * -----------------------------------------------------------------------------------------------*/ -const $685371e9c20848e2$var$NAME = 'VisuallyHidden'; -const $685371e9c20848e2$export$439d29a4e110a164 = /*#__PURE__*/$awrN2$react.forwardRef((props, forwardedRef) => { - return /*#__PURE__*/$awrN2$react.createElement($awrN2$radixuireactprimitive.Primitive.span, $parcel$interopDefault($awrN2$babelruntimehelpersextends)({}, props, { - ref: forwardedRef, - style: { - // See: https://github.com/twbs/bootstrap/blob/master/scss/mixins/_screen-reader.scss - position: 'absolute', - border: 0, - width: 1, - height: 1, - padding: 0, - margin: -1, - overflow: 'hidden', - clip: 'rect(0, 0, 0, 0)', - whiteSpace: 'nowrap', - wordWrap: 'normal', - ...props.style - } - })); -}); -/*#__PURE__*/ -Object.assign($685371e9c20848e2$export$439d29a4e110a164, { - displayName: $685371e9c20848e2$var$NAME -}); -/* -----------------------------------------------------------------------------------------------*/ -const $685371e9c20848e2$export$be92b6f5f03c0fe9 = $685371e9c20848e2$export$439d29a4e110a164; - -/***/ }), - -/***/ "../../../node_modules/aria-hidden/dist/es2015/index.js": -/*!**************************************************************!*\ - !*** ../../../node_modules/aria-hidden/dist/es2015/index.js ***! - \**************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.suppressOthers = exports.supportsInert = exports.inertOthers = exports.hideOthers = void 0; -var getDefaultParent = function (originalTarget) { - if (typeof document === 'undefined') { - return null; - } - var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget; - return sampleTarget.ownerDocument.body; -}; -var counterMap = new WeakMap(); -var uncontrolledNodes = new WeakMap(); -var markerMap = {}; -var lockCount = 0; -var unwrapHost = function (node) { - return node && (node.host || unwrapHost(node.parentNode)); -}; -var correctTargets = function (parent, targets) { - return targets.map(function (target) { - if (parent.contains(target)) { - return target; - } - var correctedTarget = unwrapHost(target); - if (correctedTarget && parent.contains(correctedTarget)) { - return correctedTarget; - } - console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing'); - return null; - }).filter(function (x) { - return Boolean(x); - }); -}; -/** - * Marks everything except given node(or nodes) as aria-hidden - * @param {Element | Element[]} originalTarget - elements to keep on the page - * @param [parentNode] - top element, defaults to document.body - * @param {String} [markerName] - a special attribute to mark every node - * @param {String} [controlAttribute] - html Attribute to control - * @return {Undo} undo command - */ -var applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) { - var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]); - if (!markerMap[markerName]) { - markerMap[markerName] = new WeakMap(); - } - var markerCounter = markerMap[markerName]; - var hiddenNodes = []; - var elementsToKeep = new Set(); - var elementsToStop = new Set(targets); - var keep = function (el) { - if (!el || elementsToKeep.has(el)) { - return; - } - elementsToKeep.add(el); - keep(el.parentNode); - }; - targets.forEach(keep); - var deep = function (parent) { - if (!parent || elementsToStop.has(parent)) { - return; - } - Array.prototype.forEach.call(parent.children, function (node) { - if (elementsToKeep.has(node)) { - deep(node); - } else { - var attr = node.getAttribute(controlAttribute); - var alreadyHidden = attr !== null && attr !== 'false'; - var counterValue = (counterMap.get(node) || 0) + 1; - var markerValue = (markerCounter.get(node) || 0) + 1; - counterMap.set(node, counterValue); - markerCounter.set(node, markerValue); - hiddenNodes.push(node); - if (counterValue === 1 && alreadyHidden) { - uncontrolledNodes.set(node, true); - } - if (markerValue === 1) { - node.setAttribute(markerName, 'true'); - } - if (!alreadyHidden) { - node.setAttribute(controlAttribute, 'true'); - } - } - }); - }; - deep(parentNode); - elementsToKeep.clear(); - lockCount++; - return function () { - hiddenNodes.forEach(function (node) { - var counterValue = counterMap.get(node) - 1; - var markerValue = markerCounter.get(node) - 1; - counterMap.set(node, counterValue); - markerCounter.set(node, markerValue); - if (!counterValue) { - if (!uncontrolledNodes.has(node)) { - node.removeAttribute(controlAttribute); - } - uncontrolledNodes.delete(node); - } - if (!markerValue) { - node.removeAttribute(markerName); - } - }); - lockCount--; - if (!lockCount) { - // clear - counterMap = new WeakMap(); - counterMap = new WeakMap(); - uncontrolledNodes = new WeakMap(); - markerMap = {}; - } - }; -}; -/** - * Marks everything except given node(or nodes) as aria-hidden - * @param {Element | Element[]} originalTarget - elements to keep on the page - * @param [parentNode] - top element, defaults to document.body - * @param {String} [markerName] - a special attribute to mark every node - * @return {Undo} undo command - */ -var hideOthers = function (originalTarget, parentNode, markerName) { - if (markerName === void 0) { - markerName = 'data-aria-hidden'; - } - var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]); - var activeParentNode = parentNode || getDefaultParent(originalTarget); - if (!activeParentNode) { - return function () { - return null; - }; - } - // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10 - targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]'))); - return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden'); -}; -/** - * Marks everything except given node(or nodes) as inert - * @param {Element | Element[]} originalTarget - elements to keep on the page - * @param [parentNode] - top element, defaults to document.body - * @param {String} [markerName] - a special attribute to mark every node - * @return {Undo} undo command - */ -exports.hideOthers = hideOthers; -var inertOthers = function (originalTarget, parentNode, markerName) { - if (markerName === void 0) { - markerName = 'data-inert-ed'; - } - var activeParentNode = parentNode || getDefaultParent(originalTarget); - if (!activeParentNode) { - return function () { - return null; - }; - } - return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert'); -}; -/** - * @returns if current browser supports inert - */ -exports.inertOthers = inertOthers; -var supportsInert = function () { - return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert'); -}; -/** - * Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way - * @param {Element | Element[]} originalTarget - elements to keep on the page - * @param [parentNode] - top element, defaults to document.body - * @param {String} [markerName] - a special attribute to mark every node - * @return {Undo} undo command - */ -exports.supportsInert = supportsInert; -var suppressOthers = function (originalTarget, parentNode, markerName) { - if (markerName === void 0) { - markerName = 'data-suppressed'; - } - return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName); -}; -exports.suppressOthers = suppressOthers; - -/***/ }), - -/***/ "../../../node_modules/clsx/dist/clsx.m.js": -/*!*************************************************!*\ - !*** ../../../node_modules/clsx/dist/clsx.m.js ***! - \*************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.clsx = clsx; -exports["default"] = void 0; -function r(e) { - var t, - f, - n = ""; - if ("string" == typeof e || "number" == typeof e) n += e;else if ("object" == typeof e) if (Array.isArray(e)) for (t = 0; t < e.length; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);else for (t in e) e[t] && (n && (n += " "), n += t); - return n; -} -function clsx() { - for (var e, t, f = 0, n = ""; f < arguments.length;) (e = arguments[f++]) && (t = r(e)) && (n && (n += " "), n += t); - return n; -} -var _default = clsx; -exports["default"] = _default; - -/***/ }), - -/***/ "../../../node_modules/copy-to-clipboard/index.js": -/*!********************************************************!*\ - !*** ../../../node_modules/copy-to-clipboard/index.js ***! - \********************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - - -var deselectCurrent = __webpack_require__(/*! toggle-selection */ "../../../node_modules/toggle-selection/index.js"); -var clipboardToIE11Formatting = { - "text/plain": "Text", - "text/html": "Url", - "default": "Text" -}; -var defaultMessage = "Copy to clipboard: #{key}, Enter"; -function format(message) { - var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C"; - return message.replace(/#{\s*key\s*}/g, copyKey); -} -function copy(text, options) { - var debug, - message, - reselectPrevious, - range, - selection, - mark, - success = false; - if (!options) { - options = {}; - } - debug = options.debug || false; - try { - reselectPrevious = deselectCurrent(); - range = document.createRange(); - selection = document.getSelection(); - mark = document.createElement("span"); - mark.textContent = text; - // avoid screen readers from reading out loud the text - mark.ariaHidden = "true"; - // reset user styles for span element - mark.style.all = "unset"; - // prevents scrolling to the end of the page - mark.style.position = "fixed"; - mark.style.top = 0; - mark.style.clip = "rect(0, 0, 0, 0)"; - // used to preserve spaces and line breaks - mark.style.whiteSpace = "pre"; - // do not inherit user-select (it may be `none`) - mark.style.webkitUserSelect = "text"; - mark.style.MozUserSelect = "text"; - mark.style.msUserSelect = "text"; - mark.style.userSelect = "text"; - mark.addEventListener("copy", function (e) { - e.stopPropagation(); - if (options.format) { - e.preventDefault(); - if (typeof e.clipboardData === "undefined") { - // IE 11 - debug && console.warn("unable to use e.clipboardData"); - debug && console.warn("trying IE specific stuff"); - window.clipboardData.clearData(); - var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"]; - window.clipboardData.setData(format, text); - } else { - // all other browsers - e.clipboardData.clearData(); - e.clipboardData.setData(options.format, text); - } - } - if (options.onCopy) { - e.preventDefault(); - options.onCopy(e.clipboardData); - } - }); - document.body.appendChild(mark); - range.selectNodeContents(mark); - selection.addRange(range); - var successful = document.execCommand("copy"); - if (!successful) { - throw new Error("copy command was unsuccessful"); - } - success = true; - } catch (err) { - debug && console.error("unable to copy using execCommand: ", err); - debug && console.warn("trying IE specific stuff"); - try { - window.clipboardData.setData(options.format || "text", text); - options.onCopy && options.onCopy(window.clipboardData); - success = true; - } catch (err) { - debug && console.error("unable to copy using clipboardData: ", err); - debug && console.error("falling back to prompt"); - message = format("message" in options ? options.message : defaultMessage); - window.prompt(message, text); - } - } finally { - if (selection) { - if (typeof selection.removeRange == "function") { - selection.removeRange(range); - } else { - selection.removeAllRanges(); - } - } - if (mark) { - document.body.removeChild(mark); - } - reselectPrevious(); - } - return success; -} -module.exports = copy; - -/***/ }), - -/***/ "../../../node_modules/detect-node-es/esm/browser.js": -/*!***********************************************************!*\ - !*** ../../../node_modules/detect-node-es/esm/browser.js ***! - \***********************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isNode = void 0; -const isNode = false; -exports.isNode = isNode; - -/***/ }), - -/***/ "../../../node_modules/framer-motion/dist/cjs/index.js": -/*!*************************************************************!*\ - !*** ../../../node_modules/framer-motion/dist/cjs/index.js ***! - \*************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var tslib = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js"); -var React = __webpack_require__(/*! react */ "react"); -var heyListen = __webpack_require__(/*! hey-listen */ "../../../node_modules/hey-listen/dist/hey-listen.es.js"); -var styleValueTypes = __webpack_require__(/*! style-value-types */ "../../../node_modules/style-value-types/dist/valueTypes.cjs.js"); -var popmotion = __webpack_require__(/*! popmotion */ "../../../node_modules/popmotion/dist/popmotion.cjs.js"); -var sync = __webpack_require__(/*! framesync */ "../../../node_modules/framesync/dist/framesync.cjs.js"); -var dom = __webpack_require__(/*! @motionone/dom */ "../../../node_modules/@motionone/dom/dist/index.es.js"); -function _interopDefaultLegacy(e) { - return e && typeof e === 'object' && 'default' in e ? e : { - 'default': e - }; -} -function _interopNamespace(e) { - if (e && e.__esModule) return e; - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { - return e[k]; - } - }); - } - }); - } - n["default"] = e; - return Object.freeze(n); -} -var React__namespace = /*#__PURE__*/_interopNamespace(React); -var React__default = /*#__PURE__*/_interopDefaultLegacy(React); -var sync__default = /*#__PURE__*/_interopDefaultLegacy(sync); - -/** - * Browser-safe usage of process - */ -var defaultEnvironment = "production"; -var env = typeof process === "undefined" || process.env === undefined ? defaultEnvironment : "development" || 0; -var createDefinition = function (propNames) { - return { - isEnabled: function (props) { - return propNames.some(function (name) { - return !!props[name]; - }); - } - }; -}; -var featureDefinitions = { - measureLayout: createDefinition(["layout", "layoutId", "drag"]), - animation: createDefinition(["animate", "exit", "variants", "whileHover", "whileTap", "whileFocus", "whileDrag", "whileInView"]), - exit: createDefinition(["exit"]), - drag: createDefinition(["drag", "dragControls"]), - focus: createDefinition(["whileFocus"]), - hover: createDefinition(["whileHover", "onHoverStart", "onHoverEnd"]), - tap: createDefinition(["whileTap", "onTap", "onTapStart", "onTapCancel"]), - pan: createDefinition(["onPan", "onPanStart", "onPanSessionStart", "onPanEnd"]), - inView: createDefinition(["whileInView", "onViewportEnter", "onViewportLeave"]) -}; -function loadFeatures(features) { - for (var key in features) { - if (features[key] === null) continue; - if (key === "projectionNodeConstructor") { - featureDefinitions.projectionNodeConstructor = features[key]; - } else { - featureDefinitions[key].Component = features[key]; - } - } -} -var LazyContext = React.createContext({ - strict: false -}); -var featureNames = Object.keys(featureDefinitions); -var numFeatures = featureNames.length; -/** - * Load features via renderless components based on the provided MotionProps. - */ -function useFeatures(props, visualElement, preloadedFeatures) { - var features = []; - var lazyContext = React.useContext(LazyContext); - if (!visualElement) return null; - /** - * If we're in development mode, check to make sure we're not rendering a motion component - * as a child of LazyMotion, as this will break the file-size benefits of using it. - */ - if (env !== "production" && preloadedFeatures && lazyContext.strict) { - heyListen.invariant(false, "You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead."); - } - for (var i = 0; i < numFeatures; i++) { - var name_1 = featureNames[i]; - var _a = featureDefinitions[name_1], - isEnabled = _a.isEnabled, - Component = _a.Component; - /** - * It might be possible in the future to use this moment to - * dynamically request functionality. In initial tests this - * was producing a lot of duplication amongst bundles. - */ - if (isEnabled(props) && Component) { - features.push(React__namespace.createElement(Component, tslib.__assign({ - key: name_1 - }, props, { - visualElement: visualElement - }))); - } - } - return features; -} - -/** - * @public - */ -var MotionConfigContext = React.createContext({ - transformPagePoint: function (p) { - return p; - }, - isStatic: false, - reducedMotion: "never" -}); -var MotionContext = React.createContext({}); -function useVisualElementContext() { - return React.useContext(MotionContext).visualElement; -} - -/** - * @public - */ -var PresenceContext = React.createContext(null); -var isBrowser = typeof document !== "undefined"; -var useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect; - -// Does this device prefer reduced motion? Returns `null` server-side. -var prefersReducedMotion = { - current: null -}; -var hasDetected = false; -function initPrefersReducedMotion() { - hasDetected = true; - if (!isBrowser) return; - if (window.matchMedia) { - var motionMediaQuery_1 = window.matchMedia("(prefers-reduced-motion)"); - var setReducedMotionPreferences = function () { - return prefersReducedMotion.current = motionMediaQuery_1.matches; - }; - motionMediaQuery_1.addListener(setReducedMotionPreferences); - setReducedMotionPreferences(); - } else { - prefersReducedMotion.current = false; - } -} -/** - * A hook that returns `true` if we should be using reduced motion based on the current device's Reduced Motion setting. - * - * This can be used to implement changes to your UI based on Reduced Motion. For instance, replacing motion-sickness inducing - * `x`/`y` animations with `opacity`, disabling the autoplay of background videos, or turning off parallax motion. - * - * It will actively respond to changes and re-render your components with the latest setting. - * - * ```jsx - * export function Sidebar({ isOpen }) { - * const shouldReduceMotion = useReducedMotion() - * const closedX = shouldReduceMotion ? 0 : "-100%" - * - * return ( - * - * ) - * } - * ``` - * - * @return boolean - * - * @public - */ -function useReducedMotion() { - /** - * Lazy initialisation of prefersReducedMotion - */ - !hasDetected && initPrefersReducedMotion(); - var _a = tslib.__read(React.useState(prefersReducedMotion.current), 1), - shouldReduceMotion = _a[0]; - /** - * TODO See if people miss automatically updating shouldReduceMotion setting - */ - return shouldReduceMotion; -} -function useReducedMotionConfig() { - var reducedMotionPreference = useReducedMotion(); - var reducedMotion = React.useContext(MotionConfigContext).reducedMotion; - if (reducedMotion === "never") { - return false; - } else if (reducedMotion === "always") { - return true; - } else { - return reducedMotionPreference; - } -} -function useVisualElement(Component, visualState, props, createVisualElement) { - var lazyContext = React.useContext(LazyContext); - var parent = useVisualElementContext(); - var presenceContext = React.useContext(PresenceContext); - var shouldReduceMotion = useReducedMotionConfig(); - var visualElementRef = React.useRef(undefined); - /** - * If we haven't preloaded a renderer, check to see if we have one lazy-loaded - */ - if (!createVisualElement) createVisualElement = lazyContext.renderer; - if (!visualElementRef.current && createVisualElement) { - visualElementRef.current = createVisualElement(Component, { - visualState: visualState, - parent: parent, - props: props, - presenceId: presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id, - blockInitialAnimation: (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false, - shouldReduceMotion: shouldReduceMotion - }); - } - var visualElement = visualElementRef.current; - useIsomorphicLayoutEffect(function () { - visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender(); - }); - React.useEffect(function () { - var _a; - (_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.animationState) === null || _a === void 0 ? void 0 : _a.animateChanges(); - }); - useIsomorphicLayoutEffect(function () { - return function () { - return visualElement === null || visualElement === void 0 ? void 0 : visualElement.notifyUnmount(); - }; - }, []); - return visualElement; -} -function isRefObject(ref) { - return typeof ref === "object" && Object.prototype.hasOwnProperty.call(ref, "current"); -} - -/** - * Creates a ref function that, when called, hydrates the provided - * external ref and VisualElement. - */ -function useMotionRef(visualState, visualElement, externalRef) { - return React.useCallback(function (instance) { - var _a; - instance && ((_a = visualState.mount) === null || _a === void 0 ? void 0 : _a.call(visualState, instance)); - if (visualElement) { - instance ? visualElement.mount(instance) : visualElement.unmount(); - } - if (externalRef) { - if (typeof externalRef === "function") { - externalRef(instance); - } else if (isRefObject(externalRef)) { - externalRef.current = instance; - } - } - }, - /** - * Only pass a new ref callback to React if we've received a visual element - * factory. Otherwise we'll be mounting/remounting every time externalRef - * or other dependencies change. - */ - [visualElement]); -} - -/** - * Decides if the supplied variable is an array of variant labels - */ -function isVariantLabels(v) { - return Array.isArray(v); -} -/** - * Decides if the supplied variable is variant label - */ -function isVariantLabel(v) { - return typeof v === "string" || isVariantLabels(v); -} -/** - * Creates an object containing the latest state of every MotionValue on a VisualElement - */ -function getCurrent(visualElement) { - var current = {}; - visualElement.forEachValue(function (value, key) { - return current[key] = value.get(); - }); - return current; -} -/** - * Creates an object containing the latest velocity of every MotionValue on a VisualElement - */ -function getVelocity$1(visualElement) { - var velocity = {}; - visualElement.forEachValue(function (value, key) { - return velocity[key] = value.getVelocity(); - }); - return velocity; -} -function resolveVariantFromProps(props, definition, custom, currentValues, currentVelocity) { - var _a; - if (currentValues === void 0) { - currentValues = {}; - } - if (currentVelocity === void 0) { - currentVelocity = {}; - } - /** - * If the variant definition is a function, resolve. - */ - if (typeof definition === "function") { - definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity); - } - /** - * If the variant definition is a variant label, or - * the function returned a variant label, resolve. - */ - if (typeof definition === "string") { - definition = (_a = props.variants) === null || _a === void 0 ? void 0 : _a[definition]; - } - /** - * At this point we've resolved both functions and variant labels, - * but the resolved variant label might itself have been a function. - * If so, resolve. This can only have returned a valid target object. - */ - if (typeof definition === "function") { - definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity); - } - return definition; -} -function resolveVariant(visualElement, definition, custom) { - var props = visualElement.getProps(); - return resolveVariantFromProps(props, definition, custom !== null && custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity$1(visualElement)); -} -function checkIfControllingVariants(props) { - var _a; - return typeof ((_a = props.animate) === null || _a === void 0 ? void 0 : _a.start) === "function" || isVariantLabel(props.initial) || isVariantLabel(props.animate) || isVariantLabel(props.whileHover) || isVariantLabel(props.whileDrag) || isVariantLabel(props.whileTap) || isVariantLabel(props.whileFocus) || isVariantLabel(props.exit); -} -function checkIfVariantNode(props) { - return Boolean(checkIfControllingVariants(props) || props.variants); -} -function getCurrentTreeVariants(props, context) { - if (checkIfControllingVariants(props)) { - var initial = props.initial, - animate = props.animate; - return { - initial: initial === false || isVariantLabel(initial) ? initial : undefined, - animate: isVariantLabel(animate) ? animate : undefined - }; - } - return props.inherit !== false ? context : {}; -} -function useCreateMotionContext(props) { - var _a = getCurrentTreeVariants(props, React.useContext(MotionContext)), - initial = _a.initial, - animate = _a.animate; - return React.useMemo(function () { - return { - initial: initial, - animate: animate - }; - }, [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]); -} -function variantLabelsAsDependency(prop) { - return Array.isArray(prop) ? prop.join(" ") : prop; -} - -/** - * Creates a constant value over the lifecycle of a component. - * - * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer - * a guarantee that it won't re-run for performance reasons later on. By using `useConstant` - * you can ensure that initialisers don't execute twice or more. - */ -function useConstant(init) { - var ref = React.useRef(null); - if (ref.current === null) { - ref.current = init(); - } - return ref.current; -} - -/** - * This should only ever be modified on the client otherwise it'll - * persist through server requests. If we need instanced states we - * could lazy-init via root. - */ -var globalProjectionState = { - /** - * Global flag as to whether the tree has animated since the last time - * we resized the window - */ - hasAnimatedSinceResize: true, - /** - * We set this to true once, on the first update. Any nodes added to the tree beyond that - * update will be given a `data-projection-id` attribute. - */ - hasEverUpdated: false -}; -var id$1 = 1; -function useProjectionId() { - return useConstant(function () { - if (globalProjectionState.hasEverUpdated) { - return id$1++; - } - }); -} -var LayoutGroupContext = React.createContext({}); - -/** - * Internal, exported only for usage in Framer - */ -var SwitchLayoutGroupContext = React.createContext({}); -function useProjection(projectionId, _a, visualElement, ProjectionNodeConstructor) { - var _b; - var layoutId = _a.layoutId, - layout = _a.layout, - drag = _a.drag, - dragConstraints = _a.dragConstraints, - layoutScroll = _a.layoutScroll; - var initialPromotionConfig = React.useContext(SwitchLayoutGroupContext); - if (!ProjectionNodeConstructor || !visualElement || (visualElement === null || visualElement === void 0 ? void 0 : visualElement.projection)) { - return; - } - visualElement.projection = new ProjectionNodeConstructor(projectionId, visualElement.getLatestValues(), (_b = visualElement.parent) === null || _b === void 0 ? void 0 : _b.projection); - visualElement.projection.setOptions({ - layoutId: layoutId, - layout: layout, - alwaysMeasureLayout: Boolean(drag) || dragConstraints && isRefObject(dragConstraints), - visualElement: visualElement, - scheduleRender: function () { - return visualElement.scheduleRender(); - }, - /** - * TODO: Update options in an effect. This could be tricky as it'll be too late - * to update by the time layout animations run. - * We also need to fix this safeToRemove by linking it up to the one returned by usePresence, - * ensuring it gets called if there's no potential layout animations. - * - */ - animationType: typeof layout === "string" ? layout : "both", - initialPromotionConfig: initialPromotionConfig, - layoutScroll: layoutScroll - }); -} -var VisualElementHandler = /** @class */function (_super) { - tslib.__extends(VisualElementHandler, _super); - function VisualElementHandler() { - return _super !== null && _super.apply(this, arguments) || this; - } - /** - * Update visual element props as soon as we know this update is going to be commited. - */ - VisualElementHandler.prototype.getSnapshotBeforeUpdate = function () { - this.updateProps(); - return null; - }; - VisualElementHandler.prototype.componentDidUpdate = function () {}; - VisualElementHandler.prototype.updateProps = function () { - var _a = this.props, - visualElement = _a.visualElement, - props = _a.props; - if (visualElement) visualElement.setProps(props); - }; - VisualElementHandler.prototype.render = function () { - return this.props.children; - }; - return VisualElementHandler; -}(React__default["default"].Component); - -/** - * Create a `motion` component. - * - * This function accepts a Component argument, which can be either a string (ie "div" - * for `motion.div`), or an actual React component. - * - * Alongside this is a config option which provides a way of rendering the provided - * component "offline", or outside the React render cycle. - */ -function createMotionComponent(_a) { - var preloadedFeatures = _a.preloadedFeatures, - createVisualElement = _a.createVisualElement, - projectionNodeConstructor = _a.projectionNodeConstructor, - useRender = _a.useRender, - useVisualState = _a.useVisualState, - Component = _a.Component; - preloadedFeatures && loadFeatures(preloadedFeatures); - function MotionComponent(props, externalRef) { - var layoutId = useLayoutId(props); - props = tslib.__assign(tslib.__assign({}, props), { - layoutId: layoutId - }); - /** - * If we're rendering in a static environment, we only visually update the component - * as a result of a React-rerender rather than interactions or animations. This - * means we don't need to load additional memory structures like VisualElement, - * or any gesture/animation features. - */ - var config = React.useContext(MotionConfigContext); - var features = null; - var context = useCreateMotionContext(props); - /** - * Create a unique projection ID for this component. If a new component is added - * during a layout animation we'll use this to query the DOM and hydrate its ref early, allowing - * us to measure it as soon as any layout effect flushes pending layout animations. - * - * Performance note: It'd be better not to have to search the DOM for these elements. - * For newly-entering components it could be enough to only correct treeScale, in which - * case we could mount in a scale-correction mode. This wouldn't be enough for - * shared element transitions however. Perhaps for those we could revert to a root node - * that gets forceRendered and layout animations are triggered on its layout effect. - */ - var projectionId = config.isStatic ? undefined : useProjectionId(); - /** - * - */ - var visualState = useVisualState(props, config.isStatic); - if (!config.isStatic && isBrowser) { - /** - * Create a VisualElement for this component. A VisualElement provides a common - * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as - * providing a way of rendering to these APIs outside of the React render loop - * for more performant animations and interactions - */ - context.visualElement = useVisualElement(Component, visualState, tslib.__assign(tslib.__assign({}, config), props), createVisualElement); - useProjection(projectionId, props, context.visualElement, projectionNodeConstructor || featureDefinitions.projectionNodeConstructor); - /** - * Load Motion gesture and animation features. These are rendered as renderless - * components so each feature can optionally make use of React lifecycle methods. - */ - features = useFeatures(props, context.visualElement, preloadedFeatures); - } - /** - * The mount order and hierarchy is specific to ensure our element ref - * is hydrated by the time features fire their effects. - */ - return React__namespace.createElement(VisualElementHandler, { - visualElement: context.visualElement, - props: tslib.__assign(tslib.__assign({}, config), props) - }, features, React__namespace.createElement(MotionContext.Provider, { - value: context - }, useRender(Component, props, projectionId, useMotionRef(visualState, context.visualElement, externalRef), visualState, config.isStatic, context.visualElement))); - } - return React.forwardRef(MotionComponent); -} -function useLayoutId(_a) { - var _b; - var layoutId = _a.layoutId; - var layoutGroupId = (_b = React.useContext(LayoutGroupContext)) === null || _b === void 0 ? void 0 : _b.id; - return layoutGroupId && layoutId !== undefined ? layoutGroupId + "-" + layoutId : layoutId; -} - -/** - * Convert any React component into a `motion` component. The provided component - * **must** use `React.forwardRef` to the underlying DOM component you want to animate. - * - * ```jsx - * const Component = React.forwardRef((props, ref) => { - * return
- * }) - * - * const MotionComponent = motion(Component) - * ``` - * - * @public - */ -function createMotionProxy(createConfig) { - function custom(Component, customMotionComponentConfig) { - if (customMotionComponentConfig === void 0) { - customMotionComponentConfig = {}; - } - return createMotionComponent(createConfig(Component, customMotionComponentConfig)); - } - if (typeof Proxy === "undefined") { - return custom; - } - /** - * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc. - * Rather than generating them anew every render. - */ - var componentCache = new Map(); - return new Proxy(custom, { - /** - * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc. - * The prop name is passed through as `key` and we can use that to generate a `motion` - * DOM component with that name. - */ - get: function (_target, key) { - /** - * If this element doesn't exist in the component cache, create it and cache. - */ - if (!componentCache.has(key)) { - componentCache.set(key, custom(key)); - } - return componentCache.get(key); - } - }); -} - -/** - * We keep these listed seperately as we use the lowercase tag names as part - * of the runtime bundle to detect SVG components - */ -var lowercaseSVGElements = ["animate", "circle", "defs", "desc", "ellipse", "g", "image", "line", "filter", "marker", "mask", "metadata", "path", "pattern", "polygon", "polyline", "rect", "stop", "svg", "switch", "symbol", "text", "tspan", "use", "view"]; -function isSVGComponent(Component) { - if ( - /** - * If it's not a string, it's a custom React component. Currently we only support - * HTML custom React components. - */ - typeof Component !== "string" || - /** - * If it contains a dash, the element is a custom HTML webcomponent. - */ - Component.includes("-")) { - return false; - } else if ( - /** - * If it's in our list of lowercase SVG tags, it's an SVG component - */ - lowercaseSVGElements.indexOf(Component) > -1 || - /** - * If it contains a capital letter, it's an SVG component - */ - /[A-Z]/.test(Component)) { - return true; - } - return false; -} -var scaleCorrectors = {}; -function addScaleCorrector(correctors) { - Object.assign(scaleCorrectors, correctors); -} - -/** - * A list of all transformable axes. We'll use this list to generated a version - * of each axes for each transform. - */ -var transformAxes = ["", "X", "Y", "Z"]; -/** - * An ordered array of each transformable value. By default, transform values - * will be sorted to this order. - */ -var order = ["translate", "scale", "rotate", "skew"]; -/** - * Generate a list of every possible transform key. - */ -var transformProps = ["transformPerspective", "x", "y", "z"]; -order.forEach(function (operationKey) { - return transformAxes.forEach(function (axesKey) { - return transformProps.push(operationKey + axesKey); - }); -}); -/** - * A function to use with Array.sort to sort transform keys by their default order. - */ -function sortTransformProps(a, b) { - return transformProps.indexOf(a) - transformProps.indexOf(b); -} -/** - * A quick lookup for transform props. - */ -var transformPropSet = new Set(transformProps); -function isTransformProp(key) { - return transformPropSet.has(key); -} -/** - * A quick lookup for transform origin props - */ -var transformOriginProps = new Set(["originX", "originY", "originZ"]); -function isTransformOriginProp(key) { - return transformOriginProps.has(key); -} -function isForcedMotionValue(key, _a) { - var layout = _a.layout, - layoutId = _a.layoutId; - return isTransformProp(key) || isTransformOriginProp(key) || (layout || layoutId !== undefined) && (!!scaleCorrectors[key] || key === "opacity"); -} -var isMotionValue = function (value) { - return Boolean(value !== null && typeof value === "object" && value.getVelocity); -}; -var translateAlias = { - x: "translateX", - y: "translateY", - z: "translateZ", - transformPerspective: "perspective" -}; -/** - * Build a CSS transform style from individual x/y/scale etc properties. - * - * This outputs with a default order of transforms/scales/rotations, this can be customised by - * providing a transformTemplate function. - */ -function buildTransform(_a, _b, transformIsDefault, transformTemplate) { - var transform = _a.transform, - transformKeys = _a.transformKeys; - var _c = _b.enableHardwareAcceleration, - enableHardwareAcceleration = _c === void 0 ? true : _c, - _d = _b.allowTransformNone, - allowTransformNone = _d === void 0 ? true : _d; - // The transform string we're going to build into. - var transformString = ""; - // Transform keys into their default order - this will determine the output order. - transformKeys.sort(sortTransformProps); - // Track whether the defined transform has a defined z so we don't add a - // second to enable hardware acceleration - var transformHasZ = false; - // Loop over each transform and build them into transformString - var numTransformKeys = transformKeys.length; - for (var i = 0; i < numTransformKeys; i++) { - var key = transformKeys[i]; - transformString += "".concat(translateAlias[key] || key, "(").concat(transform[key], ") "); - if (key === "z") transformHasZ = true; - } - if (!transformHasZ && enableHardwareAcceleration) { - transformString += "translateZ(0)"; - } else { - transformString = transformString.trim(); - } - // If we have a custom `transform` template, pass our transform values and - // generated transformString to that before returning - if (transformTemplate) { - transformString = transformTemplate(transform, transformIsDefault ? "" : transformString); - } else if (allowTransformNone && transformIsDefault) { - transformString = "none"; - } - return transformString; -} -/** - * Build a transformOrigin style. Uses the same defaults as the browser for - * undefined origins. - */ -function buildTransformOrigin(_a) { - var _b = _a.originX, - originX = _b === void 0 ? "50%" : _b, - _c = _a.originY, - originY = _c === void 0 ? "50%" : _c, - _d = _a.originZ, - originZ = _d === void 0 ? 0 : _d; - return "".concat(originX, " ").concat(originY, " ").concat(originZ); -} - -/** - * Returns true if the provided key is a CSS variable - */ -function isCSSVariable$1(key) { - return key.startsWith("--"); -} - -/** - * Provided a value and a ValueType, returns the value as that value type. - */ -var getValueAsType = function (value, type) { - return type && typeof value === "number" ? type.transform(value) : value; -}; -var int = tslib.__assign(tslib.__assign({}, styleValueTypes.number), { - transform: Math.round -}); -var numberValueTypes = { - // Border props - borderWidth: styleValueTypes.px, - borderTopWidth: styleValueTypes.px, - borderRightWidth: styleValueTypes.px, - borderBottomWidth: styleValueTypes.px, - borderLeftWidth: styleValueTypes.px, - borderRadius: styleValueTypes.px, - radius: styleValueTypes.px, - borderTopLeftRadius: styleValueTypes.px, - borderTopRightRadius: styleValueTypes.px, - borderBottomRightRadius: styleValueTypes.px, - borderBottomLeftRadius: styleValueTypes.px, - // Positioning props - width: styleValueTypes.px, - maxWidth: styleValueTypes.px, - height: styleValueTypes.px, - maxHeight: styleValueTypes.px, - size: styleValueTypes.px, - top: styleValueTypes.px, - right: styleValueTypes.px, - bottom: styleValueTypes.px, - left: styleValueTypes.px, - // Spacing props - padding: styleValueTypes.px, - paddingTop: styleValueTypes.px, - paddingRight: styleValueTypes.px, - paddingBottom: styleValueTypes.px, - paddingLeft: styleValueTypes.px, - margin: styleValueTypes.px, - marginTop: styleValueTypes.px, - marginRight: styleValueTypes.px, - marginBottom: styleValueTypes.px, - marginLeft: styleValueTypes.px, - // Transform props - rotate: styleValueTypes.degrees, - rotateX: styleValueTypes.degrees, - rotateY: styleValueTypes.degrees, - rotateZ: styleValueTypes.degrees, - scale: styleValueTypes.scale, - scaleX: styleValueTypes.scale, - scaleY: styleValueTypes.scale, - scaleZ: styleValueTypes.scale, - skew: styleValueTypes.degrees, - skewX: styleValueTypes.degrees, - skewY: styleValueTypes.degrees, - distance: styleValueTypes.px, - translateX: styleValueTypes.px, - translateY: styleValueTypes.px, - translateZ: styleValueTypes.px, - x: styleValueTypes.px, - y: styleValueTypes.px, - z: styleValueTypes.px, - perspective: styleValueTypes.px, - transformPerspective: styleValueTypes.px, - opacity: styleValueTypes.alpha, - originX: styleValueTypes.progressPercentage, - originY: styleValueTypes.progressPercentage, - originZ: styleValueTypes.px, - // Misc - zIndex: int, - // SVG - fillOpacity: styleValueTypes.alpha, - strokeOpacity: styleValueTypes.alpha, - numOctaves: int -}; -function buildHTMLStyles(state, latestValues, options, transformTemplate) { - var _a; - var style = state.style, - vars = state.vars, - transform = state.transform, - transformKeys = state.transformKeys, - transformOrigin = state.transformOrigin; - // Empty the transformKeys array. As we're throwing out refs to its items - // this might not be as cheap as suspected. Maybe using the array as a buffer - // with a manual incrementation would be better. - transformKeys.length = 0; - // Track whether we encounter any transform or transformOrigin values. - var hasTransform = false; - var hasTransformOrigin = false; - // Does the calculated transform essentially equal "none"? - var transformIsNone = true; - /** - * Loop over all our latest animated values and decide whether to handle them - * as a style or CSS variable. - * - * Transforms and transform origins are kept seperately for further processing. - */ - for (var key in latestValues) { - var value = latestValues[key]; - /** - * If this is a CSS variable we don't do any further processing. - */ - if (isCSSVariable$1(key)) { - vars[key] = value; - continue; - } - // Convert the value to its default value type, ie 0 -> "0px" - var valueType = numberValueTypes[key]; - var valueAsType = getValueAsType(value, valueType); - if (isTransformProp(key)) { - // If this is a transform, flag to enable further transform processing - hasTransform = true; - transform[key] = valueAsType; - transformKeys.push(key); - // If we already know we have a non-default transform, early return - if (!transformIsNone) continue; - // Otherwise check to see if this is a default transform - if (value !== ((_a = valueType.default) !== null && _a !== void 0 ? _a : 0)) transformIsNone = false; - } else if (isTransformOriginProp(key)) { - transformOrigin[key] = valueAsType; - // If this is a transform origin, flag and enable further transform-origin processing - hasTransformOrigin = true; - } else { - style[key] = valueAsType; - } - } - if (hasTransform) { - style.transform = buildTransform(state, options, transformIsNone, transformTemplate); - } else if (transformTemplate) { - style.transform = transformTemplate({}, ""); - } else if (!latestValues.transform && style.transform) { - style.transform = "none"; - } - if (hasTransformOrigin) { - style.transformOrigin = buildTransformOrigin(transformOrigin); - } -} -var createHtmlRenderState = function () { - return { - style: {}, - transform: {}, - transformKeys: [], - transformOrigin: {}, - vars: {} - }; -}; -function copyRawValuesOnly(target, source, props) { - for (var key in source) { - if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) { - target[key] = source[key]; - } - } -} -function useInitialMotionValues(_a, visualState, isStatic) { - var transformTemplate = _a.transformTemplate; - return React.useMemo(function () { - var state = createHtmlRenderState(); - buildHTMLStyles(state, visualState, { - enableHardwareAcceleration: !isStatic - }, transformTemplate); - var vars = state.vars, - style = state.style; - return tslib.__assign(tslib.__assign({}, vars), style); - }, [visualState]); -} -function useStyle(props, visualState, isStatic) { - var styleProp = props.style || {}; - var style = {}; - /** - * Copy non-Motion Values straight into style - */ - copyRawValuesOnly(style, styleProp, props); - Object.assign(style, useInitialMotionValues(props, visualState, isStatic)); - if (props.transformValues) { - style = props.transformValues(style); - } - return style; -} -function useHTMLProps(props, visualState, isStatic) { - // The `any` isn't ideal but it is the type of createElement props argument - var htmlProps = {}; - var style = useStyle(props, visualState, isStatic); - if (Boolean(props.drag) && props.dragListener !== false) { - // Disable the ghost element when a user drags - htmlProps.draggable = false; - // Disable text selection - style.userSelect = style.WebkitUserSelect = style.WebkitTouchCallout = "none"; - // Disable scrolling on the draggable direction - style.touchAction = props.drag === true ? "none" : "pan-".concat(props.drag === "x" ? "y" : "x"); - } - htmlProps.style = style; - return htmlProps; -} - -/** - * A list of all valid MotionProps. - * - * @privateRemarks - * This doesn't throw if a `MotionProp` name is missing - it should. - */ -var validMotionProps = new Set(["initial", "animate", "exit", "style", "variants", "transition", "transformTemplate", "transformValues", "custom", "inherit", "layout", "layoutId", "layoutDependency", "onLayoutAnimationStart", "onLayoutAnimationComplete", "onLayoutMeasure", "onBeforeLayoutMeasure", "onAnimationStart", "onAnimationComplete", "onUpdate", "onDragStart", "onDrag", "onDragEnd", "onMeasureDragConstraints", "onDirectionLock", "onDragTransitionEnd", "drag", "dragControls", "dragListener", "dragConstraints", "dragDirectionLock", "dragSnapToOrigin", "_dragX", "_dragY", "dragElastic", "dragMomentum", "dragPropagation", "dragTransition", "whileDrag", "onPan", "onPanStart", "onPanEnd", "onPanSessionStart", "onTap", "onTapStart", "onTapCancel", "onHoverStart", "onHoverEnd", "whileFocus", "whileTap", "whileHover", "whileInView", "onViewportEnter", "onViewportLeave", "viewport", "layoutScroll"]); -/** - * Check whether a prop name is a valid `MotionProp` key. - * - * @param key - Name of the property to check - * @returns `true` is key is a valid `MotionProp`. - * - * @public - */ -function isValidMotionProp(key) { - return validMotionProps.has(key); -} -var shouldForward = function (key) { - return !isValidMotionProp(key); -}; -function loadExternalIsValidProp(isValidProp) { - if (!isValidProp) return; - // Explicitly filter our events - shouldForward = function (key) { - return key.startsWith("on") ? !isValidMotionProp(key) : isValidProp(key); - }; -} -/** - * Emotion and Styled Components both allow users to pass through arbitrary props to their components - * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which - * of these should be passed to the underlying DOM node. - * - * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props - * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props - * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of - * `@emotion/is-prop-valid`, however to fix this problem we need to use it. - * - * By making it an optionalDependency we can offer this functionality only in the situations where it's - * actually required. - */ -try { - /** - * We attempt to import this package but require won't be defined in esm environments, in that case - * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed - * in favour of explicit injection. - */ - loadExternalIsValidProp((__webpack_require__(/*! @emotion/is-prop-valid */ "../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js")["default"])); -} catch (_a) { - // We don't need to actually do anything here - the fallback is the existing `isPropValid`. -} -function filterProps(props, isDom, forwardMotionProps) { - var filteredProps = {}; - for (var key in props) { - if (shouldForward(key) || forwardMotionProps === true && isValidMotionProp(key) || !isDom && !isValidMotionProp(key) || - // If trying to use native HTML drag events, forward drag listeners - props["draggable"] && key.startsWith("onDrag")) { - filteredProps[key] = props[key]; - } - } - return filteredProps; -} -function calcOrigin$1(origin, offset, size) { - return typeof origin === "string" ? origin : styleValueTypes.px.transform(offset + size * origin); -} -/** - * The SVG transform origin defaults are different to CSS and is less intuitive, - * so we use the measured dimensions of the SVG to reconcile these. - */ -function calcSVGTransformOrigin(dimensions, originX, originY) { - var pxOriginX = calcOrigin$1(originX, dimensions.x, dimensions.width); - var pxOriginY = calcOrigin$1(originY, dimensions.y, dimensions.height); - return "".concat(pxOriginX, " ").concat(pxOriginY); -} -var dashKeys = { - offset: "stroke-dashoffset", - array: "stroke-dasharray" -}; -var camelKeys = { - offset: "strokeDashoffset", - array: "strokeDasharray" -}; -/** - * Build SVG path properties. Uses the path's measured length to convert - * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset - * and stroke-dasharray attributes. - * - * This function is mutative to reduce per-frame GC. - */ -function buildSVGPath(attrs, length, spacing, offset, useDashCase) { - if (spacing === void 0) { - spacing = 1; - } - if (offset === void 0) { - offset = 0; - } - if (useDashCase === void 0) { - useDashCase = true; - } - // Normalise path length by setting SVG attribute pathLength to 1 - attrs.pathLength = 1; - // We use dash case when setting attributes directly to the DOM node and camel case - // when defining props on a React component. - var keys = useDashCase ? dashKeys : camelKeys; - // Build the dash offset - attrs[keys.offset] = styleValueTypes.px.transform(-offset); - // Build the dash array - var pathLength = styleValueTypes.px.transform(length); - var pathSpacing = styleValueTypes.px.transform(spacing); - attrs[keys.array] = "".concat(pathLength, " ").concat(pathSpacing); -} - -/** - * Build SVG visual attrbutes, like cx and style.transform - */ -function buildSVGAttrs(state, _a, options, transformTemplate) { - var attrX = _a.attrX, - attrY = _a.attrY, - originX = _a.originX, - originY = _a.originY, - pathLength = _a.pathLength, - _b = _a.pathSpacing, - pathSpacing = _b === void 0 ? 1 : _b, - _c = _a.pathOffset, - pathOffset = _c === void 0 ? 0 : _c, - // This is object creation, which we try to avoid per-frame. - latest = tslib.__rest(_a, ["attrX", "attrY", "originX", "originY", "pathLength", "pathSpacing", "pathOffset"]); - buildHTMLStyles(state, latest, options, transformTemplate); - state.attrs = state.style; - state.style = {}; - var attrs = state.attrs, - style = state.style, - dimensions = state.dimensions; - /** - * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs - * and copy it into style. - */ - if (attrs.transform) { - if (dimensions) style.transform = attrs.transform; - delete attrs.transform; - } - // Parse transformOrigin - if (dimensions && (originX !== undefined || originY !== undefined || style.transform)) { - style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5); - } - // Treat x/y not as shortcuts but as actual attributes - if (attrX !== undefined) attrs.x = attrX; - if (attrY !== undefined) attrs.y = attrY; - // Build SVG path if one has been defined - if (pathLength !== undefined) { - buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false); - } -} -var createSvgRenderState = function () { - return tslib.__assign(tslib.__assign({}, createHtmlRenderState()), { - attrs: {} - }); -}; -function useSVGProps(props, visualState) { - var visualProps = React.useMemo(function () { - var state = createSvgRenderState(); - buildSVGAttrs(state, visualState, { - enableHardwareAcceleration: false - }, props.transformTemplate); - return tslib.__assign(tslib.__assign({}, state.attrs), { - style: tslib.__assign({}, state.style) - }); - }, [visualState]); - if (props.style) { - var rawStyles = {}; - copyRawValuesOnly(rawStyles, props.style, props); - visualProps.style = tslib.__assign(tslib.__assign({}, rawStyles), visualProps.style); - } - return visualProps; -} -function createUseRender(forwardMotionProps) { - if (forwardMotionProps === void 0) { - forwardMotionProps = false; - } - var useRender = function (Component, props, projectionId, ref, _a, isStatic) { - var latestValues = _a.latestValues; - var useVisualProps = isSVGComponent(Component) ? useSVGProps : useHTMLProps; - var visualProps = useVisualProps(props, latestValues, isStatic); - var filteredProps = filterProps(props, typeof Component === "string", forwardMotionProps); - var elementProps = tslib.__assign(tslib.__assign(tslib.__assign({}, filteredProps), visualProps), { - ref: ref - }); - if (projectionId) { - elementProps["data-projection-id"] = projectionId; - } - return React.createElement(Component, elementProps); - }; - return useRender; -} -var CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g; -var REPLACE_TEMPLATE = "$1-$2"; -/** - * Convert camelCase to dash-case properties. - */ -var camelToDash = function (str) { - return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase(); -}; -function renderHTML(element, _a, styleProp, projection) { - var style = _a.style, - vars = _a.vars; - Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp)); - // Loop over any CSS variables and assign those. - for (var key in vars) { - element.style.setProperty(key, vars[key]); - } -} - -/** - * A set of attribute names that are always read/written as camel case. - */ -var camelCaseAttributes = new Set(["baseFrequency", "diffuseConstant", "kernelMatrix", "kernelUnitLength", "keySplines", "keyTimes", "limitingConeAngle", "markerHeight", "markerWidth", "numOctaves", "targetX", "targetY", "surfaceScale", "specularConstant", "specularExponent", "stdDeviation", "tableValues", "viewBox", "gradientTransform", "pathLength"]); -function renderSVG(element, renderState, _styleProp, projection) { - renderHTML(element, renderState, undefined, projection); - for (var key in renderState.attrs) { - element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]); - } -} -function scrapeMotionValuesFromProps$1(props) { - var style = props.style; - var newValues = {}; - for (var key in style) { - if (isMotionValue(style[key]) || isForcedMotionValue(key, props)) { - newValues[key] = style[key]; - } - } - return newValues; -} -function scrapeMotionValuesFromProps(props) { - var newValues = scrapeMotionValuesFromProps$1(props); - for (var key in props) { - if (isMotionValue(props[key])) { - var targetKey = key === "x" || key === "y" ? "attr" + key.toUpperCase() : key; - newValues[targetKey] = props[key]; - } - } - return newValues; -} -function isAnimationControls(v) { - return typeof v === "object" && typeof v.start === "function"; -} -var isKeyframesTarget = function (v) { - return Array.isArray(v); -}; -var isCustomValue = function (v) { - return Boolean(v && typeof v === "object" && v.mix && v.toValue); -}; -var resolveFinalValueInKeyframes = function (v) { - // TODO maybe throw if v.length - 1 is placeholder token? - return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v; -}; - -/** - * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself - * - * TODO: Remove and move to library - */ -function resolveMotionValue(value) { - var unwrappedValue = isMotionValue(value) ? value.get() : value; - return isCustomValue(unwrappedValue) ? unwrappedValue.toValue() : unwrappedValue; -} -function makeState(_a, props, context, presenceContext) { - var scrapeMotionValuesFromProps = _a.scrapeMotionValuesFromProps, - createRenderState = _a.createRenderState, - onMount = _a.onMount; - var state = { - latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps), - renderState: createRenderState() - }; - if (onMount) { - state.mount = function (instance) { - return onMount(props, instance, state); - }; - } - return state; -} -var makeUseVisualState = function (config) { - return function (props, isStatic) { - var context = React.useContext(MotionContext); - var presenceContext = React.useContext(PresenceContext); - return isStatic ? makeState(config, props, context, presenceContext) : useConstant(function () { - return makeState(config, props, context, presenceContext); - }); - }; -}; -function makeLatestValues(props, context, presenceContext, scrapeMotionValues) { - var values = {}; - var blockInitialAnimation = (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false; - var motionValues = scrapeMotionValues(props); - for (var key in motionValues) { - values[key] = resolveMotionValue(motionValues[key]); - } - var initial = props.initial, - animate = props.animate; - var isControllingVariants = checkIfControllingVariants(props); - var isVariantNode = checkIfVariantNode(props); - if (context && isVariantNode && !isControllingVariants && props.inherit !== false) { - initial !== null && initial !== void 0 ? initial : initial = context.initial; - animate !== null && animate !== void 0 ? animate : animate = context.animate; - } - var initialAnimationIsBlocked = blockInitialAnimation || initial === false; - var variantToSet = initialAnimationIsBlocked ? animate : initial; - if (variantToSet && typeof variantToSet !== "boolean" && !isAnimationControls(variantToSet)) { - var list = Array.isArray(variantToSet) ? variantToSet : [variantToSet]; - list.forEach(function (definition) { - var resolved = resolveVariantFromProps(props, definition); - if (!resolved) return; - var transitionEnd = resolved.transitionEnd; - resolved.transition; - var target = tslib.__rest(resolved, ["transitionEnd", "transition"]); - for (var key in target) { - var valueTarget = target[key]; - if (Array.isArray(valueTarget)) { - /** - * Take final keyframe if the initial animation is blocked because - * we want to initialise at the end of that blocked animation. - */ - var index = initialAnimationIsBlocked ? valueTarget.length - 1 : 0; - valueTarget = valueTarget[index]; - } - if (valueTarget !== null) { - values[key] = valueTarget; - } - } - for (var key in transitionEnd) values[key] = transitionEnd[key]; - }); - } - return values; -} -var svgMotionConfig = { - useVisualState: makeUseVisualState({ - scrapeMotionValuesFromProps: scrapeMotionValuesFromProps, - createRenderState: createSvgRenderState, - onMount: function (props, instance, _a) { - var renderState = _a.renderState, - latestValues = _a.latestValues; - try { - renderState.dimensions = typeof instance.getBBox === "function" ? instance.getBBox() : instance.getBoundingClientRect(); - } catch (e) { - // Most likely trying to measure an unrendered element under Firefox - renderState.dimensions = { - x: 0, - y: 0, - width: 0, - height: 0 - }; - } - buildSVGAttrs(renderState, latestValues, { - enableHardwareAcceleration: false - }, props.transformTemplate); - renderSVG(instance, renderState); - } - }) -}; -var htmlMotionConfig = { - useVisualState: makeUseVisualState({ - scrapeMotionValuesFromProps: scrapeMotionValuesFromProps$1, - createRenderState: createHtmlRenderState - }) -}; -function createDomMotionConfig(Component, _a, preloadedFeatures, createVisualElement, projectionNodeConstructor) { - var _b = _a.forwardMotionProps, - forwardMotionProps = _b === void 0 ? false : _b; - var baseConfig = isSVGComponent(Component) ? svgMotionConfig : htmlMotionConfig; - return tslib.__assign(tslib.__assign({}, baseConfig), { - preloadedFeatures: preloadedFeatures, - useRender: createUseRender(forwardMotionProps), - createVisualElement: createVisualElement, - projectionNodeConstructor: projectionNodeConstructor, - Component: Component - }); -} -exports.AnimationType = void 0; -(function (AnimationType) { - AnimationType["Animate"] = "animate"; - AnimationType["Hover"] = "whileHover"; - AnimationType["Tap"] = "whileTap"; - AnimationType["Drag"] = "whileDrag"; - AnimationType["Focus"] = "whileFocus"; - AnimationType["InView"] = "whileInView"; - AnimationType["Exit"] = "exit"; -})(exports.AnimationType || (exports.AnimationType = {})); -function addDomEvent(target, eventName, handler, options) { - if (options === void 0) { - options = { - passive: true - }; - } - target.addEventListener(eventName, handler, options); - return function () { - return target.removeEventListener(eventName, handler); - }; -} -/** - * Attaches an event listener directly to the provided DOM element. - * - * Bypassing React's event system can be desirable, for instance when attaching non-passive - * event handlers. - * - * ```jsx - * const ref = useRef(null) - * - * useDomEvent(ref, 'wheel', onWheel, { passive: false }) - * - * return
- * ``` - * - * @param ref - React.RefObject that's been provided to the element you want to bind the listener to. - * @param eventName - Name of the event you want listen for. - * @param handler - Function to fire when receiving the event. - * @param options - Options to pass to `Event.addEventListener`. - * - * @public - */ -function useDomEvent(ref, eventName, handler, options) { - React.useEffect(function () { - var element = ref.current; - if (handler && element) { - return addDomEvent(element, eventName, handler, options); - } - }, [ref, eventName, handler, options]); -} - -/** - * - * @param props - * @param ref - * @internal - */ -function useFocusGesture(_a) { - var whileFocus = _a.whileFocus, - visualElement = _a.visualElement; - var onFocus = function () { - var _a; - (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Focus, true); - }; - var onBlur = function () { - var _a; - (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Focus, false); - }; - useDomEvent(visualElement, "focus", whileFocus ? onFocus : undefined); - useDomEvent(visualElement, "blur", whileFocus ? onBlur : undefined); -} -function isMouseEvent(event) { - // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check. - if (typeof PointerEvent !== "undefined" && event instanceof PointerEvent) { - return !!(event.pointerType === "mouse"); - } - return event instanceof MouseEvent; -} -function isTouchEvent(event) { - var hasTouches = !!event.touches; - return hasTouches; -} - -/** - * Filters out events not attached to the primary pointer (currently left mouse button) - * @param eventHandler - */ -function filterPrimaryPointer(eventHandler) { - return function (event) { - var isMouseEvent = event instanceof MouseEvent; - var isPrimaryPointer = !isMouseEvent || isMouseEvent && event.button === 0; - if (isPrimaryPointer) { - eventHandler(event); - } - }; -} -var defaultPagePoint = { - pageX: 0, - pageY: 0 -}; -function pointFromTouch(e, pointType) { - if (pointType === void 0) { - pointType = "page"; - } - var primaryTouch = e.touches[0] || e.changedTouches[0]; - var point = primaryTouch || defaultPagePoint; - return { - x: point[pointType + "X"], - y: point[pointType + "Y"] - }; -} -function pointFromMouse(point, pointType) { - if (pointType === void 0) { - pointType = "page"; - } - return { - x: point[pointType + "X"], - y: point[pointType + "Y"] - }; -} -function extractEventInfo(event, pointType) { - if (pointType === void 0) { - pointType = "page"; - } - return { - point: isTouchEvent(event) ? pointFromTouch(event, pointType) : pointFromMouse(event, pointType) - }; -} -var wrapHandler = function (handler, shouldFilterPrimaryPointer) { - if (shouldFilterPrimaryPointer === void 0) { - shouldFilterPrimaryPointer = false; - } - var listener = function (event) { - return handler(event, extractEventInfo(event)); - }; - return shouldFilterPrimaryPointer ? filterPrimaryPointer(listener) : listener; -}; - -// We check for event support via functions in case they've been mocked by a testing suite. -var supportsPointerEvents = function () { - return isBrowser && window.onpointerdown === null; -}; -var supportsTouchEvents = function () { - return isBrowser && window.ontouchstart === null; -}; -var supportsMouseEvents = function () { - return isBrowser && window.onmousedown === null; -}; -var mouseEventNames = { - pointerdown: "mousedown", - pointermove: "mousemove", - pointerup: "mouseup", - pointercancel: "mousecancel", - pointerover: "mouseover", - pointerout: "mouseout", - pointerenter: "mouseenter", - pointerleave: "mouseleave" -}; -var touchEventNames = { - pointerdown: "touchstart", - pointermove: "touchmove", - pointerup: "touchend", - pointercancel: "touchcancel" -}; -function getPointerEventName(name) { - if (supportsPointerEvents()) { - return name; - } else if (supportsTouchEvents()) { - return touchEventNames[name]; - } else if (supportsMouseEvents()) { - return mouseEventNames[name]; - } - return name; -} -function addPointerEvent(target, eventName, handler, options) { - return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === "pointerdown"), options); -} -function usePointerEvent(ref, eventName, handler, options) { - return useDomEvent(ref, getPointerEventName(eventName), handler && wrapHandler(handler, eventName === "pointerdown"), options); -} -function createLock(name) { - var lock = null; - return function () { - var openLock = function () { - lock = null; - }; - if (lock === null) { - lock = name; - return openLock; - } - return false; - }; -} -var globalHorizontalLock = createLock("dragHorizontal"); -var globalVerticalLock = createLock("dragVertical"); -function getGlobalLock(drag) { - var lock = false; - if (drag === "y") { - lock = globalVerticalLock(); - } else if (drag === "x") { - lock = globalHorizontalLock(); - } else { - var openHorizontal_1 = globalHorizontalLock(); - var openVertical_1 = globalVerticalLock(); - if (openHorizontal_1 && openVertical_1) { - lock = function () { - openHorizontal_1(); - openVertical_1(); - }; - } else { - // Release the locks because we don't use them - if (openHorizontal_1) openHorizontal_1(); - if (openVertical_1) openVertical_1(); - } - } - return lock; -} -function isDragActive() { - // Check the gesture lock - if we get it, it means no drag gesture is active - // and we can safely fire the tap gesture. - var openGestureLock = getGlobalLock(true); - if (!openGestureLock) return true; - openGestureLock(); - return false; -} -function createHoverEvent(visualElement, isActive, callback) { - return function (event, info) { - var _a; - if (!isMouseEvent(event) || isDragActive()) return; - /** - * Ensure we trigger animations before firing event callback - */ - (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Hover, isActive); - callback === null || callback === void 0 ? void 0 : callback(event, info); - }; -} -function useHoverGesture(_a) { - var onHoverStart = _a.onHoverStart, - onHoverEnd = _a.onHoverEnd, - whileHover = _a.whileHover, - visualElement = _a.visualElement; - usePointerEvent(visualElement, "pointerenter", onHoverStart || whileHover ? createHoverEvent(visualElement, true, onHoverStart) : undefined, { - passive: !onHoverStart - }); - usePointerEvent(visualElement, "pointerleave", onHoverEnd || whileHover ? createHoverEvent(visualElement, false, onHoverEnd) : undefined, { - passive: !onHoverEnd - }); -} - -/** - * Recursively traverse up the tree to check whether the provided child node - * is the parent or a descendant of it. - * - * @param parent - Element to find - * @param child - Element to test against parent - */ -var isNodeOrChild = function (parent, child) { - if (!child) { - return false; - } else if (parent === child) { - return true; - } else { - return isNodeOrChild(parent, child.parentElement); - } -}; -function useUnmountEffect(callback) { - return React.useEffect(function () { - return function () { - return callback(); - }; - }, []); -} - -/** - * @param handlers - - * @internal - */ -function useTapGesture(_a) { - var onTap = _a.onTap, - onTapStart = _a.onTapStart, - onTapCancel = _a.onTapCancel, - whileTap = _a.whileTap, - visualElement = _a.visualElement; - var hasPressListeners = onTap || onTapStart || onTapCancel || whileTap; - var isPressing = React.useRef(false); - var cancelPointerEndListeners = React.useRef(null); - /** - * Only set listener to passive if there are no external listeners. - */ - var eventOptions = { - passive: !(onTapStart || onTap || onTapCancel || onPointerDown) - }; - function removePointerEndListener() { - var _a; - (_a = cancelPointerEndListeners.current) === null || _a === void 0 ? void 0 : _a.call(cancelPointerEndListeners); - cancelPointerEndListeners.current = null; - } - function checkPointerEnd() { - var _a; - removePointerEndListener(); - isPressing.current = false; - (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Tap, false); - return !isDragActive(); - } - function onPointerUp(event, info) { - if (!checkPointerEnd()) return; - /** - * We only count this as a tap gesture if the event.target is the same - * as, or a child of, this component's element - */ - !isNodeOrChild(visualElement.getInstance(), event.target) ? onTapCancel === null || onTapCancel === void 0 ? void 0 : onTapCancel(event, info) : onTap === null || onTap === void 0 ? void 0 : onTap(event, info); - } - function onPointerCancel(event, info) { - if (!checkPointerEnd()) return; - onTapCancel === null || onTapCancel === void 0 ? void 0 : onTapCancel(event, info); - } - function onPointerDown(event, info) { - var _a; - removePointerEndListener(); - if (isPressing.current) return; - isPressing.current = true; - cancelPointerEndListeners.current = popmotion.pipe(addPointerEvent(window, "pointerup", onPointerUp, eventOptions), addPointerEvent(window, "pointercancel", onPointerCancel, eventOptions)); - /** - * Ensure we trigger animations before firing event callback - */ - (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Tap, true); - onTapStart === null || onTapStart === void 0 ? void 0 : onTapStart(event, info); - } - usePointerEvent(visualElement, "pointerdown", hasPressListeners ? onPointerDown : undefined, eventOptions); - useUnmountEffect(removePointerEndListener); -} -var warned = new Set(); -function warnOnce(condition, message, element) { - if (condition || warned.has(message)) return; - console.warn(message); - if (element) console.warn(element); - warned.add(message); -} - -/** - * Map an IntersectionHandler callback to an element. We only ever make one handler for one - * element, so even though these handlers might all be triggered by different - * observers, we can keep them in the same map. - */ -var observerCallbacks = new WeakMap(); -/** - * Multiple observers can be created for multiple element/document roots. Each with - * different settings. So here we store dictionaries of observers to each root, - * using serialised settings (threshold/margin) as lookup keys. - */ -var observers = new WeakMap(); -var fireObserverCallback = function (entry) { - var _a; - (_a = observerCallbacks.get(entry.target)) === null || _a === void 0 ? void 0 : _a(entry); -}; -var fireAllObserverCallbacks = function (entries) { - entries.forEach(fireObserverCallback); -}; -function initIntersectionObserver(_a) { - var root = _a.root, - options = tslib.__rest(_a, ["root"]); - var lookupRoot = root || document; - /** - * If we don't have an observer lookup map for this root, create one. - */ - if (!observers.has(lookupRoot)) { - observers.set(lookupRoot, {}); - } - var rootObservers = observers.get(lookupRoot); - var key = JSON.stringify(options); - /** - * If we don't have an observer for this combination of root and settings, - * create one. - */ - if (!rootObservers[key]) { - rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, tslib.__assign({ - root: root - }, options)); - } - return rootObservers[key]; -} -function observeIntersection(element, options, callback) { - var rootInteresectionObserver = initIntersectionObserver(options); - observerCallbacks.set(element, callback); - rootInteresectionObserver.observe(element); - return function () { - observerCallbacks.delete(element); - rootInteresectionObserver.unobserve(element); - }; -} -function useViewport(_a) { - var visualElement = _a.visualElement, - whileInView = _a.whileInView, - onViewportEnter = _a.onViewportEnter, - onViewportLeave = _a.onViewportLeave, - _b = _a.viewport, - viewport = _b === void 0 ? {} : _b; - var state = React.useRef({ - hasEnteredView: false, - isInView: false - }); - var shouldObserve = Boolean(whileInView || onViewportEnter || onViewportLeave); - if (viewport.once && state.current.hasEnteredView) shouldObserve = false; - var useObserver = typeof IntersectionObserver === "undefined" ? useMissingIntersectionObserver : useIntersectionObserver; - useObserver(shouldObserve, state.current, visualElement, viewport); -} -var thresholdNames = { - some: 0, - all: 1 -}; -function useIntersectionObserver(shouldObserve, state, visualElement, _a) { - var root = _a.root, - rootMargin = _a.margin, - _b = _a.amount, - amount = _b === void 0 ? "some" : _b, - once = _a.once; - React.useEffect(function () { - if (!shouldObserve) return; - var options = { - root: root === null || root === void 0 ? void 0 : root.current, - rootMargin: rootMargin, - threshold: typeof amount === "number" ? amount : thresholdNames[amount] - }; - var intersectionCallback = function (entry) { - var _a; - var isIntersecting = entry.isIntersecting; - /** - * If there's been no change in the viewport state, early return. - */ - if (state.isInView === isIntersecting) return; - state.isInView = isIntersecting; - /** - * Handle hasEnteredView. If this is only meant to run once, and - * element isn't visible, early return. Otherwise set hasEnteredView to true. - */ - if (once && !isIntersecting && state.hasEnteredView) { - return; - } else if (isIntersecting) { - state.hasEnteredView = true; - } - (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.InView, isIntersecting); - /** - * Use the latest committed props rather than the ones in scope - * when this observer is created - */ - var props = visualElement.getProps(); - var callback = isIntersecting ? props.onViewportEnter : props.onViewportLeave; - callback === null || callback === void 0 ? void 0 : callback(entry); - }; - return observeIntersection(visualElement.getInstance(), options, intersectionCallback); - }, [shouldObserve, root, rootMargin, amount]); -} -/** - * If IntersectionObserver is missing, we activate inView and fire onViewportEnter - * on mount. This way, the page will be in the state the author expects users - * to see it in for everyone. - */ -function useMissingIntersectionObserver(shouldObserve, state, visualElement, _a) { - var _b = _a.fallback, - fallback = _b === void 0 ? true : _b; - React.useEffect(function () { - if (!shouldObserve || !fallback) return; - if (env !== "production") { - warnOnce(false, "IntersectionObserver not available on this device. whileInView animations will trigger on mount."); - } - /** - * Fire this in an rAF because, at this point, the animation state - * won't have flushed for the first time and there's certain logic in - * there that behaves differently on the initial animation. - * - * This hook should be quite rarely called so setting this in an rAF - * is preferred to changing the behaviour of the animation state. - */ - requestAnimationFrame(function () { - var _a; - state.hasEnteredView = true; - var onViewportEnter = visualElement.getProps().onViewportEnter; - onViewportEnter === null || onViewportEnter === void 0 ? void 0 : onViewportEnter(null); - (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.InView, true); - }); - }, [shouldObserve]); -} -var makeRenderlessComponent = function (hook) { - return function (props) { - hook(props); - return null; - }; -}; -var gestureAnimations = { - inView: makeRenderlessComponent(useViewport), - tap: makeRenderlessComponent(useTapGesture), - focus: makeRenderlessComponent(useFocusGesture), - hover: makeRenderlessComponent(useHoverGesture) -}; -var counter = 0; -var incrementId = function () { - return counter++; -}; -var useId = function () { - return useConstant(incrementId); -}; -/** - * Ideally we'd use the following code to support React 18 optionally. - * But this fairly fails in Webpack (otherwise treeshaking wouldn't work at all). - * Need to come up with a different way of figuring this out. - */ -// export const useId = (React as any).useId -// ? (React as any).useId -// : () => useConstant(incrementId) - -/** - * When a component is the child of `AnimatePresence`, it can use `usePresence` - * to access information about whether it's still present in the React tree. - * - * ```jsx - * import { usePresence } from "framer-motion" - * - * export const Component = () => { - * const [isPresent, safeToRemove] = usePresence() - * - * useEffect(() => { - * !isPresent && setTimeout(safeToRemove, 1000) - * }, [isPresent]) - * - * return
- * } - * ``` - * - * If `isPresent` is `false`, it means that a component has been removed the tree, but - * `AnimatePresence` won't really remove it until `safeToRemove` has been called. - * - * @public - */ -function usePresence() { - var context = React.useContext(PresenceContext); - if (context === null) return [true, null]; - var isPresent = context.isPresent, - onExitComplete = context.onExitComplete, - register = context.register; - // It's safe to call the following hooks conditionally (after an early return) because the context will always - // either be null or non-null for the lifespan of the component. - // Replace with useId when released in React - var id = useId(); - React.useEffect(function () { - return register(id); - }, []); - var safeToRemove = function () { - return onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete(id); - }; - return !isPresent && onExitComplete ? [false, safeToRemove] : [true]; -} -/** - * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present. - * There is no `safeToRemove` function. - * - * ```jsx - * import { useIsPresent } from "framer-motion" - * - * export const Component = () => { - * const isPresent = useIsPresent() - * - * useEffect(() => { - * !isPresent && console.log("I've been removed!") - * }, [isPresent]) - * - * return
- * } - * ``` - * - * @public - */ -function useIsPresent() { - return isPresent(React.useContext(PresenceContext)); -} -function isPresent(context) { - return context === null ? true : context.isPresent; -} -function shallowCompare(next, prev) { - if (!Array.isArray(prev)) return false; - var prevLength = prev.length; - if (prevLength !== next.length) return false; - for (var i = 0; i < prevLength; i++) { - if (prev[i] !== next[i]) return false; - } - return true; -} - -/** - * Converts seconds to milliseconds - * - * @param seconds - Time in seconds. - * @return milliseconds - Converted time in milliseconds. - */ -var secondsToMilliseconds = function (seconds) { - return seconds * 1000; -}; -var easingLookup = { - linear: popmotion.linear, - easeIn: popmotion.easeIn, - easeInOut: popmotion.easeInOut, - easeOut: popmotion.easeOut, - circIn: popmotion.circIn, - circInOut: popmotion.circInOut, - circOut: popmotion.circOut, - backIn: popmotion.backIn, - backInOut: popmotion.backInOut, - backOut: popmotion.backOut, - anticipate: popmotion.anticipate, - bounceIn: popmotion.bounceIn, - bounceInOut: popmotion.bounceInOut, - bounceOut: popmotion.bounceOut -}; -var easingDefinitionToFunction = function (definition) { - if (Array.isArray(definition)) { - // If cubic bezier definition, create bezier curve - heyListen.invariant(definition.length === 4, "Cubic bezier arrays must contain four numerical values."); - var _a = tslib.__read(definition, 4), - x1 = _a[0], - y1 = _a[1], - x2 = _a[2], - y2 = _a[3]; - return popmotion.cubicBezier(x1, y1, x2, y2); - } else if (typeof definition === "string") { - // Else lookup from table - heyListen.invariant(easingLookup[definition] !== undefined, "Invalid easing type '".concat(definition, "'")); - return easingLookup[definition]; - } - return definition; -}; -var isEasingArray = function (ease) { - return Array.isArray(ease) && typeof ease[0] !== "number"; -}; - -/** - * Check if a value is animatable. Examples: - * - * ✅: 100, "100px", "#fff" - * ❌: "block", "url(2.jpg)" - * @param value - * - * @internal - */ -var isAnimatable = function (key, value) { - // If the list of keys tat might be non-animatable grows, replace with Set - if (key === "zIndex") return false; - // If it's a number or a keyframes array, we can animate it. We might at some point - // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this, - // but for now lets leave it like this for performance reasons - if (typeof value === "number" || Array.isArray(value)) return true; - if (typeof value === "string" && - // It's animatable if we have a string - styleValueTypes.complex.test(value) && - // And it contains numbers and/or colors - !value.startsWith("url(") // Unless it starts with "url(" - ) { - return true; - } - return false; -}; -var underDampedSpring = function () { - return { - type: "spring", - stiffness: 500, - damping: 25, - restSpeed: 10 - }; -}; -var criticallyDampedSpring = function (to) { - return { - type: "spring", - stiffness: 550, - damping: to === 0 ? 2 * Math.sqrt(550) : 30, - restSpeed: 10 - }; -}; -var linearTween = function () { - return { - type: "keyframes", - ease: "linear", - duration: 0.3 - }; -}; -var keyframes = function (values) { - return { - type: "keyframes", - duration: 0.8, - values: values - }; -}; -var defaultTransitions = { - x: underDampedSpring, - y: underDampedSpring, - z: underDampedSpring, - rotate: underDampedSpring, - rotateX: underDampedSpring, - rotateY: underDampedSpring, - rotateZ: underDampedSpring, - scaleX: criticallyDampedSpring, - scaleY: criticallyDampedSpring, - scale: criticallyDampedSpring, - opacity: linearTween, - backgroundColor: linearTween, - color: linearTween, - default: criticallyDampedSpring -}; -var getDefaultTransition = function (valueKey, to) { - var transitionFactory; - if (isKeyframesTarget(to)) { - transitionFactory = keyframes; - } else { - transitionFactory = defaultTransitions[valueKey] || defaultTransitions.default; - } - return tslib.__assign({ - to: to - }, transitionFactory(to)); -}; - -/** - * A map of default value types for common values - */ -var defaultValueTypes = tslib.__assign(tslib.__assign({}, numberValueTypes), { - // Color props - color: styleValueTypes.color, - backgroundColor: styleValueTypes.color, - outlineColor: styleValueTypes.color, - fill: styleValueTypes.color, - stroke: styleValueTypes.color, - // Border props - borderColor: styleValueTypes.color, - borderTopColor: styleValueTypes.color, - borderRightColor: styleValueTypes.color, - borderBottomColor: styleValueTypes.color, - borderLeftColor: styleValueTypes.color, - filter: styleValueTypes.filter, - WebkitFilter: styleValueTypes.filter -}); -/** - * Gets the default ValueType for the provided value key - */ -var getDefaultValueType = function (key) { - return defaultValueTypes[key]; -}; -function getAnimatableNone(key, value) { - var _a; - var defaultValueType = getDefaultValueType(key); - if (defaultValueType !== styleValueTypes.filter) defaultValueType = styleValueTypes.complex; - // If value is not recognised as animatable, ie "none", create an animatable version origin based on the target - return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value); -} -var instantAnimationState = { - current: false -}; - -/** - * Decide whether a transition is defined on a given Transition. - * This filters out orchestration options and returns true - * if any options are left. - */ -function isTransitionDefined(_a) { - _a.when; - _a.delay; - _a.delayChildren; - _a.staggerChildren; - _a.staggerDirection; - _a.repeat; - _a.repeatType; - _a.repeatDelay; - _a.from; - var transition = tslib.__rest(_a, ["when", "delay", "delayChildren", "staggerChildren", "staggerDirection", "repeat", "repeatType", "repeatDelay", "from"]); - return !!Object.keys(transition).length; -} -var legacyRepeatWarning = false; -/** - * Convert Framer Motion's Transition type into Popmotion-compatible options. - */ -function convertTransitionToAnimationOptions(_a) { - var ease = _a.ease, - times = _a.times, - yoyo = _a.yoyo, - flip = _a.flip, - loop = _a.loop, - transition = tslib.__rest(_a, ["ease", "times", "yoyo", "flip", "loop"]); - var options = tslib.__assign({}, transition); - if (times) options["offset"] = times; - /** - * Convert any existing durations from seconds to milliseconds - */ - if (transition.duration) options["duration"] = secondsToMilliseconds(transition.duration); - if (transition.repeatDelay) options.repeatDelay = secondsToMilliseconds(transition.repeatDelay); - /** - * Map easing names to Popmotion's easing functions - */ - if (ease) { - options["ease"] = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease); - } - /** - * Support legacy transition API - */ - if (transition.type === "tween") options.type = "keyframes"; - /** - * TODO: These options are officially removed from the API. - */ - if (yoyo || loop || flip) { - heyListen.warning(!legacyRepeatWarning, "yoyo, loop and flip have been removed from the API. Replace with repeat and repeatType options."); - legacyRepeatWarning = true; - if (yoyo) { - options.repeatType = "reverse"; - } else if (loop) { - options.repeatType = "loop"; - } else if (flip) { - options.repeatType = "mirror"; - } - options.repeat = loop || yoyo || flip || transition.repeat; - } - /** - * TODO: Popmotion 9 has the ability to automatically detect whether to use - * a keyframes or spring animation, but does so by detecting velocity and other spring options. - * It'd be good to introduce a similar thing here. - */ - if (transition.type !== "spring") options.type = "keyframes"; - return options; -} -/** - * Get the delay for a value by checking Transition with decreasing specificity. - */ -function getDelayFromTransition(transition, key) { - var _a, _b; - var valueTransition = getValueTransition(transition, key) || {}; - return (_b = (_a = valueTransition.delay) !== null && _a !== void 0 ? _a : transition.delay) !== null && _b !== void 0 ? _b : 0; -} -function hydrateKeyframes(options) { - if (Array.isArray(options.to) && options.to[0] === null) { - options.to = tslib.__spreadArray([], tslib.__read(options.to), false); - options.to[0] = options.from; - } - return options; -} -function getPopmotionAnimationOptions(transition, options, key) { - var _a; - if (Array.isArray(options.to)) { - (_a = transition.duration) !== null && _a !== void 0 ? _a : transition.duration = 0.8; - } - hydrateKeyframes(options); - /** - * Get a default transition if none is determined to be defined. - */ - if (!isTransitionDefined(transition)) { - transition = tslib.__assign(tslib.__assign({}, transition), getDefaultTransition(key, options.to)); - } - return tslib.__assign(tslib.__assign({}, options), convertTransitionToAnimationOptions(transition)); -} -/** - * - */ -function getAnimation(key, value, target, transition, onComplete) { - var _a; - var valueTransition = getValueTransition(transition, key); - var origin = (_a = valueTransition.from) !== null && _a !== void 0 ? _a : value.get(); - var isTargetAnimatable = isAnimatable(key, target); - if (origin === "none" && isTargetAnimatable && typeof target === "string") { - /** - * If we're trying to animate from "none", try and get an animatable version - * of the target. This could be improved to work both ways. - */ - origin = getAnimatableNone(key, target); - } else if (isZero(origin) && typeof target === "string") { - origin = getZeroUnit(target); - } else if (!Array.isArray(target) && isZero(target) && typeof origin === "string") { - target = getZeroUnit(origin); - } - var isOriginAnimatable = isAnimatable(key, origin); - heyListen.warning(isOriginAnimatable === isTargetAnimatable, "You are trying to animate ".concat(key, " from \"").concat(origin, "\" to \"").concat(target, "\". ").concat(origin, " is not an animatable value - to enable this animation set ").concat(origin, " to a value animatable to ").concat(target, " via the `style` property.")); - function start() { - var options = { - from: origin, - to: target, - velocity: value.getVelocity(), - onComplete: onComplete, - onUpdate: function (v) { - return value.set(v); - } - }; - return valueTransition.type === "inertia" || valueTransition.type === "decay" ? popmotion.inertia(tslib.__assign(tslib.__assign({}, options), valueTransition)) : popmotion.animate(tslib.__assign(tslib.__assign({}, getPopmotionAnimationOptions(valueTransition, options, key)), { - onUpdate: function (v) { - var _a; - options.onUpdate(v); - (_a = valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, v); - }, - onComplete: function () { - var _a; - options.onComplete(); - (_a = valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition); - } - })); - } - function set() { - var _a, _b; - var finalTarget = resolveFinalValueInKeyframes(target); - value.set(finalTarget); - onComplete(); - (_a = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, finalTarget); - (_b = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onComplete) === null || _b === void 0 ? void 0 : _b.call(valueTransition); - return { - stop: function () {} - }; - } - return !isOriginAnimatable || !isTargetAnimatable || valueTransition.type === false ? set : start; -} -function isZero(value) { - return value === 0 || typeof value === "string" && parseFloat(value) === 0 && value.indexOf(" ") === -1; -} -function getZeroUnit(potentialUnitType) { - return typeof potentialUnitType === "number" ? 0 : getAnimatableNone("", potentialUnitType); -} -function getValueTransition(transition, key) { - return transition[key] || transition["default"] || transition; -} -/** - * Start animation on a MotionValue. This function is an interface between - * Framer Motion and Popmotion - */ -function startAnimation(key, value, target, transition) { - if (transition === void 0) { - transition = {}; - } - if (instantAnimationState.current) { - transition = { - type: false - }; - } - return value.start(function (onComplete) { - var delayTimer; - var controls; - var animation = getAnimation(key, value, target, transition, onComplete); - var delay = getDelayFromTransition(transition, key); - var start = function () { - return controls = animation(); - }; - if (delay) { - delayTimer = window.setTimeout(start, secondsToMilliseconds(delay)); - } else { - start(); - } - return function () { - clearTimeout(delayTimer); - controls === null || controls === void 0 ? void 0 : controls.stop(); - }; - }); -} - -/** - * Check if value is a numerical string, ie a string that is purely a number eg "100" or "-100.1" - */ -var isNumericalString = function (v) { - return /^\-?\d*\.?\d+$/.test(v); -}; - -/** - * Check if the value is a zero value string like "0px" or "0%" - */ -var isZeroValueString = function (v) { - return /^0[^.\s]+$/.test(v); -}; -function addUniqueItem(arr, item) { - arr.indexOf(item) === -1 && arr.push(item); -} -function removeItem(arr, item) { - var index = arr.indexOf(item); - index > -1 && arr.splice(index, 1); -} -// Adapted from array-move -function moveItem(_a, fromIndex, toIndex) { - var _b = tslib.__read(_a), - arr = _b.slice(0); - var startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex; - if (startIndex >= 0 && startIndex < arr.length) { - var endIndex = toIndex < 0 ? arr.length + toIndex : toIndex; - var _c = tslib.__read(arr.splice(fromIndex, 1), 1), - item = _c[0]; - arr.splice(endIndex, 0, item); - } - return arr; -} -var SubscriptionManager = /** @class */function () { - function SubscriptionManager() { - this.subscriptions = []; - } - SubscriptionManager.prototype.add = function (handler) { - var _this = this; - addUniqueItem(this.subscriptions, handler); - return function () { - return removeItem(_this.subscriptions, handler); - }; - }; - SubscriptionManager.prototype.notify = function (a, b, c) { - var numSubscriptions = this.subscriptions.length; - if (!numSubscriptions) return; - if (numSubscriptions === 1) { - /** - * If there's only a single handler we can just call it without invoking a loop. - */ - this.subscriptions[0](a, b, c); - } else { - for (var i = 0; i < numSubscriptions; i++) { - /** - * Check whether the handler exists before firing as it's possible - * the subscriptions were modified during this loop running. - */ - var handler = this.subscriptions[i]; - handler && handler(a, b, c); - } - } - }; - SubscriptionManager.prototype.getSize = function () { - return this.subscriptions.length; - }; - SubscriptionManager.prototype.clear = function () { - this.subscriptions.length = 0; - }; - return SubscriptionManager; -}(); -var isFloat = function (value) { - return !isNaN(parseFloat(value)); -}; -/** - * `MotionValue` is used to track the state and velocity of motion values. - * - * @public - */ -var MotionValue = /** @class */function () { - /** - * @param init - The initiating value - * @param config - Optional configuration options - * - * - `transformer`: A function to transform incoming values with. - * - * @internal - */ - function MotionValue(init) { - var _this = this; - /** - * This will be replaced by the build step with the latest version number. - * When MotionValues are provided to motion components, warn if versions are mixed. - */ - this.version = "6.5.1"; - /** - * Duration, in milliseconds, since last updating frame. - * - * @internal - */ - this.timeDelta = 0; - /** - * Timestamp of the last time this `MotionValue` was updated. - * - * @internal - */ - this.lastUpdated = 0; - /** - * Functions to notify when the `MotionValue` updates. - * - * @internal - */ - this.updateSubscribers = new SubscriptionManager(); - /** - * Functions to notify when the velocity updates. - * - * @internal - */ - this.velocityUpdateSubscribers = new SubscriptionManager(); - /** - * Functions to notify when the `MotionValue` updates and `render` is set to `true`. - * - * @internal - */ - this.renderSubscribers = new SubscriptionManager(); - /** - * Tracks whether this value can output a velocity. Currently this is only true - * if the value is numerical, but we might be able to widen the scope here and support - * other value types. - * - * @internal - */ - this.canTrackVelocity = false; - this.updateAndNotify = function (v, render) { - if (render === void 0) { - render = true; - } - _this.prev = _this.current; - _this.current = v; - // Update timestamp - var _a = sync.getFrameData(), - delta = _a.delta, - timestamp = _a.timestamp; - if (_this.lastUpdated !== timestamp) { - _this.timeDelta = delta; - _this.lastUpdated = timestamp; - sync__default["default"].postRender(_this.scheduleVelocityCheck); - } - // Update update subscribers - if (_this.prev !== _this.current) { - _this.updateSubscribers.notify(_this.current); - } - // Update velocity subscribers - if (_this.velocityUpdateSubscribers.getSize()) { - _this.velocityUpdateSubscribers.notify(_this.getVelocity()); - } - // Update render subscribers - if (render) { - _this.renderSubscribers.notify(_this.current); - } - }; - /** - * Schedule a velocity check for the next frame. - * - * This is an instanced and bound function to prevent generating a new - * function once per frame. - * - * @internal - */ - this.scheduleVelocityCheck = function () { - return sync__default["default"].postRender(_this.velocityCheck); - }; - /** - * Updates `prev` with `current` if the value hasn't been updated this frame. - * This ensures velocity calculations return `0`. - * - * This is an instanced and bound function to prevent generating a new - * function once per frame. - * - * @internal - */ - this.velocityCheck = function (_a) { - var timestamp = _a.timestamp; - if (timestamp !== _this.lastUpdated) { - _this.prev = _this.current; - _this.velocityUpdateSubscribers.notify(_this.getVelocity()); - } - }; - this.hasAnimated = false; - this.prev = this.current = init; - this.canTrackVelocity = isFloat(this.current); - } - /** - * Adds a function that will be notified when the `MotionValue` is updated. - * - * It returns a function that, when called, will cancel the subscription. - * - * When calling `onChange` inside a React component, it should be wrapped with the - * `useEffect` hook. As it returns an unsubscribe function, this should be returned - * from the `useEffect` function to ensure you don't add duplicate subscribers.. - * - * ```jsx - * export const MyComponent = () => { - * const x = useMotionValue(0) - * const y = useMotionValue(0) - * const opacity = useMotionValue(1) - * - * useEffect(() => { - * function updateOpacity() { - * const maxXY = Math.max(x.get(), y.get()) - * const newOpacity = transform(maxXY, [0, 100], [1, 0]) - * opacity.set(newOpacity) - * } - * - * const unsubscribeX = x.onChange(updateOpacity) - * const unsubscribeY = y.onChange(updateOpacity) - * - * return () => { - * unsubscribeX() - * unsubscribeY() - * } - * }, []) - * - * return - * } - * ``` - * - * @privateRemarks - * - * We could look into a `useOnChange` hook if the above lifecycle management proves confusing. - * - * ```jsx - * useOnChange(x, () => {}) - * ``` - * - * @param subscriber - A function that receives the latest value. - * @returns A function that, when called, will cancel this subscription. - * - * @public - */ - MotionValue.prototype.onChange = function (subscription) { - return this.updateSubscribers.add(subscription); - }; - MotionValue.prototype.clearListeners = function () { - this.updateSubscribers.clear(); - }; - /** - * Adds a function that will be notified when the `MotionValue` requests a render. - * - * @param subscriber - A function that's provided the latest value. - * @returns A function that, when called, will cancel this subscription. - * - * @internal - */ - MotionValue.prototype.onRenderRequest = function (subscription) { - // Render immediately - subscription(this.get()); - return this.renderSubscribers.add(subscription); - }; - /** - * Attaches a passive effect to the `MotionValue`. - * - * @internal - */ - MotionValue.prototype.attach = function (passiveEffect) { - this.passiveEffect = passiveEffect; - }; - /** - * Sets the state of the `MotionValue`. - * - * @remarks - * - * ```jsx - * const x = useMotionValue(0) - * x.set(10) - * ``` - * - * @param latest - Latest value to set. - * @param render - Whether to notify render subscribers. Defaults to `true` - * - * @public - */ - MotionValue.prototype.set = function (v, render) { - if (render === void 0) { - render = true; - } - if (!render || !this.passiveEffect) { - this.updateAndNotify(v, render); - } else { - this.passiveEffect(v, this.updateAndNotify); - } - }; - /** - * Returns the latest state of `MotionValue` - * - * @returns - The latest state of `MotionValue` - * - * @public - */ - MotionValue.prototype.get = function () { - return this.current; - }; - /** - * @public - */ - MotionValue.prototype.getPrevious = function () { - return this.prev; - }; - /** - * Returns the latest velocity of `MotionValue` - * - * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical. - * - * @public - */ - MotionValue.prototype.getVelocity = function () { - // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful - return this.canTrackVelocity ? - // These casts could be avoided if parseFloat would be typed better - popmotion.velocityPerSecond(parseFloat(this.current) - parseFloat(this.prev), this.timeDelta) : 0; - }; - /** - * Registers a new animation to control this `MotionValue`. Only one - * animation can drive a `MotionValue` at one time. - * - * ```jsx - * value.start() - * ``` - * - * @param animation - A function that starts the provided animation - * - * @internal - */ - MotionValue.prototype.start = function (animation) { - var _this = this; - this.stop(); - return new Promise(function (resolve) { - _this.hasAnimated = true; - _this.stopAnimation = animation(resolve); - }).then(function () { - return _this.clearAnimation(); - }); - }; - /** - * Stop the currently active animation. - * - * @public - */ - MotionValue.prototype.stop = function () { - if (this.stopAnimation) this.stopAnimation(); - this.clearAnimation(); - }; - /** - * Returns `true` if this value is currently animating. - * - * @public - */ - MotionValue.prototype.isAnimating = function () { - return !!this.stopAnimation; - }; - MotionValue.prototype.clearAnimation = function () { - this.stopAnimation = null; - }; - /** - * Destroy and clean up subscribers to this `MotionValue`. - * - * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically - * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually - * created a `MotionValue` via the `motionValue` function. - * - * @public - */ - MotionValue.prototype.destroy = function () { - this.updateSubscribers.clear(); - this.renderSubscribers.clear(); - this.stop(); - }; - return MotionValue; -}(); -function motionValue(init) { - return new MotionValue(init); -} - -/** - * Tests a provided value against a ValueType - */ -var testValueType = function (v) { - return function (type) { - return type.test(v); - }; -}; - -/** - * ValueType for "auto" - */ -var auto = { - test: function (v) { - return v === "auto"; - }, - parse: function (v) { - return v; - } -}; - -/** - * A list of value types commonly used for dimensions - */ -var dimensionValueTypes = [styleValueTypes.number, styleValueTypes.px, styleValueTypes.percent, styleValueTypes.degrees, styleValueTypes.vw, styleValueTypes.vh, auto]; -/** - * Tests a dimensional value against the list of dimension ValueTypes - */ -var findDimensionValueType = function (v) { - return dimensionValueTypes.find(testValueType(v)); -}; - -/** - * A list of all ValueTypes - */ -var valueTypes = tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(dimensionValueTypes), false), [styleValueTypes.color, styleValueTypes.complex], false); -/** - * Tests a value against the list of ValueTypes - */ -var findValueType = function (v) { - return valueTypes.find(testValueType(v)); -}; - -/** - * Set VisualElement's MotionValue, creating a new MotionValue for it if - * it doesn't exist. - */ -function setMotionValue(visualElement, key, value) { - if (visualElement.hasValue(key)) { - visualElement.getValue(key).set(value); - } else { - visualElement.addValue(key, motionValue(value)); - } -} -function setTarget(visualElement, definition) { - var resolved = resolveVariant(visualElement, definition); - var _a = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {}, - _b = _a.transitionEnd, - transitionEnd = _b === void 0 ? {} : _b; - _a.transition; - var target = tslib.__rest(_a, ["transitionEnd", "transition"]); - target = tslib.__assign(tslib.__assign({}, target), transitionEnd); - for (var key in target) { - var value = resolveFinalValueInKeyframes(target[key]); - setMotionValue(visualElement, key, value); - } -} -function setVariants(visualElement, variantLabels) { - var reversedLabels = tslib.__spreadArray([], tslib.__read(variantLabels), false).reverse(); - reversedLabels.forEach(function (key) { - var _a; - var variant = visualElement.getVariant(key); - variant && setTarget(visualElement, variant); - (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { - setVariants(child, variantLabels); - }); - }); -} -function setValues(visualElement, definition) { - if (Array.isArray(definition)) { - return setVariants(visualElement, definition); - } else if (typeof definition === "string") { - return setVariants(visualElement, [definition]); - } else { - setTarget(visualElement, definition); - } -} -function checkTargetForNewValues(visualElement, target, origin) { - var _a, _b, _c; - var _d; - var newValueKeys = Object.keys(target).filter(function (key) { - return !visualElement.hasValue(key); - }); - var numNewValues = newValueKeys.length; - if (!numNewValues) return; - for (var i = 0; i < numNewValues; i++) { - var key = newValueKeys[i]; - var targetValue = target[key]; - var value = null; - /** - * If the target is a series of keyframes, we can use the first value - * in the array. If this first value is null, we'll still need to read from the DOM. - */ - if (Array.isArray(targetValue)) { - value = targetValue[0]; - } - /** - * If the target isn't keyframes, or the first keyframe was null, we need to - * first check if an origin value was explicitly defined in the transition as "from", - * if not read the value from the DOM. As an absolute fallback, take the defined target value. - */ - if (value === null) { - value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key]; - } - /** - * If value is still undefined or null, ignore it. Preferably this would throw, - * but this was causing issues in Framer. - */ - if (value === undefined || value === null) continue; - if (typeof value === "string" && (isNumericalString(value) || isZeroValueString(value))) { - // If this is a number read as a string, ie "0" or "200", convert it to a number - value = parseFloat(value); - } else if (!findValueType(value) && styleValueTypes.complex.test(targetValue)) { - value = getAnimatableNone(key, targetValue); - } - visualElement.addValue(key, motionValue(value)); - (_c = (_d = origin)[key]) !== null && _c !== void 0 ? _c : _d[key] = value; - visualElement.setBaseTarget(key, value); - } -} -function getOriginFromTransition(key, transition) { - if (!transition) return; - var valueTransition = transition[key] || transition["default"] || transition; - return valueTransition.from; -} -function getOrigin(target, transition, visualElement) { - var _a, _b; - var origin = {}; - for (var key in target) { - origin[key] = (_a = getOriginFromTransition(key, transition)) !== null && _a !== void 0 ? _a : (_b = visualElement.getValue(key)) === null || _b === void 0 ? void 0 : _b.get(); - } - return origin; -} -function animateVisualElement(visualElement, definition, options) { - if (options === void 0) { - options = {}; - } - visualElement.notifyAnimationStart(definition); - var animation; - if (Array.isArray(definition)) { - var animations = definition.map(function (variant) { - return animateVariant(visualElement, variant, options); - }); - animation = Promise.all(animations); - } else if (typeof definition === "string") { - animation = animateVariant(visualElement, definition, options); - } else { - var resolvedDefinition = typeof definition === "function" ? resolveVariant(visualElement, definition, options.custom) : definition; - animation = animateTarget(visualElement, resolvedDefinition, options); - } - return animation.then(function () { - return visualElement.notifyAnimationComplete(definition); - }); -} -function animateVariant(visualElement, variant, options) { - var _a; - if (options === void 0) { - options = {}; - } - var resolved = resolveVariant(visualElement, variant, options.custom); - var _b = (resolved || {}).transition, - transition = _b === void 0 ? visualElement.getDefaultTransition() || {} : _b; - if (options.transitionOverride) { - transition = options.transitionOverride; - } - /** - * If we have a variant, create a callback that runs it as an animation. - * Otherwise, we resolve a Promise immediately for a composable no-op. - */ - var getAnimation = resolved ? function () { - return animateTarget(visualElement, resolved, options); - } : function () { - return Promise.resolve(); - }; - /** - * If we have children, create a callback that runs all their animations. - * Otherwise, we resolve a Promise immediately for a composable no-op. - */ - var getChildAnimations = ((_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.size) ? function (forwardDelay) { - if (forwardDelay === void 0) { - forwardDelay = 0; - } - var _a = transition.delayChildren, - delayChildren = _a === void 0 ? 0 : _a, - staggerChildren = transition.staggerChildren, - staggerDirection = transition.staggerDirection; - return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options); - } : function () { - return Promise.resolve(); - }; - /** - * If the transition explicitly defines a "when" option, we need to resolve either - * this animation or all children animations before playing the other. - */ - var when = transition.when; - if (when) { - var _c = tslib.__read(when === "beforeChildren" ? [getAnimation, getChildAnimations] : [getChildAnimations, getAnimation], 2), - first = _c[0], - last = _c[1]; - return first().then(last); - } else { - return Promise.all([getAnimation(), getChildAnimations(options.delay)]); - } -} -/** - * @internal - */ -function animateTarget(visualElement, definition, _a) { - var _b; - var _c = _a === void 0 ? {} : _a, - _d = _c.delay, - delay = _d === void 0 ? 0 : _d, - transitionOverride = _c.transitionOverride, - type = _c.type; - var _e = visualElement.makeTargetAnimatable(definition), - _f = _e.transition, - transition = _f === void 0 ? visualElement.getDefaultTransition() : _f, - transitionEnd = _e.transitionEnd, - target = tslib.__rest(_e, ["transition", "transitionEnd"]); - if (transitionOverride) transition = transitionOverride; - var animations = []; - var animationTypeState = type && ((_b = visualElement.animationState) === null || _b === void 0 ? void 0 : _b.getState()[type]); - for (var key in target) { - var value = visualElement.getValue(key); - var valueTarget = target[key]; - if (!value || valueTarget === undefined || animationTypeState && shouldBlockAnimation(animationTypeState, key)) { - continue; - } - var valueTransition = tslib.__assign({ - delay: delay - }, transition); - /** - * Make animation instant if this is a transform prop and we should reduce motion. - */ - if (visualElement.shouldReduceMotion && isTransformProp(key)) { - valueTransition = tslib.__assign(tslib.__assign({}, valueTransition), { - type: false, - delay: 0 - }); - } - var animation = startAnimation(key, value, valueTarget, valueTransition); - animations.push(animation); - } - return Promise.all(animations).then(function () { - transitionEnd && setTarget(visualElement, transitionEnd); - }); -} -function animateChildren(visualElement, variant, delayChildren, staggerChildren, staggerDirection, options) { - if (delayChildren === void 0) { - delayChildren = 0; - } - if (staggerChildren === void 0) { - staggerChildren = 0; - } - if (staggerDirection === void 0) { - staggerDirection = 1; - } - var animations = []; - var maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren; - var generateStaggerDuration = staggerDirection === 1 ? function (i) { - if (i === void 0) { - i = 0; - } - return i * staggerChildren; - } : function (i) { - if (i === void 0) { - i = 0; - } - return maxStaggerDuration - i * staggerChildren; - }; - Array.from(visualElement.variantChildren).sort(sortByTreeOrder).forEach(function (child, i) { - animations.push(animateVariant(child, variant, tslib.__assign(tslib.__assign({}, options), { - delay: delayChildren + generateStaggerDuration(i) - })).then(function () { - return child.notifyAnimationComplete(variant); - })); - }); - return Promise.all(animations); -} -function stopAnimation(visualElement) { - visualElement.forEachValue(function (value) { - return value.stop(); - }); -} -function sortByTreeOrder(a, b) { - return a.sortNodePosition(b); -} -/** - * Decide whether we should block this animation. Previously, we achieved this - * just by checking whether the key was listed in protectedKeys, but this - * posed problems if an animation was triggered by afterChildren and protectedKeys - * had been set to true in the meantime. - */ -function shouldBlockAnimation(_a, key) { - var protectedKeys = _a.protectedKeys, - needsAnimating = _a.needsAnimating; - var shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true; - needsAnimating[key] = false; - return shouldBlock; -} -var variantPriorityOrder = [exports.AnimationType.Animate, exports.AnimationType.InView, exports.AnimationType.Focus, exports.AnimationType.Hover, exports.AnimationType.Tap, exports.AnimationType.Drag, exports.AnimationType.Exit]; -var reversePriorityOrder = tslib.__spreadArray([], tslib.__read(variantPriorityOrder), false).reverse(); -var numAnimationTypes = variantPriorityOrder.length; -function animateList(visualElement) { - return function (animations) { - return Promise.all(animations.map(function (_a) { - var animation = _a.animation, - options = _a.options; - return animateVisualElement(visualElement, animation, options); - })); - }; -} -function createAnimationState(visualElement) { - var animate = animateList(visualElement); - var state = createState(); - var allAnimatedKeys = {}; - var isInitialRender = true; - /** - * This function will be used to reduce the animation definitions for - * each active animation type into an object of resolved values for it. - */ - var buildResolvedTypeValues = function (acc, definition) { - var resolved = resolveVariant(visualElement, definition); - if (resolved) { - resolved.transition; - var transitionEnd = resolved.transitionEnd, - target = tslib.__rest(resolved, ["transition", "transitionEnd"]); - acc = tslib.__assign(tslib.__assign(tslib.__assign({}, acc), target), transitionEnd); - } - return acc; - }; - function isAnimated(key) { - return allAnimatedKeys[key] !== undefined; - } - /** - * This just allows us to inject mocked animation functions - * @internal - */ - function setAnimateFunction(makeAnimator) { - animate = makeAnimator(visualElement); - } - /** - * When we receive new props, we need to: - * 1. Create a list of protected keys for each type. This is a directory of - * value keys that are currently being "handled" by types of a higher priority - * so that whenever an animation is played of a given type, these values are - * protected from being animated. - * 2. Determine if an animation type needs animating. - * 3. Determine if any values have been removed from a type and figure out - * what to animate those to. - */ - function animateChanges(options, changedActiveType) { - var _a; - var props = visualElement.getProps(); - var context = visualElement.getVariantContext(true) || {}; - /** - * A list of animations that we'll build into as we iterate through the animation - * types. This will get executed at the end of the function. - */ - var animations = []; - /** - * Keep track of which values have been removed. Then, as we hit lower priority - * animation types, we can check if they contain removed values and animate to that. - */ - var removedKeys = new Set(); - /** - * A dictionary of all encountered keys. This is an object to let us build into and - * copy it without iteration. Each time we hit an animation type we set its protected - * keys - the keys its not allowed to animate - to the latest version of this object. - */ - var encounteredKeys = {}; - /** - * If a variant has been removed at a given index, and this component is controlling - * variant animations, we want to ensure lower-priority variants are forced to animate. - */ - var removedVariantIndex = Infinity; - var _loop_1 = function (i) { - var type = reversePriorityOrder[i]; - var typeState = state[type]; - var prop = (_a = props[type]) !== null && _a !== void 0 ? _a : context[type]; - var propIsVariant = isVariantLabel(prop); - /** - * If this type has *just* changed isActive status, set activeDelta - * to that status. Otherwise set to null. - */ - var activeDelta = type === changedActiveType ? typeState.isActive : null; - if (activeDelta === false) removedVariantIndex = i; - /** - * If this prop is an inherited variant, rather than been set directly on the - * component itself, we want to make sure we allow the parent to trigger animations. - * - * TODO: Can probably change this to a !isControllingVariants check - */ - var isInherited = prop === context[type] && prop !== props[type] && propIsVariant; - /** - * - */ - if (isInherited && isInitialRender && visualElement.manuallyAnimateOnMount) { - isInherited = false; - } - /** - * Set all encountered keys so far as the protected keys for this type. This will - * be any key that has been animated or otherwise handled by active, higher-priortiy types. - */ - typeState.protectedKeys = tslib.__assign({}, encounteredKeys); - // Check if we can skip analysing this prop early - if ( - // If it isn't active and hasn't *just* been set as inactive - !typeState.isActive && activeDelta === null || - // If we didn't and don't have any defined prop for this animation type - !prop && !typeState.prevProp || - // Or if the prop doesn't define an animation - isAnimationControls(prop) || typeof prop === "boolean") { - return "continue"; - } - /** - * As we go look through the values defined on this type, if we detect - * a changed value or a value that was removed in a higher priority, we set - * this to true and add this prop to the animation list. - */ - var variantDidChange = checkVariantsDidChange(typeState.prevProp, prop); - var shouldAnimateType = variantDidChange || - // If we're making this variant active, we want to always make it active - type === changedActiveType && typeState.isActive && !isInherited && propIsVariant || - // If we removed a higher-priority variant (i is in reverse order) - i > removedVariantIndex && propIsVariant; - /** - * As animations can be set as variant lists, variants or target objects, we - * coerce everything to an array if it isn't one already - */ - var definitionList = Array.isArray(prop) ? prop : [prop]; - /** - * Build an object of all the resolved values. We'll use this in the subsequent - * animateChanges calls to determine whether a value has changed. - */ - var resolvedValues = definitionList.reduce(buildResolvedTypeValues, {}); - if (activeDelta === false) resolvedValues = {}; - /** - * Now we need to loop through all the keys in the prev prop and this prop, - * and decide: - * 1. If the value has changed, and needs animating - * 2. If it has been removed, and needs adding to the removedKeys set - * 3. If it has been removed in a higher priority type and needs animating - * 4. If it hasn't been removed in a higher priority but hasn't changed, and - * needs adding to the type's protectedKeys list. - */ - var _b = typeState.prevResolvedValues, - prevResolvedValues = _b === void 0 ? {} : _b; - var allKeys = tslib.__assign(tslib.__assign({}, prevResolvedValues), resolvedValues); - var markToAnimate = function (key) { - shouldAnimateType = true; - removedKeys.delete(key); - typeState.needsAnimating[key] = true; - }; - for (var key in allKeys) { - var next = resolvedValues[key]; - var prev = prevResolvedValues[key]; - // If we've already handled this we can just skip ahead - if (encounteredKeys.hasOwnProperty(key)) continue; - /** - * If the value has changed, we probably want to animate it. - */ - if (next !== prev) { - /** - * If both values are keyframes, we need to shallow compare them to - * detect whether any value has changed. If it has, we animate it. - */ - if (isKeyframesTarget(next) && isKeyframesTarget(prev)) { - if (!shallowCompare(next, prev) || variantDidChange) { - markToAnimate(key); - } else { - /** - * If it hasn't changed, we want to ensure it doesn't animate by - * adding it to the list of protected keys. - */ - typeState.protectedKeys[key] = true; - } - } else if (next !== undefined) { - // If next is defined and doesn't equal prev, it needs animating - markToAnimate(key); - } else { - // If it's undefined, it's been removed. - removedKeys.add(key); - } - } else if (next !== undefined && removedKeys.has(key)) { - /** - * If next hasn't changed and it isn't undefined, we want to check if it's - * been removed by a higher priority - */ - markToAnimate(key); - } else { - /** - * If it hasn't changed, we add it to the list of protected values - * to ensure it doesn't get animated. - */ - typeState.protectedKeys[key] = true; - } - } - /** - * Update the typeState so next time animateChanges is called we can compare the - * latest prop and resolvedValues to these. - */ - typeState.prevProp = prop; - typeState.prevResolvedValues = resolvedValues; - /** - * - */ - if (typeState.isActive) { - encounteredKeys = tslib.__assign(tslib.__assign({}, encounteredKeys), resolvedValues); - } - if (isInitialRender && visualElement.blockInitialAnimation) { - shouldAnimateType = false; - } - /** - * If this is an inherited prop we want to hard-block animations - * TODO: Test as this should probably still handle animations triggered - * by removed values? - */ - if (shouldAnimateType && !isInherited) { - animations.push.apply(animations, tslib.__spreadArray([], tslib.__read(definitionList.map(function (animation) { - return { - animation: animation, - options: tslib.__assign({ - type: type - }, options) - }; - })), false)); - } - }; - /** - * Iterate through all animation types in reverse priority order. For each, we want to - * detect which values it's handling and whether or not they've changed (and therefore - * need to be animated). If any values have been removed, we want to detect those in - * lower priority props and flag for animation. - */ - for (var i = 0; i < numAnimationTypes; i++) { - _loop_1(i); - } - allAnimatedKeys = tslib.__assign({}, encounteredKeys); - /** - * If there are some removed value that haven't been dealt with, - * we need to create a new animation that falls back either to the value - * defined in the style prop, or the last read value. - */ - if (removedKeys.size) { - var fallbackAnimation_1 = {}; - removedKeys.forEach(function (key) { - var fallbackTarget = visualElement.getBaseTarget(key); - if (fallbackTarget !== undefined) { - fallbackAnimation_1[key] = fallbackTarget; - } - }); - animations.push({ - animation: fallbackAnimation_1 - }); - } - var shouldAnimate = Boolean(animations.length); - if (isInitialRender && props.initial === false && !visualElement.manuallyAnimateOnMount) { - shouldAnimate = false; - } - isInitialRender = false; - return shouldAnimate ? animate(animations) : Promise.resolve(); - } - /** - * Change whether a certain animation type is active. - */ - function setActive(type, isActive, options) { - var _a; - // If the active state hasn't changed, we can safely do nothing here - if (state[type].isActive === isActive) return Promise.resolve(); - // Propagate active change to children - (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) { - var _a; - return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); - }); - state[type].isActive = isActive; - var animations = animateChanges(options, type); - for (var key in state) { - state[key].protectedKeys = {}; - } - return animations; - } - return { - isAnimated: isAnimated, - animateChanges: animateChanges, - setActive: setActive, - setAnimateFunction: setAnimateFunction, - getState: function () { - return state; - } - }; -} -function checkVariantsDidChange(prev, next) { - if (typeof next === "string") { - return next !== prev; - } else if (isVariantLabels(next)) { - return !shallowCompare(next, prev); - } - return false; -} -function createTypeState(isActive) { - if (isActive === void 0) { - isActive = false; - } - return { - isActive: isActive, - protectedKeys: {}, - needsAnimating: {}, - prevResolvedValues: {} - }; -} -function createState() { - var _a; - return _a = {}, _a[exports.AnimationType.Animate] = createTypeState(true), _a[exports.AnimationType.InView] = createTypeState(), _a[exports.AnimationType.Hover] = createTypeState(), _a[exports.AnimationType.Tap] = createTypeState(), _a[exports.AnimationType.Drag] = createTypeState(), _a[exports.AnimationType.Focus] = createTypeState(), _a[exports.AnimationType.Exit] = createTypeState(), _a; -} -var animations = { - animation: makeRenderlessComponent(function (_a) { - var visualElement = _a.visualElement, - animate = _a.animate; - /** - * We dynamically generate the AnimationState manager as it contains a reference - * to the underlying animation library. We only want to load that if we load this, - * so people can optionally code split it out using the `m` component. - */ - visualElement.animationState || (visualElement.animationState = createAnimationState(visualElement)); - /** - * Subscribe any provided AnimationControls to the component's VisualElement - */ - if (isAnimationControls(animate)) { - React.useEffect(function () { - return animate.subscribe(visualElement); - }, [animate]); - } - }), - exit: makeRenderlessComponent(function (props) { - var custom = props.custom, - visualElement = props.visualElement; - var _a = tslib.__read(usePresence(), 2), - isPresent = _a[0], - safeToRemove = _a[1]; - var presenceContext = React.useContext(PresenceContext); - React.useEffect(function () { - var _a, _b; - visualElement.isPresent = isPresent; - var animation = (_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(exports.AnimationType.Exit, !isPresent, { - custom: (_b = presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.custom) !== null && _b !== void 0 ? _b : custom - }); - !isPresent && (animation === null || animation === void 0 ? void 0 : animation.then(safeToRemove)); - }, [isPresent]); - }) -}; - -/** - * @internal - */ -var PanSession = /** @class */function () { - function PanSession(event, handlers, _a) { - var _this = this; - var _b = _a === void 0 ? {} : _a, - transformPagePoint = _b.transformPagePoint; - /** - * @internal - */ - this.startEvent = null; - /** - * @internal - */ - this.lastMoveEvent = null; - /** - * @internal - */ - this.lastMoveEventInfo = null; - /** - * @internal - */ - this.handlers = {}; - this.updatePoint = function () { - if (!(_this.lastMoveEvent && _this.lastMoveEventInfo)) return; - var info = getPanInfo(_this.lastMoveEventInfo, _this.history); - var isPanStarted = _this.startEvent !== null; - // Only start panning if the offset is larger than 3 pixels. If we make it - // any larger than this we'll want to reset the pointer history - // on the first update to avoid visual snapping to the cursoe. - var isDistancePastThreshold = popmotion.distance(info.offset, { - x: 0, - y: 0 - }) >= 3; - if (!isPanStarted && !isDistancePastThreshold) return; - var point = info.point; - var timestamp = sync.getFrameData().timestamp; - _this.history.push(tslib.__assign(tslib.__assign({}, point), { - timestamp: timestamp - })); - var _a = _this.handlers, - onStart = _a.onStart, - onMove = _a.onMove; - if (!isPanStarted) { - onStart && onStart(_this.lastMoveEvent, info); - _this.startEvent = _this.lastMoveEvent; - } - onMove && onMove(_this.lastMoveEvent, info); - }; - this.handlePointerMove = function (event, info) { - _this.lastMoveEvent = event; - _this.lastMoveEventInfo = transformPoint(info, _this.transformPagePoint); - // Because Safari doesn't trigger mouseup events when it's above a ` ' + e.phrase("(Use line:column or scroll% syntax)") + ""; - } - c(i, "getJumpDialog"); - function a(e, t) { - var n = Number(t); - return /^[-+]/.test(t) ? e.getCursor().line + n : n - 1; - } - c(a, "interpretLine"), o.commands.jumpToLine = function (e) { - var t = e.getCursor(); - s(e, i(e), e.phrase("Jump to line:"), t.line + 1 + ":" + t.ch, function (n) { - if (n) { - var r; - if (r = /^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(n)) e.setCursor(a(e, r[1]), Number(r[2]));else if (r = /^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(n)) { - var l = Math.round(e.lineCount() * Number(r[1]) / 100); - /^[-+]/.test(r[1]) && (l = t.line + l + 1), e.setCursor(l - 1, t.ch); - } else (r = /^\s*\:?\s*([\+\-]?\d+)\s*/.exec(n)) && e.setCursor(a(e, r[1]), t.ch); - } - }); - }, o.keyMap.default["Alt-G"] = "jumpToLine"; - }); -})(); -var d = b.exports; -const j = f.getDefaultExportFromCjs(d), - y = h({ - __proto__: null, - default: j - }, [d]); -exports.jumpToLine = y; - -/***/ }), - -/***/ "../../graphiql-react/dist/jump.cjs.js": -/*!*********************************************!*\ - !*** ../../graphiql-react/dist/jump.cjs.js ***! - \*********************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - - - -var c = Object.defineProperty; -var s = (e, r) => c(e, "name", { - value: r, - configurable: !0 -}); -const u = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), - d = __webpack_require__(/*! ./SchemaReference.cjs.js */ "../../graphiql-react/dist/SchemaReference.cjs.js"); -__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -__webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -__webpack_require__(/*! ./forEachState.cjs.js */ "../../graphiql-react/dist/forEachState.cjs.js"); -u.CodeMirror.defineOption("jump", !1, (e, r, n) => { - if (n && n !== u.CodeMirror.Init) { - const t = e.state.jump.onMouseOver; - u.CodeMirror.off(e.getWrapperElement(), "mouseover", t); - const i = e.state.jump.onMouseOut; - u.CodeMirror.off(e.getWrapperElement(), "mouseout", i), u.CodeMirror.off(document, "keydown", e.state.jump.onKeyDown), delete e.state.jump; - } - if (r) { - const t = e.state.jump = { - options: r, - onMouseOver: M.bind(null, e), - onMouseOut: m.bind(null, e), - onKeyDown: g.bind(null, e) - }; - u.CodeMirror.on(e.getWrapperElement(), "mouseover", t.onMouseOver), u.CodeMirror.on(e.getWrapperElement(), "mouseout", t.onMouseOut), u.CodeMirror.on(document, "keydown", t.onKeyDown); - } -}); -function M(e, r) { - const n = r.target || r.srcElement; - if (!(n instanceof HTMLElement) || (n == null ? void 0 : n.nodeName) !== "SPAN") return; - const t = n.getBoundingClientRect(), - i = { - left: (t.left + t.right) / 2, - top: (t.top + t.bottom) / 2 - }; - e.state.jump.cursor = i, e.state.jump.isHoldingModifier && l(e); -} -s(M, "onMouseOver"); -function m(e) { - if (!e.state.jump.isHoldingModifier && e.state.jump.cursor) { - e.state.jump.cursor = null; - return; - } - e.state.jump.isHoldingModifier && e.state.jump.marker && p(e); -} -s(m, "onMouseOut"); -function g(e, r) { - if (e.state.jump.isHoldingModifier || !k(r.key)) return; - e.state.jump.isHoldingModifier = !0, e.state.jump.cursor && l(e); - const n = s(o => { - o.code === r.code && (e.state.jump.isHoldingModifier = !1, e.state.jump.marker && p(e), u.CodeMirror.off(document, "keyup", n), u.CodeMirror.off(document, "click", t), e.off("mousedown", i)); - }, "onKeyUp"), - t = s(o => { - const { - destination: a, - options: f - } = e.state.jump; - a && f.onClick(a, o); - }, "onClick"), - i = s((o, a) => { - e.state.jump.destination && (a.codemirrorIgnore = !0); - }, "onMouseDown"); - u.CodeMirror.on(document, "keyup", n), u.CodeMirror.on(document, "click", t), e.on("mousedown", i); -} -s(g, "onKeyDown"); -const j = typeof navigator < "u" && navigator && navigator.appVersion.includes("Mac"); -function k(e) { - return e === (j ? "Meta" : "Control"); -} -s(k, "isJumpModifier"); -function l(e) { - if (e.state.jump.marker) return; - const { - cursor: r, - options: n - } = e.state.jump, - t = e.coordsChar(r), - i = e.getTokenAt(t, !0), - o = n.getDestination || e.getHelper(t, "jump"); - if (o) { - const a = o(i, n, e); - if (a) { - const f = e.markText({ - line: t.line, - ch: i.start - }, { - line: t.line, - ch: i.end - }, { - className: "CodeMirror-jump-token" - }); - e.state.jump.marker = f, e.state.jump.destination = a; - } - } -} -s(l, "enableJumpMode"); -function p(e) { - const { - marker: r - } = e.state.jump; - e.state.jump.marker = null, e.state.jump.destination = null, r.clear(); -} -s(p, "disableJumpMode"); -u.CodeMirror.registerHelper("jump", "graphql", (e, r) => { - if (!r.schema || !r.onClick || !e.state) return; - const { - state: n - } = e, - { - kind: t, - step: i - } = n, - o = d.getTypeInfo(r.schema, n); - if (t === "Field" && i === 0 && o.fieldDef || t === "AliasedField" && i === 2 && o.fieldDef) return d.getFieldReference(o); - if (t === "Directive" && i === 1 && o.directiveDef) return d.getDirectiveReference(o); - if (t === "Argument" && i === 0 && o.argDef) return d.getArgumentReference(o); - if (t === "EnumValue" && o.enumValue) return d.getEnumValueReference(o); - if (t === "NamedType" && o.type) return d.getTypeReference(o); -}); - -/***/ }), - -/***/ "../../graphiql-react/dist/lint.cjs.js": -/*!*********************************************!*\ - !*** ../../graphiql-react/dist/lint.cjs.js ***! - \*********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -var W = Object.defineProperty; -var s = (h, v) => W(h, "name", { - value: v, - configurable: !0 -}); -const x = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -function q(h, v) { - for (var l = 0; l < v.length; l++) { - const u = v[l]; - if (typeof u != "string" && !Array.isArray(u)) { - for (const g in u) if (g !== "default" && !(g in h)) { - const c = Object.getOwnPropertyDescriptor(u, g); - c && Object.defineProperty(h, g, c.get ? c : { - enumerable: !0, - get: () => u[g] - }); - } - } - } - return Object.freeze(Object.defineProperty(h, Symbol.toStringTag, { - value: "Module" - })); -} -s(q, "_mergeNamespaces"); -var B = { - exports: {} -}; -(function (h, v) { - (function (l) { - l(x.requireCodemirror()); - })(function (l) { - var u = "CodeMirror-lint-markers", - g = "CodeMirror-lint-line-"; - function c(t, e, r) { - var n = document.createElement("div"); - n.className = "CodeMirror-lint-tooltip cm-s-" + t.options.theme, n.appendChild(r.cloneNode(!0)), t.state.lint.options.selfContain ? t.getWrapperElement().appendChild(n) : document.body.appendChild(n); - function i(o) { - if (!n.parentNode) return l.off(document, "mousemove", i); - n.style.top = Math.max(0, o.clientY - n.offsetHeight - 5) + "px", n.style.left = o.clientX + 5 + "px"; - } - return s(i, "position"), l.on(document, "mousemove", i), i(e), n.style.opacity != null && (n.style.opacity = 1), n; - } - s(c, "showTooltip"); - function L(t) { - t.parentNode && t.parentNode.removeChild(t); - } - s(L, "rm"); - function A(t) { - t.parentNode && (t.style.opacity == null && L(t), t.style.opacity = 0, setTimeout(function () { - L(t); - }, 600)); - } - s(A, "hideTooltip"); - function M(t, e, r, n) { - var i = c(t, e, r); - function o() { - l.off(n, "mouseout", o), i && (A(i), i = null); - } - s(o, "hide"); - var a = setInterval(function () { - if (i) for (var f = n;; f = f.parentNode) { - if (f && f.nodeType == 11 && (f = f.host), f == document.body) return; - if (!f) { - o(); - break; - } - } - if (!i) return clearInterval(a); - }, 400); - l.on(n, "mouseout", o); - } - s(M, "showTooltipFor"); - function F(t, e, r) { - this.marked = [], e instanceof Function && (e = { - getAnnotations: e - }), (!e || e === !0) && (e = {}), this.options = {}, this.linterOptions = e.options || {}; - for (var n in C) this.options[n] = C[n]; - for (var n in e) C.hasOwnProperty(n) ? e[n] != null && (this.options[n] = e[n]) : e.options || (this.linterOptions[n] = e[n]); - this.timeout = null, this.hasGutter = r, this.onMouseOver = function (i) { - U(t, i); - }, this.waitingFor = 0; - } - s(F, "LintState"); - var C = { - highlightLines: !1, - tooltips: !0, - delay: 500, - lintOnChange: !0, - getAnnotations: null, - async: !1, - selfContain: null, - formatAnnotation: null, - onUpdateLinting: null - }; - function E(t) { - var e = t.state.lint; - e.hasGutter && t.clearGutter(u), e.options.highlightLines && G(t); - for (var r = 0; r < e.marked.length; ++r) e.marked[r].clear(); - e.marked.length = 0; - } - s(E, "clearMarks"); - function G(t) { - t.eachLine(function (e) { - var r = e.wrapClass && /\bCodeMirror-lint-line-\w+\b/.exec(e.wrapClass); - r && t.removeLineClass(e, "wrap", r[0]); - }); - } - s(G, "clearErrorLines"); - function I(t, e, r, n, i) { - var o = document.createElement("div"), - a = o; - return o.className = "CodeMirror-lint-marker CodeMirror-lint-marker-" + r, n && (a = o.appendChild(document.createElement("div")), a.className = "CodeMirror-lint-marker CodeMirror-lint-marker-multiple"), i != !1 && l.on(a, "mouseover", function (f) { - M(t, f, e, a); - }), o; - } - s(I, "makeMarker"); - function D(t, e) { - return t == "error" ? t : e; - } - s(D, "getMaxSeverity"); - function j(t) { - for (var e = [], r = 0; r < t.length; ++r) { - var n = t[r], - i = n.from.line; - (e[i] || (e[i] = [])).push(n); - } - return e; - } - s(j, "groupByLine"); - function N(t) { - var e = t.severity; - e || (e = "error"); - var r = document.createElement("div"); - return r.className = "CodeMirror-lint-message CodeMirror-lint-message-" + e, typeof t.messageHTML < "u" ? r.innerHTML = t.messageHTML : r.appendChild(document.createTextNode(t.message)), r; - } - s(N, "annotationTooltip"); - function H(t, e) { - var r = t.state.lint, - n = ++r.waitingFor; - function i() { - n = -1, t.off("change", i); - } - s(i, "abort"), t.on("change", i), e(t.getValue(), function (o, a) { - t.off("change", i), r.waitingFor == n && (a && o instanceof l && (o = a), t.operation(function () { - O(t, o); - })); - }, r.linterOptions, t); - } - s(H, "lintAsync"); - function k(t) { - var e = t.state.lint; - if (e) { - var r = e.options, - n = r.getAnnotations || t.getHelper(l.Pos(0, 0), "lint"); - if (n) if (r.async || n.async) H(t, n);else { - var i = n(t.getValue(), e.linterOptions, t); - if (!i) return; - i.then ? i.then(function (o) { - t.operation(function () { - O(t, o); - }); - }) : t.operation(function () { - O(t, i); - }); - } - } - } - s(k, "startLinting"); - function O(t, e) { - var r = t.state.lint; - if (r) { - var n = r.options; - E(t); - for (var i = j(e), o = 0; o < i.length; ++o) { - var a = i[o]; - if (a) { - var f = []; - a = a.filter(function (w) { - return f.indexOf(w.message) > -1 ? !1 : f.push(w.message); - }); - for (var p = null, m = r.hasGutter && document.createDocumentFragment(), T = 0; T < a.length; ++T) { - var d = a[T], - y = d.severity; - y || (y = "error"), p = D(p, y), n.formatAnnotation && (d = n.formatAnnotation(d)), r.hasGutter && m.appendChild(N(d)), d.to && r.marked.push(t.markText(d.from, d.to, { - className: "CodeMirror-lint-mark CodeMirror-lint-mark-" + y, - __annotation: d - })); - } - r.hasGutter && t.setGutterMarker(o, u, I(t, m, p, i[o].length > 1, n.tooltips)), n.highlightLines && t.addLineClass(o, "wrap", g + p); - } - } - n.onUpdateLinting && n.onUpdateLinting(e, i, t); - } - } - s(O, "updateLinting"); - function b(t) { - var e = t.state.lint; - e && (clearTimeout(e.timeout), e.timeout = setTimeout(function () { - k(t); - }, e.options.delay)); - } - s(b, "onChange"); - function P(t, e, r) { - for (var n = r.target || r.srcElement, i = document.createDocumentFragment(), o = 0; o < e.length; o++) { - var a = e[o]; - i.appendChild(N(a)); - } - M(t, r, i, n); - } - s(P, "popupTooltips"); - function U(t, e) { - var r = e.target || e.srcElement; - if (/\bCodeMirror-lint-mark-/.test(r.className)) { - for (var n = r.getBoundingClientRect(), i = (n.left + n.right) / 2, o = (n.top + n.bottom) / 2, a = t.findMarksAt(t.coordsChar({ - left: i, - top: o - }, "client")), f = [], p = 0; p < a.length; ++p) { - var m = a[p].__annotation; - m && f.push(m); - } - f.length && P(t, f, e); - } - } - s(U, "onMouseOver"), l.defineOption("lint", !1, function (t, e, r) { - if (r && r != l.Init && (E(t), t.state.lint.options.lintOnChange !== !1 && t.off("change", b), l.off(t.getWrapperElement(), "mouseover", t.state.lint.onMouseOver), clearTimeout(t.state.lint.timeout), delete t.state.lint), e) { - for (var n = t.getOption("gutters"), i = !1, o = 0; o < n.length; ++o) n[o] == u && (i = !0); - var a = t.state.lint = new F(t, e, i); - a.options.lintOnChange && t.on("change", b), a.options.tooltips != !1 && a.options.tooltips != "gutter" && l.on(t.getWrapperElement(), "mouseover", a.onMouseOver), k(t); - } - }), l.defineExtension("performLint", function () { - k(this); - }); - }); -})(); -var _ = B.exports; -const R = x.getDefaultExportFromCjs(_), - V = q({ - __proto__: null, - default: R - }, [_]); -exports.lint = V; - -/***/ }), - -/***/ "../../graphiql-react/dist/lint.cjs2.js": -/*!**********************************************!*\ - !*** ../../graphiql-react/dist/lint.cjs2.js ***! - \**********************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - - - -const t = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), - c = __webpack_require__(/*! graphql-language-service */ "../../graphql-language-service/esm/index.js"); -__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -const a = ["error", "warning", "information", "hint"], - g = { - "GraphQL: Validation": "validation", - "GraphQL: Deprecation": "deprecation", - "GraphQL: Syntax": "syntax" - }; -t.CodeMirror.registerHelper("lint", "graphql", (n, s) => { - const { - schema: r, - validationRules: i, - externalFragments: o - } = s; - return c.getDiagnostics(n, r, i, void 0, o).map(e => ({ - message: e.message, - severity: e.severity ? a[e.severity - 1] : a[0], - type: e.source ? g[e.source] : void 0, - from: t.CodeMirror.Pos(e.range.start.line, e.range.start.character), - to: t.CodeMirror.Pos(e.range.end.line, e.range.end.character) - })); -}); - -/***/ }), - -/***/ "../../graphiql-react/dist/lint.cjs3.js": -/*!**********************************************!*\ - !*** ../../graphiql-react/dist/lint.cjs3.js ***! - \**********************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - - - -var V = Object.defineProperty; -var t = (e, n) => V(e, "name", { - value: n, - configurable: !0 -}); -const I = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), - b = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -function C(e) { - d = e, E = e.length, s = u = N = -1, o(), y(); - const n = q(); - return p("EOF"), n; -} -t(C, "jsonParse"); -let d, E, s, u, N, r, l; -function q() { - const e = s, - n = []; - if (p("{"), !x("}")) { - do n.push(M()); while (x(",")); - p("}"); - } - return { - kind: "Object", - start: e, - end: N, - members: n - }; -} -t(q, "parseObj"); -function M() { - const e = s, - n = l === "String" ? G() : null; - p("String"), p(":"); - const i = B(); - return { - kind: "Member", - start: e, - end: N, - key: n, - value: i - }; -} -t(M, "parseMember"); -function v() { - const e = s, - n = []; - if (p("["), !x("]")) { - do n.push(B()); while (x(",")); - p("]"); - } - return { - kind: "Array", - start: e, - end: N, - values: n - }; -} -t(v, "parseArr"); -function B() { - switch (l) { - case "[": - return v(); - case "{": - return q(); - case "String": - case "Number": - case "Boolean": - case "Null": - const e = G(); - return y(), e; - } - p("Value"); -} -t(B, "parseVal"); -function G() { - return { - kind: l, - start: s, - end: u, - value: JSON.parse(d.slice(s, u)) - }; -} -t(G, "curToken"); -function p(e) { - if (l === e) { - y(); - return; - } - let n; - if (l === "EOF") n = "[end of file]";else if (u - s > 1) n = "`" + d.slice(s, u) + "`";else { - const i = d.slice(s).match(/^.+?\b/); - n = "`" + (i ? i[0] : d[s]) + "`"; - } - throw k(`Expected ${e} but found ${n}.`); -} -t(p, "expect"); -class j extends Error { - constructor(n, i) { - super(n), this.position = i; - } -} -t(j, "JSONSyntaxError"); -function k(e) { - return new j(e, { - start: s, - end: u - }); -} -t(k, "syntaxError"); -function x(e) { - if (l === e) return y(), !0; -} -t(x, "skip"); -function o() { - return u < E && (u++, r = u === E ? 0 : d.charCodeAt(u)), r; -} -t(o, "ch"); -function y() { - for (N = u; r === 9 || r === 10 || r === 13 || r === 32;) o(); - if (r === 0) { - l = "EOF"; - return; - } - switch (s = u, r) { - case 34: - return l = "String", D(); - case 45: - case 48: - case 49: - case 50: - case 51: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - return l = "Number", H(); - case 102: - if (d.slice(s, s + 5) !== "false") break; - u += 4, o(), l = "Boolean"; - return; - case 110: - if (d.slice(s, s + 4) !== "null") break; - u += 3, o(), l = "Null"; - return; - case 116: - if (d.slice(s, s + 4) !== "true") break; - u += 3, o(), l = "Boolean"; - return; - } - l = d[s], o(); -} -t(y, "lex"); -function D() { - for (o(); r !== 34 && r > 31;) if (r === 92) switch (r = o(), r) { - case 34: - case 47: - case 92: - case 98: - case 102: - case 110: - case 114: - case 116: - o(); - break; - case 117: - o(), w(), w(), w(), w(); - break; - default: - throw k("Bad character escape sequence."); - } else { - if (u === E) throw k("Unterminated string."); - o(); - } - if (r === 34) { - o(); - return; - } - throw k("Unterminated string."); -} -t(D, "readString"); -function w() { - if (r >= 48 && r <= 57 || r >= 65 && r <= 70 || r >= 97 && r <= 102) return o(); - throw k("Expected hexadecimal digit."); -} -t(w, "readHex"); -function H() { - r === 45 && o(), r === 48 ? o() : $(), r === 46 && (o(), $()), (r === 69 || r === 101) && (r = o(), (r === 43 || r === 45) && o(), $()); -} -t(H, "readNumber"); -function $() { - if (r < 48 || r > 57) throw k("Expected decimal digit."); - do o(); while (r >= 48 && r <= 57); -} -t($, "readDigits"); -I.CodeMirror.registerHelper("lint", "graphql-variables", (e, n, i) => { - if (!e) return []; - let f; - try { - f = C(e); - } catch (c) { - if (c instanceof j) return [F(i, c.position, c.message)]; - throw c; - } - const { - variableToType: a - } = n; - return a ? U(i, a, f) : []; -}); -function U(e, n, i) { - var f; - const a = []; - for (const c of i.members) if (c) { - const h = (f = c.key) === null || f === void 0 ? void 0 : f.value, - m = n[h]; - if (m) for (const [O, Q] of g(m, c.value)) a.push(F(e, O, Q));else a.push(F(e, c.key, `Variable "$${h}" does not appear in any GraphQL query.`)); - } - return a; -} -t(U, "validateVariables"); -function g(e, n) { - if (!e || !n) return []; - if (e instanceof b.GraphQLNonNull) return n.kind === "Null" ? [[n, `Type "${e}" is non-nullable and cannot be null.`]] : g(e.ofType, n); - if (n.kind === "Null") return []; - if (e instanceof b.GraphQLList) { - const i = e.ofType; - if (n.kind === "Array") { - const f = n.values || []; - return L(f, a => g(i, a)); - } - return g(i, n); - } - if (e instanceof b.GraphQLInputObjectType) { - if (n.kind !== "Object") return [[n, `Type "${e}" must be an Object.`]]; - const i = Object.create(null), - f = L(n.members, a => { - var c; - const h = (c = a == null ? void 0 : a.key) === null || c === void 0 ? void 0 : c.value; - i[h] = !0; - const m = e.getFields()[h]; - if (!m) return [[a.key, `Type "${e}" does not have a field "${h}".`]]; - const O = m ? m.type : void 0; - return g(O, a.value); - }); - for (const a of Object.keys(e.getFields())) { - const c = e.getFields()[a]; - !i[a] && c.type instanceof b.GraphQLNonNull && !c.defaultValue && f.push([n, `Object of type "${e}" is missing required field "${a}".`]); - } - return f; - } - return e.name === "Boolean" && n.kind !== "Boolean" || e.name === "String" && n.kind !== "String" || e.name === "ID" && n.kind !== "Number" && n.kind !== "String" || e.name === "Float" && n.kind !== "Number" || e.name === "Int" && (n.kind !== "Number" || (n.value | 0) !== n.value) ? [[n, `Expected value of type "${e}".`]] : (e instanceof b.GraphQLEnumType || e instanceof b.GraphQLScalarType) && (n.kind !== "String" && n.kind !== "Number" && n.kind !== "Boolean" && n.kind !== "Null" || _(e.parseValue(n.value))) ? [[n, `Expected value of type "${e}".`]] : []; -} -t(g, "validateValue"); -function F(e, n, i) { - return { - message: i, - severity: "error", - type: "validation", - from: e.posFromIndex(n.start), - to: e.posFromIndex(n.end) - }; -} -t(F, "lintError"); -function _(e) { - return e == null || e !== e; -} -t(_, "isNullish"); -function L(e, n) { - return Array.prototype.concat.apply([], e.map(n)); -} -t(L, "mapCat"); - -/***/ }), - -/***/ "../../graphiql-react/dist/matchbrackets.cjs.js": -/*!******************************************************!*\ - !*** ../../graphiql-react/dist/matchbrackets.cjs.js ***! - \******************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -var i = Object.defineProperty; -var s = (e, c) => i(e, "name", { - value: c, - configurable: !0 -}); -const u = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"), - f = __webpack_require__(/*! ./matchbrackets.cjs2.js */ "../../graphiql-react/dist/matchbrackets.cjs2.js"); -function b(e, c) { - for (var o = 0; o < c.length; o++) { - const t = c[o]; - if (typeof t != "string" && !Array.isArray(t)) { - for (const r in t) if (r !== "default" && !(r in e)) { - const a = Object.getOwnPropertyDescriptor(t, r); - a && Object.defineProperty(e, r, a.get ? a : { - enumerable: !0, - get: () => t[r] - }); - } - } - } - return Object.freeze(Object.defineProperty(e, Symbol.toStringTag, { - value: "Module" - })); -} -s(b, "_mergeNamespaces"); -var n = f.requireMatchbrackets(); -const l = u.getDefaultExportFromCjs(n), - m = b({ - __proto__: null, - default: l - }, [n]); -exports.matchbrackets = m; - -/***/ }), - -/***/ "../../graphiql-react/dist/matchbrackets.cjs2.js": -/*!*******************************************************!*\ - !*** ../../graphiql-react/dist/matchbrackets.cjs2.js ***! - \*******************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -var R = Object.defineProperty; -var f = (L, y) => R(L, "name", { - value: y, - configurable: !0 -}); -const F = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -var T = { - exports: {} - }, - E; -function I() { - return E || (E = 1, function (L, y) { - (function (o) { - o(F.requireCodemirror()); - })(function (o) { - var S = /MSIE \d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8), - g = o.Pos, - B = { - "(": ")>", - ")": "(<", - "[": "]>", - "]": "[<", - "{": "}>", - "}": "{<", - "<": ">>", - ">": "<<" - }; - function A(t) { - return t && t.bracketRegex || /[(){}[\]]/; - } - f(A, "bracketRegex"); - function b(t, r, e) { - var s = t.getLineHandle(r.line), - n = r.ch - 1, - h = e && e.afterCursor; - h == null && (h = /(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className)); - var l = A(e), - u = !h && n >= 0 && l.test(s.text.charAt(n)) && B[s.text.charAt(n)] || l.test(s.text.charAt(n + 1)) && B[s.text.charAt(++n)]; - if (!u) return null; - var a = u.charAt(1) == ">" ? 1 : -1; - if (e && e.strict && a > 0 != (n == r.ch)) return null; - var k = t.getTokenTypeAt(g(r.line, n + 1)), - i = H(t, g(r.line, n + (a > 0 ? 1 : 0)), a, k, e); - return i == null ? null : { - from: g(r.line, n), - to: i && i.pos, - match: i && i.ch == u.charAt(0), - forward: a > 0 - }; - } - f(b, "findMatchingBracket"); - function H(t, r, e, s, n) { - for (var h = n && n.maxScanLineLength || 1e4, l = n && n.maxScanLines || 1e3, u = [], a = A(n), k = e > 0 ? Math.min(r.line + l, t.lastLine() + 1) : Math.max(t.firstLine() - 1, r.line - l), i = r.line; i != k; i += e) { - var c = t.getLine(i); - if (c) { - var v = e > 0 ? 0 : c.length - 1, - q = e > 0 ? c.length : -1; - if (!(c.length > h)) for (i == r.line && (v = r.ch - (e < 0 ? 1 : 0)); v != q; v += e) { - var d = c.charAt(v); - if (a.test(d) && (s === void 0 || (t.getTokenTypeAt(g(i, v + 1)) || "") == (s || ""))) { - var m = B[d]; - if (m && m.charAt(1) == ">" == e > 0) u.push(d);else if (u.length) u.pop();else return { - pos: g(i, v), - ch: d - }; - } - } - } - } - return i - e == (e > 0 ? t.lastLine() : t.firstLine()) ? !1 : null; - } - f(H, "scanForBracket"); - function M(t, r, e) { - for (var s = t.state.matchBrackets.maxHighlightLineLength || 1e3, n = e && e.highlightNonMatching, h = [], l = t.listSelections(), u = 0; u < l.length; u++) { - var a = l[u].empty() && b(t, l[u].head, e); - if (a && (a.match || n !== !1) && t.getLine(a.from.line).length <= s) { - var k = a.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; - h.push(t.markText(a.from, g(a.from.line, a.from.ch + 1), { - className: k - })), a.to && t.getLine(a.to.line).length <= s && h.push(t.markText(a.to, g(a.to.line, a.to.ch + 1), { - className: k - })); - } - } - if (h.length) { - S && t.state.focused && t.focus(); - var i = f(function () { - t.operation(function () { - for (var c = 0; c < h.length; c++) h[c].clear(); - }); - }, "clear"); - if (r) setTimeout(i, 800);else return i; - } - } - f(M, "matchBrackets"); - function x(t) { - t.operation(function () { - t.state.matchBrackets.currentlyHighlighted && (t.state.matchBrackets.currentlyHighlighted(), t.state.matchBrackets.currentlyHighlighted = null), t.state.matchBrackets.currentlyHighlighted = M(t, !1, t.state.matchBrackets); - }); - } - f(x, "doMatchBrackets"); - function p(t) { - t.state.matchBrackets && t.state.matchBrackets.currentlyHighlighted && (t.state.matchBrackets.currentlyHighlighted(), t.state.matchBrackets.currentlyHighlighted = null); - } - f(p, "clearHighlighted"), o.defineOption("matchBrackets", !1, function (t, r, e) { - e && e != o.Init && (t.off("cursorActivity", x), t.off("focus", x), t.off("blur", p), p(t)), r && (t.state.matchBrackets = typeof r == "object" ? r : {}, t.on("cursorActivity", x), t.on("focus", x), t.on("blur", p)); - }), o.defineExtension("matchBrackets", function () { - M(this, !0); - }), o.defineExtension("findMatchingBracket", function (t, r, e) { - return (e || typeof r == "boolean") && (e ? (e.strict = r, r = e) : r = r ? { - strict: !0 - } : null), b(this, t, r); - }), o.defineExtension("scanForBracket", function (t, r, e, s) { - return H(this, t, r, e, s); - }); - }); - }()), T.exports; -} -f(I, "requireMatchbrackets"); -exports.requireMatchbrackets = I; - -/***/ }), - -/***/ "../../graphiql-react/dist/mode-indent.cjs.js": -/*!****************************************************!*\ - !*** ../../graphiql-react/dist/mode-indent.cjs.js ***! - \****************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -var o = Object.defineProperty; -var v = (n, t) => o(n, "name", { - value: t, - configurable: !0 -}); -function s(n, t) { - var e, i; - const { - levels: l, - indentLevel: d - } = n; - return ((!l || l.length === 0 ? d : l.at(-1) - (!((e = this.electricInput) === null || e === void 0) && e.test(t) ? 1 : 0)) || 0) * (((i = this.config) === null || i === void 0 ? void 0 : i.indentUnit) || 0); -} -v(s, "indent"); -exports.indent = s; - -/***/ }), - -/***/ "../../graphiql-react/dist/mode.cjs.js": -/*!*********************************************!*\ - !*** ../../graphiql-react/dist/mode.cjs.js ***! - \*********************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - - - -var n = Object.defineProperty; -var s = (e, r) => n(e, "name", { - value: r, - configurable: !0 -}); -const o = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), - t = __webpack_require__(/*! graphql-language-service */ "../../graphql-language-service/esm/index.js"), - i = __webpack_require__(/*! ./mode-indent.cjs.js */ "../../graphiql-react/dist/mode-indent.cjs.js"); -__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -const l = s(e => { - const r = t.onlineParser({ - eatWhitespace: a => a.eatWhile(t.isIgnored), - lexRules: t.LexRules, - parseRules: t.ParseRules, - editorConfig: { - tabSize: e.tabSize - } - }); - return { - config: e, - startState: r.startState, - token: r.token, - indent: i.indent, - electricInput: /^\s*[})\]]/, - fold: "brace", - lineComment: "#", - closeBrackets: { - pairs: '()[]{}""', - explode: "()[]{}" - } - }; -}, "graphqlModeFactory"); -o.CodeMirror.defineMode("graphql", l); - -/***/ }), - -/***/ "../../graphiql-react/dist/mode.cjs2.js": -/*!**********************************************!*\ - !*** ../../graphiql-react/dist/mode.cjs2.js ***! - \**********************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - - - -var n = Object.defineProperty; -var u = (t, r) => n(t, "name", { - value: r, - configurable: !0 -}); -const i = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), - e = __webpack_require__(/*! graphql-language-service */ "../../graphql-language-service/esm/index.js"), - s = __webpack_require__(/*! ./mode-indent.cjs.js */ "../../graphiql-react/dist/mode-indent.cjs.js"); -__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -i.CodeMirror.defineMode("graphql-variables", t => { - const r = e.onlineParser({ - eatWhitespace: a => a.eatSpace(), - lexRules: c, - parseRules: o, - editorConfig: { - tabSize: t.tabSize - } - }); - return { - config: t, - startState: r.startState, - token: r.token, - indent: s.indent, - electricInput: /^\s*[}\]]/, - fold: "brace", - closeBrackets: { - pairs: '[]{}""', - explode: "[]{}" - } - }; -}); -const c = { - Punctuation: /^\[|]|\{|\}|:|,/, - Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/, - String: /^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/, - Keyword: /^true|false|null/ - }, - o = { - Document: [e.p("{"), e.list("Variable", e.opt(e.p(","))), e.p("}")], - Variable: [l("variable"), e.p(":"), "Value"], - Value(t) { - switch (t.kind) { - case "Number": - return "NumberValue"; - case "String": - return "StringValue"; - case "Punctuation": - switch (t.value) { - case "[": - return "ListValue"; - case "{": - return "ObjectValue"; - } - return null; - case "Keyword": - switch (t.value) { - case "true": - case "false": - return "BooleanValue"; - case "null": - return "NullValue"; - } - return null; - } - }, - NumberValue: [e.t("Number", "number")], - StringValue: [e.t("String", "string")], - BooleanValue: [e.t("Keyword", "builtin")], - NullValue: [e.t("Keyword", "keyword")], - ListValue: [e.p("["), e.list("Value", e.opt(e.p(","))), e.p("]")], - ObjectValue: [e.p("{"), e.list("ObjectField", e.opt(e.p(","))), e.p("}")], - ObjectField: [l("attribute"), e.p(":"), "Value"] - }; -function l(t) { - return { - style: t, - match: r => r.kind === "String", - update(r, a) { - r.name = a.value.slice(1, -1); - } - }; -} -u(l, "namedKey"); - -/***/ }), - -/***/ "../../graphiql-react/dist/mode.cjs3.js": -/*!**********************************************!*\ - !*** ../../graphiql-react/dist/mode.cjs3.js ***! - \**********************************************/ -/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { - - - -const a = __webpack_require__(/*! ./codemirror.cjs.js */ "../../graphiql-react/dist/codemirror.cjs.js"), - e = __webpack_require__(/*! graphql-language-service */ "../../graphql-language-service/esm/index.js"), - l = __webpack_require__(/*! ./mode-indent.cjs.js */ "../../graphiql-react/dist/mode-indent.cjs.js"); -__webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -a.CodeMirror.defineMode("graphql-results", r => { - const t = e.onlineParser({ - eatWhitespace: u => u.eatSpace(), - lexRules: n, - parseRules: s, - editorConfig: { - tabSize: r.tabSize - } - }); - return { - config: r, - startState: t.startState, - token: t.token, - indent: l.indent, - electricInput: /^\s*[}\]]/, - fold: "brace", - closeBrackets: { - pairs: '[]{}""', - explode: "[]{}" - } - }; -}); -const n = { - Punctuation: /^\[|]|\{|\}|:|,/, - Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/, - String: /^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/, - Keyword: /^true|false|null/ - }, - s = { - Document: [e.p("{"), e.list("Entry", e.p(",")), e.p("}")], - Entry: [e.t("String", "def"), e.p(":"), "Value"], - Value(r) { - switch (r.kind) { - case "Number": - return "NumberValue"; - case "String": - return "StringValue"; - case "Punctuation": - switch (r.value) { - case "[": - return "ListValue"; - case "{": - return "ObjectValue"; - } - return null; - case "Keyword": - switch (r.value) { - case "true": - case "false": - return "BooleanValue"; - case "null": - return "NullValue"; - } - return null; - } - }, - NumberValue: [e.t("Number", "number")], - StringValue: [e.t("String", "string")], - BooleanValue: [e.t("Keyword", "builtin")], - NullValue: [e.t("Keyword", "keyword")], - ListValue: [e.p("["), e.list("Value", e.p(",")), e.p("]")], - ObjectValue: [e.p("{"), e.list("ObjectField", e.p(",")), e.p("}")], - ObjectField: [e.t("String", "property"), e.p(":"), "Value"] - }; - -/***/ }), - -/***/ "../../graphiql-react/dist/search.cjs.js": -/*!***********************************************!*\ - !*** ../../graphiql-react/dist/search.cjs.js ***! - \***********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -var K = Object.defineProperty; -var a = (S, O) => K(S, "name", { - value: O, - configurable: !0 -}); -const Q = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"), - L = __webpack_require__(/*! ./searchcursor.cjs2.js */ "../../graphiql-react/dist/searchcursor.cjs2.js"), - z = __webpack_require__(/*! ./dialog.cjs2.js */ "../../graphiql-react/dist/dialog.cjs2.js"); -function U(S, O) { - for (var i = 0; i < O.length; i++) { - const y = O[i]; - if (typeof y != "string" && !Array.isArray(y)) { - for (const v in y) if (v !== "default" && !(v in S)) { - const h = Object.getOwnPropertyDescriptor(y, v); - h && Object.defineProperty(S, v, h.get ? h : { - enumerable: !0, - get: () => y[v] - }); - } - } - } - return Object.freeze(Object.defineProperty(S, Symbol.toStringTag, { - value: "Module" - })); -} -a(U, "_mergeNamespaces"); -var B = { - exports: {} -}; -(function (S, O) { - (function (i) { - i(Q.requireCodemirror(), L.requireSearchcursor(), z.requireDialog()); - })(function (i) { - i.defineOption("search", { - bottom: !1 - }); - function y(e, n) { - return typeof e == "string" ? e = new RegExp(e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), n ? "gi" : "g") : e.global || (e = new RegExp(e.source, e.ignoreCase ? "gi" : "g")), { - token: function (t) { - e.lastIndex = t.pos; - var o = e.exec(t.string); - if (o && o.index == t.pos) return t.pos += o[0].length || 1, "searching"; - o ? t.pos = o.index : t.skipToEnd(); - } - }; - } - a(y, "searchOverlay"); - function v() { - this.posFrom = this.posTo = this.lastQuery = this.query = null, this.overlay = null; - } - a(v, "SearchState"); - function h(e) { - return e.state.search || (e.state.search = new v()); - } - a(h, "getSearchState"); - function m(e) { - return typeof e == "string" && e == e.toLowerCase(); - } - a(m, "queryCaseInsensitive"); - function N(e, n, t) { - return e.getSearchCursor(n, t, { - caseFold: m(n), - multiline: !0 - }); - } - a(N, "getSearchCursor"); - function j(e, n, t, o, r) { - e.openDialog(n, o, { - value: t, - selectValueOnOpen: !0, - closeOnEnter: !1, - onClose: function () { - w(e); - }, - onKeyDown: r, - bottom: e.options.search.bottom - }); - } - a(j, "persistentDialog"); - function R(e, n, t, o, r) { - e.openDialog ? e.openDialog(n, r, { - value: o, - selectValueOnOpen: !0, - bottom: e.options.search.bottom - }) : r(prompt(t, o)); - } - a(R, "dialog"); - function k(e, n, t, o) { - e.openConfirm ? e.openConfirm(n, o) : confirm(t) && o[0](); - } - a(k, "confirmDialog"); - function C(e) { - return e.replace(/\\([nrt\\])/g, function (n, t) { - return t == "n" ? ` -` : t == "r" ? "\r" : t == "t" ? " " : t == "\\" ? "\\" : n; - }); - } - a(C, "parseString"); - function T(e) { - var n = e.match(/^\/(.*)\/([a-z]*)$/); - if (n) try { - e = new RegExp(n[1], n[2].indexOf("i") == -1 ? "" : "i"); - } catch {} else e = C(e); - return (typeof e == "string" ? e == "" : e.test("")) && (e = /x^/), e; - } - a(T, "parseQuery"); - function D(e, n, t) { - n.queryText = t, n.query = T(t), e.removeOverlay(n.overlay, m(n.query)), n.overlay = y(n.query, m(n.query)), e.addOverlay(n.overlay), e.showMatchesOnScrollbar && (n.annotate && (n.annotate.clear(), n.annotate = null), n.annotate = e.showMatchesOnScrollbar(n.query, m(n.query))); - } - a(D, "startSearch"); - function b(e, n, t, o) { - var r = h(e); - if (r.query) return P(e, n); - var s = e.getSelection() || r.lastQuery; - if (s instanceof RegExp && s.source == "x^" && (s = null), t && e.openDialog) { - var c = null, - u = a(function (f, x) { - i.e_stop(x), f && (f != r.queryText && (D(e, r, f), r.posFrom = r.posTo = e.getCursor()), c && (c.style.opacity = 1), P(e, x.shiftKey, function (d, g) { - var p; - g.line < 3 && document.querySelector && (p = e.display.wrapper.querySelector(".CodeMirror-dialog")) && p.getBoundingClientRect().bottom - 4 > e.cursorCoords(g, "window").top && ((c = p).style.opacity = .4); - })); - }, "searchNext"); - j(e, _(e), s, u, function (f, x) { - var d = i.keyName(f), - g = e.getOption("extraKeys"), - p = g && g[d] || i.keyMap[e.getOption("keyMap")][d]; - p == "findNext" || p == "findPrev" || p == "findPersistentNext" || p == "findPersistentPrev" ? (i.e_stop(f), D(e, h(e), x), e.execCommand(p)) : (p == "find" || p == "findPersistent") && (i.e_stop(f), u(x, f)); - }), o && s && (D(e, r, s), P(e, n)); - } else R(e, _(e), "Search for:", s, function (f) { - f && !r.query && e.operation(function () { - D(e, r, f), r.posFrom = r.posTo = e.getCursor(), P(e, n); - }); - }); - } - a(b, "doSearch"); - function P(e, n, t) { - e.operation(function () { - var o = h(e), - r = N(e, o.query, n ? o.posFrom : o.posTo); - !r.find(n) && (r = N(e, o.query, n ? i.Pos(e.lastLine()) : i.Pos(e.firstLine(), 0)), !r.find(n)) || (e.setSelection(r.from(), r.to()), e.scrollIntoView({ - from: r.from(), - to: r.to() - }, 20), o.posFrom = r.from(), o.posTo = r.to(), t && t(r.from(), r.to())); - }); - } - a(P, "findNext"); - function w(e) { - e.operation(function () { - var n = h(e); - n.lastQuery = n.query, n.query && (n.query = n.queryText = null, e.removeOverlay(n.overlay), n.annotate && (n.annotate.clear(), n.annotate = null)); - }); - } - a(w, "clearSearch"); - function l(e, n) { - var t = e ? document.createElement(e) : document.createDocumentFragment(); - for (var o in n) t[o] = n[o]; - for (var r = 2; r < arguments.length; r++) { - var s = arguments[r]; - t.appendChild(typeof s == "string" ? document.createTextNode(s) : s); - } - return t; - } - a(l, "el"); - function _(e) { - return l("", null, l("span", { - className: "CodeMirror-search-label" - }, e.phrase("Search:")), " ", l("input", { - type: "text", - style: "width: 10em", - className: "CodeMirror-search-field" - }), " ", l("span", { - style: "color: #888", - className: "CodeMirror-search-hint" - }, e.phrase("(Use /re/ syntax for regexp search)"))); - } - a(_, "getQueryDialog"); - function A(e) { - return l("", null, " ", l("input", { - type: "text", - style: "width: 10em", - className: "CodeMirror-search-field" - }), " ", l("span", { - style: "color: #888", - className: "CodeMirror-search-hint" - }, e.phrase("(Use /re/ syntax for regexp search)"))); - } - a(A, "getReplaceQueryDialog"); - function I(e) { - return l("", null, l("span", { - className: "CodeMirror-search-label" - }, e.phrase("With:")), " ", l("input", { - type: "text", - style: "width: 10em", - className: "CodeMirror-search-field" - })); - } - a(I, "getReplacementQueryDialog"); - function V(e) { - return l("", null, l("span", { - className: "CodeMirror-search-label" - }, e.phrase("Replace?")), " ", l("button", {}, e.phrase("Yes")), " ", l("button", {}, e.phrase("No")), " ", l("button", {}, e.phrase("All")), " ", l("button", {}, e.phrase("Stop"))); - } - a(V, "getDoReplaceConfirm"); - function E(e, n, t) { - e.operation(function () { - for (var o = N(e, n); o.findNext();) if (typeof n != "string") { - var r = e.getRange(o.from(), o.to()).match(n); - o.replace(t.replace(/\$(\d)/g, function (s, c) { - return r[c]; - })); - } else o.replace(t); - }); - } - a(E, "replaceAll"); - function F(e, n) { - if (!e.getOption("readOnly")) { - var t = e.getSelection() || h(e).lastQuery, - o = n ? e.phrase("Replace all:") : e.phrase("Replace:"), - r = l("", null, l("span", { - className: "CodeMirror-search-label" - }, o), A(e)); - R(e, r, o, t, function (s) { - s && (s = T(s), R(e, I(e), e.phrase("Replace with:"), "", function (c) { - if (c = C(c), n) E(e, s, c);else { - w(e); - var u = N(e, s, e.getCursor("from")), - f = a(function () { - var d = u.from(), - g; - !(g = u.findNext()) && (u = N(e, s), !(g = u.findNext()) || d && u.from().line == d.line && u.from().ch == d.ch) || (e.setSelection(u.from(), u.to()), e.scrollIntoView({ - from: u.from(), - to: u.to() - }), k(e, V(e), e.phrase("Replace?"), [function () { - x(g); - }, f, function () { - E(e, s, c); - }])); - }, "advance"), - x = a(function (d) { - u.replace(typeof s == "string" ? c : c.replace(/\$(\d)/g, function (g, p) { - return d[p]; - })), f(); - }, "doReplace"); - f(); - } - })); - }); - } - } - a(F, "replace"), i.commands.find = function (e) { - w(e), b(e); - }, i.commands.findPersistent = function (e) { - w(e), b(e, !1, !0); - }, i.commands.findPersistentNext = function (e) { - b(e, !1, !0, !0); - }, i.commands.findPersistentPrev = function (e) { - b(e, !0, !0, !0); - }, i.commands.findNext = b, i.commands.findPrev = function (e) { - b(e, !0); - }, i.commands.clearSearch = w, i.commands.replace = F, i.commands.replaceAll = function (e) { - F(e, !0); - }; - }); -})(); -var $ = B.exports; -const W = Q.getDefaultExportFromCjs($), - Y = U({ - __proto__: null, - default: W - }, [$]); -exports.search = Y; - -/***/ }), - -/***/ "../../graphiql-react/dist/searchcursor.cjs.js": -/*!*****************************************************!*\ - !*** ../../graphiql-react/dist/searchcursor.cjs.js ***! - \*****************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -var n = Object.defineProperty; -var u = (r, o) => n(r, "name", { - value: o, - configurable: !0 -}); -const i = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"), - f = __webpack_require__(/*! ./searchcursor.cjs2.js */ "../../graphiql-react/dist/searchcursor.cjs2.js"); -function l(r, o) { - for (var c = 0; c < o.length; c++) { - const e = o[c]; - if (typeof e != "string" && !Array.isArray(e)) { - for (const t in e) if (t !== "default" && !(t in r)) { - const s = Object.getOwnPropertyDescriptor(e, t); - s && Object.defineProperty(r, t, s.get ? s : { - enumerable: !0, - get: () => e[t] - }); - } - } - } - return Object.freeze(Object.defineProperty(r, Symbol.toStringTag, { - value: "Module" - })); -} -u(l, "_mergeNamespaces"); -var a = f.requireSearchcursor(); -const g = i.getDefaultExportFromCjs(a), - p = l({ - __proto__: null, - default: g - }, [a]); -exports.searchcursor = p; - -/***/ }), - -/***/ "../../graphiql-react/dist/searchcursor.cjs2.js": -/*!******************************************************!*\ - !*** ../../graphiql-react/dist/searchcursor.cjs2.js ***! - \******************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -var W = Object.defineProperty; -var o = (d, E) => W(d, "name", { - value: E, - configurable: !0 -}); -const G = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -var N = { - exports: {} - }, - b; -function H() { - return b || (b = 1, function (d, E) { - (function (m) { - m(G.requireCodemirror()); - })(function (m) { - var a = m.Pos; - function B(e) { - var t = e.flags; - return t !== null && t !== void 0 ? t : (e.ignoreCase ? "i" : "") + (e.global ? "g" : "") + (e.multiline ? "m" : ""); - } - o(B, "regexpFlags"); - function F(e, t) { - for (var n = B(e), r = n, l = 0; l < t.length; l++) r.indexOf(t.charAt(l)) == -1 && (r += t.charAt(l)); - return n == r ? e : new RegExp(e.source, r); - } - o(F, "ensureFlags"); - function R(e) { - return /\\s|\\n|\n|\\W|\\D|\[\^/.test(e.source); - } - o(R, "maybeMultiline"); - function I(e, t, n) { - t = F(t, "g"); - for (var r = n.line, l = n.ch, i = e.lastLine(); r <= i; r++, l = 0) { - t.lastIndex = l; - var h = e.getLine(r), - f = t.exec(h); - if (f) return { - from: a(r, f.index), - to: a(r, f.index + f[0].length), - match: f - }; - } - } - o(I, "searchRegexpForward"); - function j(e, t, n) { - if (!R(t)) return I(e, t, n); - t = F(t, "gm"); - for (var r, l = 1, i = n.line, h = e.lastLine(); i <= h;) { - for (var f = 0; f < l && !(i > h); f++) { - var p = e.getLine(i++); - r = r == null ? p : r + ` -` + p; - } - l = l * 2, t.lastIndex = n.ch; - var u = t.exec(r); - if (u) { - var s = r.slice(0, u.index).split(` -`), - c = u[0].split(` -`), - g = n.line + s.length - 1, - v = s[s.length - 1].length; - return { - from: a(g, v), - to: a(g + c.length - 1, c.length == 1 ? v + c[0].length : c[c.length - 1].length), - match: u - }; - } - } - } - o(j, "searchRegexpForwardMultiline"); - function z(e, t, n) { - for (var r, l = 0; l <= e.length;) { - t.lastIndex = l; - var i = t.exec(e); - if (!i) break; - var h = i.index + i[0].length; - if (h > e.length - n) break; - (!r || h > r.index + r[0].length) && (r = i), l = i.index + 1; - } - return r; - } - o(z, "lastMatchIn"); - function D(e, t, n) { - t = F(t, "g"); - for (var r = n.line, l = n.ch, i = e.firstLine(); r >= i; r--, l = -1) { - var h = e.getLine(r), - f = z(h, t, l < 0 ? 0 : h.length - l); - if (f) return { - from: a(r, f.index), - to: a(r, f.index + f[0].length), - match: f - }; - } - } - o(D, "searchRegexpBackward"); - function A(e, t, n) { - if (!R(t)) return D(e, t, n); - t = F(t, "gm"); - for (var r, l = 1, i = e.getLine(n.line).length - n.ch, h = n.line, f = e.firstLine(); h >= f;) { - for (var p = 0; p < l && h >= f; p++) { - var u = e.getLine(h--); - r = r == null ? u : u + ` -` + r; - } - l *= 2; - var s = z(r, t, i); - if (s) { - var c = r.slice(0, s.index).split(` -`), - g = s[0].split(` -`), - v = h + c.length, - x = c[c.length - 1].length; - return { - from: a(v, x), - to: a(v + g.length - 1, g.length == 1 ? x + g[0].length : g[g.length - 1].length), - match: s - }; - } - } - } - o(A, "searchRegexpBackwardMultiline"); - var P, k; - String.prototype.normalize ? (P = o(function (e) { - return e.normalize("NFD").toLowerCase(); - }, "doFold"), k = o(function (e) { - return e.normalize("NFD"); - }, "noFold")) : (P = o(function (e) { - return e.toLowerCase(); - }, "doFold"), k = o(function (e) { - return e; - }, "noFold")); - function L(e, t, n, r) { - if (e.length == t.length) return n; - for (var l = 0, i = n + Math.max(0, e.length - t.length);;) { - if (l == i) return l; - var h = l + i >> 1, - f = r(e.slice(0, h)).length; - if (f == n) return h; - f > n ? i = h : l = h + 1; - } - } - o(L, "adjustPos"); - function y(e, t, n, r) { - if (!t.length) return null; - var l = r ? P : k, - i = l(t).split(/\r|\n\r?/); - t: for (var h = n.line, f = n.ch, p = e.lastLine() + 1 - i.length; h <= p; h++, f = 0) { - var u = e.getLine(h).slice(f), - s = l(u); - if (i.length == 1) { - var c = s.indexOf(i[0]); - if (c == -1) continue t; - var n = L(u, s, c, l) + f; - return { - from: a(h, L(u, s, c, l) + f), - to: a(h, L(u, s, c + i[0].length, l) + f) - }; - } else { - var g = s.length - i[0].length; - if (s.slice(g) != i[0]) continue t; - for (var v = 1; v < i.length - 1; v++) if (l(e.getLine(h + v)) != i[v]) continue t; - var x = e.getLine(h + i.length - 1), - O = l(x), - S = i[i.length - 1]; - if (O.slice(0, S.length) != S) continue t; - return { - from: a(h, L(u, s, g, l) + f), - to: a(h + i.length - 1, L(x, O, S.length, l)) - }; - } - } - } - o(y, "searchStringForward"); - function C(e, t, n, r) { - if (!t.length) return null; - var l = r ? P : k, - i = l(t).split(/\r|\n\r?/); - t: for (var h = n.line, f = n.ch, p = e.firstLine() - 1 + i.length; h >= p; h--, f = -1) { - var u = e.getLine(h); - f > -1 && (u = u.slice(0, f)); - var s = l(u); - if (i.length == 1) { - var c = s.lastIndexOf(i[0]); - if (c == -1) continue t; - return { - from: a(h, L(u, s, c, l)), - to: a(h, L(u, s, c + i[0].length, l)) - }; - } else { - var g = i[i.length - 1]; - if (s.slice(0, g.length) != g) continue t; - for (var v = 1, n = h - i.length + 1; v < i.length - 1; v++) if (l(e.getLine(n + v)) != i[v]) continue t; - var x = e.getLine(h + 1 - i.length), - O = l(x); - if (O.slice(O.length - i[0].length) != i[0]) continue t; - return { - from: a(h + 1 - i.length, L(x, O, x.length - i[0].length, l)), - to: a(h, L(u, s, g.length, l)) - }; - } - } - } - o(C, "searchStringBackward"); - function w(e, t, n, r) { - this.atOccurrence = !1, this.afterEmptyMatch = !1, this.doc = e, n = n ? e.clipPos(n) : a(0, 0), this.pos = { - from: n, - to: n - }; - var l; - typeof r == "object" ? l = r.caseFold : (l = r, r = null), typeof t == "string" ? (l == null && (l = !1), this.matches = function (i, h) { - return (i ? C : y)(e, t, h, l); - }) : (t = F(t, "gm"), !r || r.multiline !== !1 ? this.matches = function (i, h) { - return (i ? A : j)(e, t, h); - } : this.matches = function (i, h) { - return (i ? D : I)(e, t, h); - }); - } - o(w, "SearchCursor"), w.prototype = { - findNext: function () { - return this.find(!1); - }, - findPrevious: function () { - return this.find(!0); - }, - find: function (e) { - var t = this.doc.clipPos(e ? this.pos.from : this.pos.to); - if (this.afterEmptyMatch && this.atOccurrence && (t = a(t.line, t.ch), e ? (t.ch--, t.ch < 0 && (t.line--, t.ch = (this.doc.getLine(t.line) || "").length)) : (t.ch++, t.ch > (this.doc.getLine(t.line) || "").length && (t.ch = 0, t.line++)), m.cmpPos(t, this.doc.clipPos(t)) != 0)) return this.atOccurrence = !1; - var n = this.matches(e, t); - if (this.afterEmptyMatch = n && m.cmpPos(n.from, n.to) == 0, n) return this.pos = n, this.atOccurrence = !0, this.pos.match || !0; - var r = a(e ? this.doc.firstLine() : this.doc.lastLine() + 1, 0); - return this.pos = { - from: r, - to: r - }, this.atOccurrence = !1; - }, - from: function () { - if (this.atOccurrence) return this.pos.from; - }, - to: function () { - if (this.atOccurrence) return this.pos.to; - }, - replace: function (e, t) { - if (this.atOccurrence) { - var n = m.splitLines(e); - this.doc.replaceRange(n, this.pos.from, this.pos.to, t), this.pos.to = a(this.pos.from.line + n.length - 1, n[n.length - 1].length + (n.length == 1 ? this.pos.from.ch : 0)); - } - } - }, m.defineExtension("getSearchCursor", function (e, t, n) { - return new w(this.doc, e, t, n); - }), m.defineDocExtension("getSearchCursor", function (e, t, n) { - return new w(this, e, t, n); - }), m.defineExtension("selectMatches", function (e, t) { - for (var n = [], r = this.getSearchCursor(e, this.getCursor("from"), t); r.findNext() && !(m.cmpPos(r.to(), this.getCursor("to")) > 0);) n.push({ - anchor: r.from(), - head: r.to() - }); - n.length && this.setSelections(n, 0); - }); - }); - }()), N.exports; -} -o(H, "requireSearchcursor"); -exports.requireSearchcursor = H; - -/***/ }), - -/***/ "../../graphiql-react/dist/show-hint.cjs.js": -/*!**************************************************!*\ - !*** ../../graphiql-react/dist/show-hint.cjs.js ***! - \**************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -var ct = Object.defineProperty; -var p = (H, A) => ct(H, "name", { - value: A, - configurable: !0 -}); -const G = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"); -function lt(H, A) { - for (var r = 0; r < A.length; r++) { - const w = A[r]; - if (typeof w != "string" && !Array.isArray(w)) { - for (const v in w) if (v !== "default" && !(v in H)) { - const b = Object.getOwnPropertyDescriptor(w, v); - b && Object.defineProperty(H, v, b.get ? b : { - enumerable: !0, - get: () => w[v] - }); - } - } - } - return Object.freeze(Object.defineProperty(H, Symbol.toStringTag, { - value: "Module" - })); -} -p(lt, "_mergeNamespaces"); -var ht = { - exports: {} -}; -(function (H, A) { - (function (r) { - r(G.requireCodemirror()); - })(function (r) { - var w = "CodeMirror-hint", - v = "CodeMirror-hint-active"; - r.showHint = function (t, e, i) { - if (!e) return t.showHint(i); - i && i.async && (e.async = !0); - var n = { - hint: e - }; - if (i) for (var s in i) n[s] = i[s]; - return t.showHint(n); - }, r.defineExtension("showHint", function (t) { - t = tt(this, this.getCursor("start"), t); - var e = this.listSelections(); - if (!(e.length > 1)) { - if (this.somethingSelected()) { - if (!t.hint.supportsSelection) return; - for (var i = 0; i < e.length; i++) if (e[i].head.line != e[i].anchor.line) return; - } - this.state.completionActive && this.state.completionActive.close(); - var n = this.state.completionActive = new b(this, t); - n.options.hint && (r.signal(this, "startCompletion", this), n.update(!0)); - } - }), r.defineExtension("closeHint", function () { - this.state.completionActive && this.state.completionActive.close(); - }); - function b(t, e) { - if (this.cm = t, this.options = e, this.widget = null, this.debounce = 0, this.tick = 0, this.startPos = this.cm.getCursor("start"), this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length, this.options.updateOnCursorActivity) { - var i = this; - t.on("cursorActivity", this.activityFunc = function () { - i.cursorActivity(); - }); - } - } - p(b, "Completion"); - var Q = window.requestAnimationFrame || function (t) { - return setTimeout(t, 1e3 / 60); - }, - Z = window.cancelAnimationFrame || clearTimeout; - b.prototype = { - close: function () { - this.active() && (this.cm.state.completionActive = null, this.tick = null, this.options.updateOnCursorActivity && this.cm.off("cursorActivity", this.activityFunc), this.widget && this.data && r.signal(this.data, "close"), this.widget && this.widget.close(), r.signal(this.cm, "endCompletion", this.cm)); - }, - active: function () { - return this.cm.state.completionActive == this; - }, - pick: function (t, e) { - var i = t.list[e], - n = this; - this.cm.operation(function () { - i.hint ? i.hint(n.cm, t, i) : n.cm.replaceRange(_(i), i.from || t.from, i.to || t.to, "complete"), r.signal(t, "pick", i), n.cm.scrollIntoView(); - }), this.options.closeOnPick && this.close(); - }, - cursorActivity: function () { - this.debounce && (Z(this.debounce), this.debounce = 0); - var t = this.startPos; - this.data && (t = this.data.from); - var e = this.cm.getCursor(), - i = this.cm.getLine(e.line); - if (e.line != this.startPos.line || i.length - e.ch != this.startLen - this.startPos.ch || e.ch < t.ch || this.cm.somethingSelected() || !e.ch || this.options.closeCharacters.test(i.charAt(e.ch - 1))) this.close();else { - var n = this; - this.debounce = Q(function () { - n.update(); - }), this.widget && this.widget.disable(); - } - }, - update: function (t) { - if (this.tick != null) { - var e = this, - i = ++this.tick; - U(this.options.hint, this.cm, this.options, function (n) { - e.tick == i && e.finishUpdate(n, t); - }); - } - }, - finishUpdate: function (t, e) { - this.data && r.signal(this.data, "update"); - var i = this.widget && this.widget.picked || e && this.options.completeSingle; - this.widget && this.widget.close(), this.data = t, t && t.list.length && (i && t.list.length == 1 ? this.pick(t, 0) : (this.widget = new K(this, t), r.signal(t, "shown"))); - } - }; - function tt(t, e, i) { - var n = t.options.hintOptions, - s = {}; - for (var c in D) s[c] = D[c]; - if (n) for (var c in n) n[c] !== void 0 && (s[c] = n[c]); - if (i) for (var c in i) i[c] !== void 0 && (s[c] = i[c]); - return s.hint.resolve && (s.hint = s.hint.resolve(t, e)), s; - } - p(tt, "parseOptions"); - function _(t) { - return typeof t == "string" ? t : t.text; - } - p(_, "getText"); - function et(t, e) { - var i = { - Up: function () { - e.moveFocus(-1); - }, - Down: function () { - e.moveFocus(1); - }, - PageUp: function () { - e.moveFocus(-e.menuSize() + 1, !0); - }, - PageDown: function () { - e.moveFocus(e.menuSize() - 1, !0); - }, - Home: function () { - e.setFocus(0); - }, - End: function () { - e.setFocus(e.length - 1); - }, - Enter: e.pick, - Tab: e.pick, - Esc: e.close - }, - n = /Mac/.test(navigator.platform); - n && (i["Ctrl-P"] = function () { - e.moveFocus(-1); - }, i["Ctrl-N"] = function () { - e.moveFocus(1); - }); - var s = t.options.customKeys, - c = s ? {} : i; - function o(u, l) { - var a; - typeof l != "string" ? a = p(function (S) { - return l(S, e); - }, "bound") : i.hasOwnProperty(l) ? a = i[l] : a = l, c[u] = a; - } - if (p(o, "addBinding"), s) for (var f in s) s.hasOwnProperty(f) && o(f, s[f]); - var h = t.options.extraKeys; - if (h) for (var f in h) h.hasOwnProperty(f) && o(f, h[f]); - return c; - } - p(et, "buildKeyMap"); - function B(t, e) { - for (; e && e != t;) { - if (e.nodeName.toUpperCase() === "LI" && e.parentNode == t) return e; - e = e.parentNode; - } - } - p(B, "getHintElement"); - function K(t, e) { - this.id = "cm-complete-" + Math.floor(Math.random(1e6)), this.completion = t, this.data = e, this.picked = !1; - var i = this, - n = t.cm, - s = n.getInputField().ownerDocument, - c = s.defaultView || s.parentWindow, - o = this.hints = s.createElement("ul"); - o.setAttribute("role", "listbox"), o.setAttribute("aria-expanded", "true"), o.id = this.id; - var f = t.cm.options.theme; - o.className = "CodeMirror-hints " + f, this.selectedHint = e.selectedHint || 0; - for (var h = e.list, u = 0; u < h.length; ++u) { - var l = o.appendChild(s.createElement("li")), - a = h[u], - S = w + (u != this.selectedHint ? "" : " " + v); - a.className != null && (S = a.className + " " + S), l.className = S, u == this.selectedHint && l.setAttribute("aria-selected", "true"), l.id = this.id + "-" + u, l.setAttribute("role", "option"), a.render ? a.render(l, e, a) : l.appendChild(s.createTextNode(a.displayText || _(a))), l.hintId = u; - } - var T = t.options.container || s.body, - y = n.cursorCoords(t.options.alignWithWord ? e.from : null), - k = y.left, - O = y.bottom, - j = !0, - F = 0, - E = 0; - if (T !== s.body) { - var st = ["absolute", "relative", "fixed"].indexOf(c.getComputedStyle(T).position) !== -1, - W = st ? T : T.offsetParent, - M = W.getBoundingClientRect(), - q = s.body.getBoundingClientRect(); - F = M.left - q.left - W.scrollLeft, E = M.top - q.top - W.scrollTop; - } - o.style.left = k - F + "px", o.style.top = O - E + "px"; - var N = c.innerWidth || Math.max(s.body.offsetWidth, s.documentElement.offsetWidth), - L = c.innerHeight || Math.max(s.body.offsetHeight, s.documentElement.offsetHeight); - T.appendChild(o), n.getInputField().setAttribute("aria-autocomplete", "list"), n.getInputField().setAttribute("aria-owns", this.id), n.getInputField().setAttribute("aria-activedescendant", this.id + "-" + this.selectedHint); - var m = t.options.moveOnOverlap ? o.getBoundingClientRect() : new DOMRect(), - z = t.options.paddingForScrollbar ? o.scrollHeight > o.clientHeight + 1 : !1, - x; - setTimeout(function () { - x = n.getScrollInfo(); - }); - var ot = m.bottom - L; - if (ot > 0) { - var P = m.bottom - m.top, - rt = y.top - (y.bottom - m.top); - if (rt - P > 0) o.style.top = (O = y.top - P - E) + "px", j = !1;else if (P > L) { - o.style.height = L - 5 + "px", o.style.top = (O = y.bottom - m.top - E) + "px"; - var V = n.getCursor(); - e.from.ch != V.ch && (y = n.cursorCoords(V), o.style.left = (k = y.left - F) + "px", m = o.getBoundingClientRect()); - } - } - var C = m.right - N; - if (z && (C += n.display.nativeBarWidth), C > 0 && (m.right - m.left > N && (o.style.width = N - 5 + "px", C -= m.right - m.left - N), o.style.left = (k = y.left - C - F) + "px"), z) for (var I = o.firstChild; I; I = I.nextSibling) I.style.paddingRight = n.display.nativeBarWidth + "px"; - if (n.addKeyMap(this.keyMap = et(t, { - moveFocus: function (d, g) { - i.changeActive(i.selectedHint + d, g); - }, - setFocus: function (d) { - i.changeActive(d); - }, - menuSize: function () { - return i.screenAmount(); - }, - length: h.length, - close: function () { - t.close(); - }, - pick: function () { - i.pick(); - }, - data: e - })), t.options.closeOnUnfocus) { - var Y; - n.on("blur", this.onBlur = function () { - Y = setTimeout(function () { - t.close(); - }, 100); - }), n.on("focus", this.onFocus = function () { - clearTimeout(Y); - }); - } - n.on("scroll", this.onScroll = function () { - var d = n.getScrollInfo(), - g = n.getWrapperElement().getBoundingClientRect(); - x || (x = n.getScrollInfo()); - var X = O + x.top - d.top, - R = X - (c.pageYOffset || (s.documentElement || s.body).scrollTop); - if (j || (R += o.offsetHeight), R <= g.top || R >= g.bottom) return t.close(); - o.style.top = X + "px", o.style.left = k + x.left - d.left + "px"; - }), r.on(o, "dblclick", function (d) { - var g = B(o, d.target || d.srcElement); - g && g.hintId != null && (i.changeActive(g.hintId), i.pick()); - }), r.on(o, "click", function (d) { - var g = B(o, d.target || d.srcElement); - g && g.hintId != null && (i.changeActive(g.hintId), t.options.completeOnSingleClick && i.pick()); - }), r.on(o, "mousedown", function () { - setTimeout(function () { - n.focus(); - }, 20); - }); - var $ = this.getSelectedHintRange(); - return ($.from !== 0 || $.to !== 0) && this.scrollToActive(), r.signal(e, "select", h[this.selectedHint], o.childNodes[this.selectedHint]), !0; - } - p(K, "Widget"), K.prototype = { - close: function () { - if (this.completion.widget == this) { - this.completion.widget = null, this.hints.parentNode && this.hints.parentNode.removeChild(this.hints), this.completion.cm.removeKeyMap(this.keyMap); - var t = this.completion.cm.getInputField(); - t.removeAttribute("aria-activedescendant"), t.removeAttribute("aria-owns"); - var e = this.completion.cm; - this.completion.options.closeOnUnfocus && (e.off("blur", this.onBlur), e.off("focus", this.onFocus)), e.off("scroll", this.onScroll); - } - }, - disable: function () { - this.completion.cm.removeKeyMap(this.keyMap); - var t = this; - this.keyMap = { - Enter: function () { - t.picked = !0; - } - }, this.completion.cm.addKeyMap(this.keyMap); - }, - pick: function () { - this.completion.pick(this.data, this.selectedHint); - }, - changeActive: function (t, e) { - if (t >= this.data.list.length ? t = e ? this.data.list.length - 1 : 0 : t < 0 && (t = e ? 0 : this.data.list.length - 1), this.selectedHint != t) { - var i = this.hints.childNodes[this.selectedHint]; - i && (i.className = i.className.replace(" " + v, ""), i.removeAttribute("aria-selected")), i = this.hints.childNodes[this.selectedHint = t], i.className += " " + v, i.setAttribute("aria-selected", "true"), this.completion.cm.getInputField().setAttribute("aria-activedescendant", i.id), this.scrollToActive(), r.signal(this.data, "select", this.data.list[this.selectedHint], i); - } - }, - scrollToActive: function () { - var t = this.getSelectedHintRange(), - e = this.hints.childNodes[t.from], - i = this.hints.childNodes[t.to], - n = this.hints.firstChild; - e.offsetTop < this.hints.scrollTop ? this.hints.scrollTop = e.offsetTop - n.offsetTop : i.offsetTop + i.offsetHeight > this.hints.scrollTop + this.hints.clientHeight && (this.hints.scrollTop = i.offsetTop + i.offsetHeight - this.hints.clientHeight + n.offsetTop); - }, - screenAmount: function () { - return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1; - }, - getSelectedHintRange: function () { - var t = this.completion.options.scrollMargin || 0; - return { - from: Math.max(0, this.selectedHint - t), - to: Math.min(this.data.list.length - 1, this.selectedHint + t) - }; - } - }; - function it(t, e) { - if (!t.somethingSelected()) return e; - for (var i = [], n = 0; n < e.length; n++) e[n].supportsSelection && i.push(e[n]); - return i; - } - p(it, "applicableHelpers"); - function U(t, e, i, n) { - if (t.async) t(e, n, i);else { - var s = t(e, i); - s && s.then ? s.then(n) : n(s); - } - } - p(U, "fetchHints"); - function nt(t, e) { - var i = t.getHelpers(e, "hint"), - n; - if (i.length) { - var s = p(function (c, o, f) { - var h = it(c, i); - function u(l) { - if (l == h.length) return o(null); - U(h[l], c, f, function (a) { - a && a.list.length > 0 ? o(a) : u(l + 1); - }); - } - p(u, "run"), u(0); - }, "resolved"); - return s.async = !0, s.supportsSelection = !0, s; - } else return (n = t.getHelper(t.getCursor(), "hintWords")) ? function (c) { - return r.hint.fromList(c, { - words: n - }); - } : r.hint.anyword ? function (c, o) { - return r.hint.anyword(c, o); - } : function () {}; - } - p(nt, "resolveAutoHints"), r.registerHelper("hint", "auto", { - resolve: nt - }), r.registerHelper("hint", "fromList", function (t, e) { - var i = t.getCursor(), - n = t.getTokenAt(i), - s, - c = r.Pos(i.line, n.start), - o = i; - n.start < i.ch && /\w/.test(n.string.charAt(i.ch - n.start - 1)) ? s = n.string.substr(0, i.ch - n.start) : (s = "", c = i); - for (var f = [], h = 0; h < e.words.length; h++) { - var u = e.words[h]; - u.slice(0, s.length) == s && f.push(u); - } - if (f.length) return { - list: f, - from: c, - to: o - }; - }), r.commands.autocomplete = r.showHint; - var D = { - hint: r.hint.auto, - completeSingle: !0, - alignWithWord: !0, - closeCharacters: /[\s()\[\]{};:>,]/, - closeOnPick: !0, - closeOnUnfocus: !0, - updateOnCursorActivity: !0, - completeOnSingleClick: !0, - container: null, - customKeys: null, - extraKeys: null, - paddingForScrollbar: !0, - moveOnOverlap: !0 - }; - r.defineOption("hintOptions", null); - }); -})(); -var J = ht.exports; -const at = G.getDefaultExportFromCjs(J), - ft = lt({ - __proto__: null, - default: at - }, [J]); -exports.showHint = ft; - -/***/ }), - -/***/ "../../graphiql-react/dist/sublime.cjs.js": -/*!************************************************!*\ - !*** ../../graphiql-react/dist/sublime.cjs.js ***! - \************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -var _ = Object.defineProperty; -var v = (m, B) => _(m, "name", { - value: B, - configurable: !0 -}); -const E = __webpack_require__(/*! ./codemirror.cjs2.js */ "../../graphiql-react/dist/codemirror.cjs2.js"), - Y = __webpack_require__(/*! ./searchcursor.cjs2.js */ "../../graphiql-react/dist/searchcursor.cjs2.js"), - z = __webpack_require__(/*! ./matchbrackets.cjs2.js */ "../../graphiql-react/dist/matchbrackets.cjs2.js"); -function J(m, B) { - for (var h = 0; h < B.length; h++) { - const a = B[h]; - if (typeof a != "string" && !Array.isArray(a)) { - for (const f in a) if (f !== "default" && !(f in m)) { - const A = Object.getOwnPropertyDescriptor(a, f); - A && Object.defineProperty(m, f, A.get ? A : { - enumerable: !0, - get: () => a[f] - }); - } - } - } - return Object.freeze(Object.defineProperty(m, Symbol.toStringTag, { - value: "Module" - })); -} -v(J, "_mergeNamespaces"); -var G = { - exports: {} -}; -(function (m, B) { - (function (h) { - h(E.requireCodemirror(), Y.requireSearchcursor(), z.requireMatchbrackets()); - })(function (h) { - var a = h.commands, - f = h.Pos; - function A(e, t, n) { - if (n < 0 && t.ch == 0) return e.clipPos(f(t.line - 1)); - var r = e.getLine(t.line); - if (n > 0 && t.ch >= r.length) return e.clipPos(f(t.line + 1, 0)); - for (var l = "start", i, o = t.ch, s = o, u = n < 0 ? 0 : r.length, d = 0; s != u; s += n, d++) { - var p = r.charAt(n < 0 ? s - 1 : s), - c = p != "_" && h.isWordChar(p) ? "w" : "o"; - if (c == "w" && p.toUpperCase() == p && (c = "W"), l == "start") c != "o" ? (l = "in", i = c) : o = s + n;else if (l == "in" && i != c) { - if (i == "w" && c == "W" && n < 0 && s--, i == "W" && c == "w" && n > 0) if (s == o + 1) { - i = "w"; - continue; - } else s--; - break; - } - } - return f(t.line, s); - } - v(A, "findPosSubword"); - function T(e, t) { - e.extendSelectionsBy(function (n) { - return e.display.shift || e.doc.extend || n.empty() ? A(e.doc, n.head, t) : t < 0 ? n.from() : n.to(); - }); - } - v(T, "moveSubword"), a.goSubwordLeft = function (e) { - T(e, -1); - }, a.goSubwordRight = function (e) { - T(e, 1); - }, a.scrollLineUp = function (e) { - var t = e.getScrollInfo(); - if (!e.somethingSelected()) { - var n = e.lineAtHeight(t.top + t.clientHeight, "local"); - e.getCursor().line >= n && e.execCommand("goLineUp"); - } - e.scrollTo(null, t.top - e.defaultTextHeight()); - }, a.scrollLineDown = function (e) { - var t = e.getScrollInfo(); - if (!e.somethingSelected()) { - var n = e.lineAtHeight(t.top, "local") + 1; - e.getCursor().line <= n && e.execCommand("goLineDown"); - } - e.scrollTo(null, t.top + e.defaultTextHeight()); - }, a.splitSelectionByLine = function (e) { - for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++) for (var l = t[r].from(), i = t[r].to(), o = l.line; o <= i.line; ++o) i.line > l.line && o == i.line && i.ch == 0 || n.push({ - anchor: o == l.line ? l : f(o, 0), - head: o == i.line ? i : f(o) - }); - e.setSelections(n, 0); - }, a.singleSelectionTop = function (e) { - var t = e.listSelections()[0]; - e.setSelection(t.anchor, t.head, { - scroll: !1 - }); - }, a.selectLine = function (e) { - for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++) { - var l = t[r]; - n.push({ - anchor: f(l.from().line, 0), - head: f(l.to().line + 1, 0) - }); - } - e.setSelections(n); - }; - function x(e, t) { - if (e.isReadOnly()) return h.Pass; - e.operation(function () { - for (var n = e.listSelections().length, r = [], l = -1, i = 0; i < n; i++) { - var o = e.listSelections()[i].head; - if (!(o.line <= l)) { - var s = f(o.line + (t ? 0 : 1), 0); - e.replaceRange(` -`, s, null, "+insertLine"), e.indentLine(s.line, null, !0), r.push({ - head: s, - anchor: s - }), l = o.line + 1; - } - } - e.setSelections(r); - }), e.execCommand("indentAuto"); - } - v(x, "insertLine"), a.insertLineAfter = function (e) { - return x(e, !1); - }, a.insertLineBefore = function (e) { - return x(e, !0); - }; - function K(e, t) { - for (var n = t.ch, r = n, l = e.getLine(t.line); n && h.isWordChar(l.charAt(n - 1));) --n; - for (; r < l.length && h.isWordChar(l.charAt(r));) ++r; - return { - from: f(t.line, n), - to: f(t.line, r), - word: l.slice(n, r) - }; - } - v(K, "wordAt"), a.selectNextOccurrence = function (e) { - var t = e.getCursor("from"), - n = e.getCursor("to"), - r = e.state.sublimeFindFullWord == e.doc.sel; - if (h.cmpPos(t, n) == 0) { - var l = K(e, t); - if (!l.word) return; - e.setSelection(l.from, l.to), r = !0; - } else { - var i = e.getRange(t, n), - o = r ? new RegExp("\\b" + i + "\\b") : i, - s = e.getSearchCursor(o, n), - u = s.findNext(); - if (u || (s = e.getSearchCursor(o, f(e.firstLine(), 0)), u = s.findNext()), !u || H(e.listSelections(), s.from(), s.to())) return; - e.addSelection(s.from(), s.to()); - } - r && (e.state.sublimeFindFullWord = e.doc.sel); - }, a.skipAndSelectNextOccurrence = function (e) { - var t = e.getCursor("anchor"), - n = e.getCursor("head"); - a.selectNextOccurrence(e), h.cmpPos(t, n) != 0 && e.doc.setSelections(e.doc.listSelections().filter(function (r) { - return r.anchor != t || r.head != n; - })); - }; - function y(e, t) { - for (var n = e.listSelections(), r = [], l = 0; l < n.length; l++) { - var i = n[l], - o = e.findPosV(i.anchor, t, "line", i.anchor.goalColumn), - s = e.findPosV(i.head, t, "line", i.head.goalColumn); - o.goalColumn = i.anchor.goalColumn != null ? i.anchor.goalColumn : e.cursorCoords(i.anchor, "div").left, s.goalColumn = i.head.goalColumn != null ? i.head.goalColumn : e.cursorCoords(i.head, "div").left; - var u = { - anchor: o, - head: s - }; - r.push(i), r.push(u); - } - e.setSelections(r); - } - v(y, "addCursorToSelection"), a.addCursorToPrevLine = function (e) { - y(e, -1); - }, a.addCursorToNextLine = function (e) { - y(e, 1); - }; - function H(e, t, n) { - for (var r = 0; r < e.length; r++) if (h.cmpPos(e[r].from(), t) == 0 && h.cmpPos(e[r].to(), n) == 0) return !0; - return !1; - } - v(H, "isSelectedRange"); - var P = "(){}[]"; - function U(e) { - for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++) { - var l = t[r], - i = l.head, - o = e.scanForBracket(i, -1); - if (!o) return !1; - for (;;) { - var s = e.scanForBracket(i, 1); - if (!s) return !1; - if (s.ch == P.charAt(P.indexOf(o.ch) + 1)) { - var u = f(o.pos.line, o.pos.ch + 1); - if (h.cmpPos(u, l.from()) == 0 && h.cmpPos(s.pos, l.to()) == 0) { - if (o = e.scanForBracket(o.pos, -1), !o) return !1; - } else { - n.push({ - anchor: u, - head: s.pos - }); - break; - } - } - i = f(s.pos.line, s.pos.ch + 1); - } - } - return e.setSelections(n), !0; - } - v(U, "selectBetweenBrackets"), a.selectScope = function (e) { - U(e) || e.execCommand("selectAll"); - }, a.selectBetweenBrackets = function (e) { - if (!U(e)) return h.Pass; - }; - function I(e) { - return e ? /\bpunctuation\b/.test(e) ? e : void 0 : null; - } - v(I, "puncType"), a.goToBracket = function (e) { - e.extendSelectionsBy(function (t) { - var n = e.scanForBracket(t.head, 1, I(e.getTokenTypeAt(t.head))); - if (n && h.cmpPos(n.pos, t.head) != 0) return n.pos; - var r = e.scanForBracket(t.head, -1, I(e.getTokenTypeAt(f(t.head.line, t.head.ch + 1)))); - return r && f(r.pos.line, r.pos.ch + 1) || t.head; - }); - }, a.swapLineUp = function (e) { - if (e.isReadOnly()) return h.Pass; - for (var t = e.listSelections(), n = [], r = e.firstLine() - 1, l = [], i = 0; i < t.length; i++) { - var o = t[i], - s = o.from().line - 1, - u = o.to().line; - l.push({ - anchor: f(o.anchor.line - 1, o.anchor.ch), - head: f(o.head.line - 1, o.head.ch) - }), o.to().ch == 0 && !o.empty() && --u, s > r ? n.push(s, u) : n.length && (n[n.length - 1] = u), r = u; - } - e.operation(function () { - for (var d = 0; d < n.length; d += 2) { - var p = n[d], - c = n[d + 1], - b = e.getLine(p); - e.replaceRange("", f(p, 0), f(p + 1, 0), "+swapLine"), c > e.lastLine() ? e.replaceRange(` -` + b, f(e.lastLine()), null, "+swapLine") : e.replaceRange(b + ` -`, f(c, 0), null, "+swapLine"); - } - e.setSelections(l), e.scrollIntoView(); - }); - }, a.swapLineDown = function (e) { - if (e.isReadOnly()) return h.Pass; - for (var t = e.listSelections(), n = [], r = e.lastLine() + 1, l = t.length - 1; l >= 0; l--) { - var i = t[l], - o = i.to().line + 1, - s = i.from().line; - i.to().ch == 0 && !i.empty() && o--, o < r ? n.push(o, s) : n.length && (n[n.length - 1] = s), r = s; - } - e.operation(function () { - for (var u = n.length - 2; u >= 0; u -= 2) { - var d = n[u], - p = n[u + 1], - c = e.getLine(d); - d == e.lastLine() ? e.replaceRange("", f(d - 1), f(d), "+swapLine") : e.replaceRange("", f(d, 0), f(d + 1, 0), "+swapLine"), e.replaceRange(c + ` -`, f(p, 0), null, "+swapLine"); - } - e.scrollIntoView(); - }); - }, a.toggleCommentIndented = function (e) { - e.toggleComment({ - indent: !0 - }); - }, a.joinLines = function (e) { - for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++) { - for (var l = t[r], i = l.from(), o = i.line, s = l.to().line; r < t.length - 1 && t[r + 1].from().line == s;) s = t[++r].to().line; - n.push({ - start: o, - end: s, - anchor: !l.empty() && i - }); - } - e.operation(function () { - for (var u = 0, d = [], p = 0; p < n.length; p++) { - for (var c = n[p], b = c.anchor && f(c.anchor.line - u, c.anchor.ch), w, g = c.start; g <= c.end; g++) { - var S = g - u; - g == c.end && (w = f(S, e.getLine(S).length + 1)), S < e.lastLine() && (e.replaceRange(" ", f(S), f(S + 1, /^\s*/.exec(e.getLine(S + 1))[0].length)), ++u); - } - d.push({ - anchor: b || w, - head: w - }); - } - e.setSelections(d, 0); - }); - }, a.duplicateLine = function (e) { - e.operation(function () { - for (var t = e.listSelections().length, n = 0; n < t; n++) { - var r = e.listSelections()[n]; - r.empty() ? e.replaceRange(e.getLine(r.head.line) + ` -`, f(r.head.line, 0)) : e.replaceRange(e.getRange(r.from(), r.to()), r.from()); - } - e.scrollIntoView(); - }); - }; - function R(e, t, n) { - if (e.isReadOnly()) return h.Pass; - for (var r = e.listSelections(), l = [], i, o = 0; o < r.length; o++) { - var s = r[o]; - if (!s.empty()) { - for (var u = s.from().line, d = s.to().line; o < r.length - 1 && r[o + 1].from().line == d;) d = r[++o].to().line; - r[o].to().ch || d--, l.push(u, d); - } - } - l.length ? i = !0 : l.push(e.firstLine(), e.lastLine()), e.operation(function () { - for (var p = [], c = 0; c < l.length; c += 2) { - var b = l[c], - w = l[c + 1], - g = f(b, 0), - S = f(w), - F = e.getRange(g, S, !1); - t ? F.sort(function (k, L) { - return k < L ? -n : k == L ? 0 : n; - }) : F.sort(function (k, L) { - var W = k.toUpperCase(), - M = L.toUpperCase(); - return W != M && (k = W, L = M), k < L ? -n : k == L ? 0 : n; - }), e.replaceRange(F, g, S), i && p.push({ - anchor: g, - head: f(w + 1, 0) - }); - } - i && e.setSelections(p, 0); - }); - } - v(R, "sortLines"), a.sortLines = function (e) { - R(e, !0, 1); - }, a.reverseSortLines = function (e) { - R(e, !0, -1); - }, a.sortLinesInsensitive = function (e) { - R(e, !1, 1); - }, a.reverseSortLinesInsensitive = function (e) { - R(e, !1, -1); - }, a.nextBookmark = function (e) { - var t = e.state.sublimeBookmarks; - if (t) for (; t.length;) { - var n = t.shift(), - r = n.find(); - if (r) return t.push(n), e.setSelection(r.from, r.to); - } - }, a.prevBookmark = function (e) { - var t = e.state.sublimeBookmarks; - if (t) for (; t.length;) { - t.unshift(t.pop()); - var n = t[t.length - 1].find(); - if (!n) t.pop();else return e.setSelection(n.from, n.to); - } - }, a.toggleBookmark = function (e) { - for (var t = e.listSelections(), n = e.state.sublimeBookmarks || (e.state.sublimeBookmarks = []), r = 0; r < t.length; r++) { - for (var l = t[r].from(), i = t[r].to(), o = t[r].empty() ? e.findMarksAt(l) : e.findMarks(l, i), s = 0; s < o.length; s++) if (o[s].sublimeBookmark) { - o[s].clear(); - for (var u = 0; u < n.length; u++) n[u] == o[s] && n.splice(u--, 1); - break; - } - s == o.length && n.push(e.markText(l, i, { - sublimeBookmark: !0, - clearWhenEmpty: !1 - })); - } - }, a.clearBookmarks = function (e) { - var t = e.state.sublimeBookmarks; - if (t) for (var n = 0; n < t.length; n++) t[n].clear(); - t.length = 0; - }, a.selectBookmarks = function (e) { - var t = e.state.sublimeBookmarks, - n = []; - if (t) for (var r = 0; r < t.length; r++) { - var l = t[r].find(); - l ? n.push({ - anchor: l.from, - head: l.to - }) : t.splice(r--, 0); - } - n.length && e.setSelections(n, 0); - }; - function D(e, t) { - e.operation(function () { - for (var n = e.listSelections(), r = [], l = [], i = 0; i < n.length; i++) { - var o = n[i]; - o.empty() ? (r.push(i), l.push("")) : l.push(t(e.getRange(o.from(), o.to()))); - } - e.replaceSelections(l, "around", "case"); - for (var i = r.length - 1, s; i >= 0; i--) { - var o = n[r[i]]; - if (!(s && h.cmpPos(o.head, s) > 0)) { - var u = K(e, o.head); - s = u.from, e.replaceRange(t(u.word), u.from, u.to); - } - } - }); - } - v(D, "modifyWordOrSelection"), a.smartBackspace = function (e) { - if (e.somethingSelected()) return h.Pass; - e.operation(function () { - for (var t = e.listSelections(), n = e.getOption("indentUnit"), r = t.length - 1; r >= 0; r--) { - var l = t[r].head, - i = e.getRange({ - line: l.line, - ch: 0 - }, l), - o = h.countColumn(i, null, e.getOption("tabSize")), - s = e.findPosH(l, -1, "char", !1); - if (i && !/\S/.test(i) && o % n == 0) { - var u = new f(l.line, h.findColumn(i, o - n, n)); - u.ch != l.ch && (s = u); - } - e.replaceRange("", s, l, "+delete"); - } - }); - }, a.delLineRight = function (e) { - e.operation(function () { - for (var t = e.listSelections(), n = t.length - 1; n >= 0; n--) e.replaceRange("", t[n].anchor, f(t[n].to().line), "+delete"); - e.scrollIntoView(); - }); - }, a.upcaseAtCursor = function (e) { - D(e, function (t) { - return t.toUpperCase(); - }); - }, a.downcaseAtCursor = function (e) { - D(e, function (t) { - return t.toLowerCase(); - }); - }, a.setSublimeMark = function (e) { - e.state.sublimeMark && e.state.sublimeMark.clear(), e.state.sublimeMark = e.setBookmark(e.getCursor()); - }, a.selectToSublimeMark = function (e) { - var t = e.state.sublimeMark && e.state.sublimeMark.find(); - t && e.setSelection(e.getCursor(), t); - }, a.deleteToSublimeMark = function (e) { - var t = e.state.sublimeMark && e.state.sublimeMark.find(); - if (t) { - var n = e.getCursor(), - r = t; - if (h.cmpPos(n, r) > 0) { - var l = r; - r = n, n = l; - } - e.state.sublimeKilled = e.getRange(n, r), e.replaceRange("", n, r); - } - }, a.swapWithSublimeMark = function (e) { - var t = e.state.sublimeMark && e.state.sublimeMark.find(); - t && (e.state.sublimeMark.clear(), e.state.sublimeMark = e.setBookmark(e.getCursor()), e.setCursor(t)); - }, a.sublimeYank = function (e) { - e.state.sublimeKilled != null && e.replaceSelection(e.state.sublimeKilled, null, "paste"); - }, a.showInCenter = function (e) { - var t = e.cursorCoords(null, "local"); - e.scrollTo(null, (t.top + t.bottom) / 2 - e.getScrollInfo().clientHeight / 2); - }; - function N(e) { - var t = e.getCursor("from"), - n = e.getCursor("to"); - if (h.cmpPos(t, n) == 0) { - var r = K(e, t); - if (!r.word) return; - t = r.from, n = r.to; - } - return { - from: t, - to: n, - query: e.getRange(t, n), - word: r - }; - } - v(N, "getTarget"); - function O(e, t) { - var n = N(e); - if (n) { - var r = n.query, - l = e.getSearchCursor(r, t ? n.to : n.from); - (t ? l.findNext() : l.findPrevious()) ? e.setSelection(l.from(), l.to()) : (l = e.getSearchCursor(r, t ? f(e.firstLine(), 0) : e.clipPos(f(e.lastLine()))), (t ? l.findNext() : l.findPrevious()) ? e.setSelection(l.from(), l.to()) : n.word && e.setSelection(n.from, n.to)); - } - } - v(O, "findAndGoTo"), a.findUnder = function (e) { - O(e, !0); - }, a.findUnderPrevious = function (e) { - O(e, !1); - }, a.findAllUnder = function (e) { - var t = N(e); - if (t) { - for (var n = e.getSearchCursor(t.query), r = [], l = -1; n.findNext();) r.push({ - anchor: n.from(), - head: n.to() - }), n.from().line <= t.from.line && n.from().ch <= t.from.ch && l++; - e.setSelections(r, l); - } - }; - var C = h.keyMap; - C.macSublime = { - "Cmd-Left": "goLineStartSmart", - "Shift-Tab": "indentLess", - "Shift-Ctrl-K": "deleteLine", - "Alt-Q": "wrapLines", - "Ctrl-Left": "goSubwordLeft", - "Ctrl-Right": "goSubwordRight", - "Ctrl-Alt-Up": "scrollLineUp", - "Ctrl-Alt-Down": "scrollLineDown", - "Cmd-L": "selectLine", - "Shift-Cmd-L": "splitSelectionByLine", - Esc: "singleSelectionTop", - "Cmd-Enter": "insertLineAfter", - "Shift-Cmd-Enter": "insertLineBefore", - "Cmd-D": "selectNextOccurrence", - "Shift-Cmd-Space": "selectScope", - "Shift-Cmd-M": "selectBetweenBrackets", - "Cmd-M": "goToBracket", - "Cmd-Ctrl-Up": "swapLineUp", - "Cmd-Ctrl-Down": "swapLineDown", - "Cmd-/": "toggleCommentIndented", - "Cmd-J": "joinLines", - "Shift-Cmd-D": "duplicateLine", - F5: "sortLines", - "Shift-F5": "reverseSortLines", - "Cmd-F5": "sortLinesInsensitive", - "Shift-Cmd-F5": "reverseSortLinesInsensitive", - F2: "nextBookmark", - "Shift-F2": "prevBookmark", - "Cmd-F2": "toggleBookmark", - "Shift-Cmd-F2": "clearBookmarks", - "Alt-F2": "selectBookmarks", - Backspace: "smartBackspace", - "Cmd-K Cmd-D": "skipAndSelectNextOccurrence", - "Cmd-K Cmd-K": "delLineRight", - "Cmd-K Cmd-U": "upcaseAtCursor", - "Cmd-K Cmd-L": "downcaseAtCursor", - "Cmd-K Cmd-Space": "setSublimeMark", - "Cmd-K Cmd-A": "selectToSublimeMark", - "Cmd-K Cmd-W": "deleteToSublimeMark", - "Cmd-K Cmd-X": "swapWithSublimeMark", - "Cmd-K Cmd-Y": "sublimeYank", - "Cmd-K Cmd-C": "showInCenter", - "Cmd-K Cmd-G": "clearBookmarks", - "Cmd-K Cmd-Backspace": "delLineLeft", - "Cmd-K Cmd-1": "foldAll", - "Cmd-K Cmd-0": "unfoldAll", - "Cmd-K Cmd-J": "unfoldAll", - "Ctrl-Shift-Up": "addCursorToPrevLine", - "Ctrl-Shift-Down": "addCursorToNextLine", - "Cmd-F3": "findUnder", - "Shift-Cmd-F3": "findUnderPrevious", - "Alt-F3": "findAllUnder", - "Shift-Cmd-[": "fold", - "Shift-Cmd-]": "unfold", - "Cmd-I": "findIncremental", - "Shift-Cmd-I": "findIncrementalReverse", - "Cmd-H": "replace", - F3: "findNext", - "Shift-F3": "findPrev", - fallthrough: "macDefault" - }, h.normalizeKeyMap(C.macSublime), C.pcSublime = { - "Shift-Tab": "indentLess", - "Shift-Ctrl-K": "deleteLine", - "Alt-Q": "wrapLines", - "Ctrl-T": "transposeChars", - "Alt-Left": "goSubwordLeft", - "Alt-Right": "goSubwordRight", - "Ctrl-Up": "scrollLineUp", - "Ctrl-Down": "scrollLineDown", - "Ctrl-L": "selectLine", - "Shift-Ctrl-L": "splitSelectionByLine", - Esc: "singleSelectionTop", - "Ctrl-Enter": "insertLineAfter", - "Shift-Ctrl-Enter": "insertLineBefore", - "Ctrl-D": "selectNextOccurrence", - "Shift-Ctrl-Space": "selectScope", - "Shift-Ctrl-M": "selectBetweenBrackets", - "Ctrl-M": "goToBracket", - "Shift-Ctrl-Up": "swapLineUp", - "Shift-Ctrl-Down": "swapLineDown", - "Ctrl-/": "toggleCommentIndented", - "Ctrl-J": "joinLines", - "Shift-Ctrl-D": "duplicateLine", - F9: "sortLines", - "Shift-F9": "reverseSortLines", - "Ctrl-F9": "sortLinesInsensitive", - "Shift-Ctrl-F9": "reverseSortLinesInsensitive", - F2: "nextBookmark", - "Shift-F2": "prevBookmark", - "Ctrl-F2": "toggleBookmark", - "Shift-Ctrl-F2": "clearBookmarks", - "Alt-F2": "selectBookmarks", - Backspace: "smartBackspace", - "Ctrl-K Ctrl-D": "skipAndSelectNextOccurrence", - "Ctrl-K Ctrl-K": "delLineRight", - "Ctrl-K Ctrl-U": "upcaseAtCursor", - "Ctrl-K Ctrl-L": "downcaseAtCursor", - "Ctrl-K Ctrl-Space": "setSublimeMark", - "Ctrl-K Ctrl-A": "selectToSublimeMark", - "Ctrl-K Ctrl-W": "deleteToSublimeMark", - "Ctrl-K Ctrl-X": "swapWithSublimeMark", - "Ctrl-K Ctrl-Y": "sublimeYank", - "Ctrl-K Ctrl-C": "showInCenter", - "Ctrl-K Ctrl-G": "clearBookmarks", - "Ctrl-K Ctrl-Backspace": "delLineLeft", - "Ctrl-K Ctrl-1": "foldAll", - "Ctrl-K Ctrl-0": "unfoldAll", - "Ctrl-K Ctrl-J": "unfoldAll", - "Ctrl-Alt-Up": "addCursorToPrevLine", - "Ctrl-Alt-Down": "addCursorToNextLine", - "Ctrl-F3": "findUnder", - "Shift-Ctrl-F3": "findUnderPrevious", - "Alt-F3": "findAllUnder", - "Shift-Ctrl-[": "fold", - "Shift-Ctrl-]": "unfold", - "Ctrl-I": "findIncremental", - "Shift-Ctrl-I": "findIncrementalReverse", - "Ctrl-H": "replace", - F3: "findNext", - "Shift-F3": "findPrev", - fallthrough: "pcDefault" - }, h.normalizeKeyMap(C.pcSublime); - var V = C.default == C.macDefault; - C.sublime = V ? C.macSublime : C.pcSublime; - }); -})(); -var q = G.exports; -const Q = E.getDefaultExportFromCjs(q), - X = J({ - __proto__: null, - default: Q - }, [q]); -exports.sublime = X; - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/async-helpers/index.js": -/*!*********************************************************!*\ - !*** ../../graphiql-toolkit/esm/async-helpers/index.js ***! - \*********************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.fetcherReturnToPromise = fetcherReturnToPromise; -exports.isAsyncIterable = isAsyncIterable; -exports.isObservable = isObservable; -exports.isPromise = isPromise; -var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -function isPromise(value) { - return typeof value === 'object' && value !== null && typeof value.then === 'function'; -} -function observableToPromise(observable) { - return new Promise((resolve, reject) => { - const subscription = observable.subscribe({ - next(v) { - resolve(v); - subscription.unsubscribe(); - }, - error: reject, - complete() { - reject(new Error('no value resolved')); - } - }); - }); -} -function isObservable(value) { - return typeof value === 'object' && value !== null && 'subscribe' in value && typeof value.subscribe === 'function'; -} -function isAsyncIterable(input) { - return typeof input === 'object' && input !== null && (input[Symbol.toStringTag] === 'AsyncGenerator' || Symbol.asyncIterator in input); -} -function asyncIterableToPromise(input) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const iteratorReturn = (_a = ('return' in input ? input : input[Symbol.asyncIterator]()).return) === null || _a === void 0 ? void 0 : _a.bind(input); - const iteratorNext = ('next' in input ? input : input[Symbol.asyncIterator]()).next.bind(input); - const result = yield iteratorNext(); - void (iteratorReturn === null || iteratorReturn === void 0 ? void 0 : iteratorReturn()); - return result.value; - }); -} -function fetcherReturnToPromise(fetcherResult) { - return __awaiter(this, void 0, void 0, function* () { - const result = yield fetcherResult; - if (isAsyncIterable(result)) { - return asyncIterableToPromise(result); - } - if (isObservable(result)) { - return observableToPromise(result); - } - return result; - }); -} - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/create-fetcher/createFetcher.js": -/*!******************************************************************!*\ - !*** ../../graphiql-toolkit/esm/create-fetcher/createFetcher.js ***! - \******************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createGraphiQLFetcher = createGraphiQLFetcher; -var _lib = __webpack_require__(/*! ./lib */ "../../graphiql-toolkit/esm/create-fetcher/lib.js"); -function createGraphiQLFetcher(options) { - let httpFetch; - if (typeof window !== 'undefined' && window.fetch) { - httpFetch = window.fetch; - } - if ((options === null || options === void 0 ? void 0 : options.enableIncrementalDelivery) === null || options.enableIncrementalDelivery !== false) { - options.enableIncrementalDelivery = true; - } - if (options.fetch) { - httpFetch = options.fetch; - } - if (!httpFetch) { - throw new Error('No valid fetcher implementation available'); - } - const simpleFetcher = (0, _lib.createSimpleFetcher)(options, httpFetch); - const httpFetcher = options.enableIncrementalDelivery ? (0, _lib.createMultipartFetcher)(options, httpFetch) : simpleFetcher; - return (graphQLParams, fetcherOpts) => { - if (graphQLParams.operationName === 'IntrospectionQuery') { - return (options.schemaFetcher || simpleFetcher)(graphQLParams, fetcherOpts); - } - const isSubscription = (fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.documentAST) ? (0, _lib.isSubscriptionWithName)(fetcherOpts.documentAST, graphQLParams.operationName || undefined) : false; - if (isSubscription) { - const wsFetcher = (0, _lib.getWsFetcher)(options, fetcherOpts); - if (!wsFetcher) { - throw new Error(`Your GraphiQL createFetcher is not properly configured for websocket subscriptions yet. ${options.subscriptionUrl ? `Provided URL ${options.subscriptionUrl} failed` : 'Please provide subscriptionUrl, wsClient or legacyClient option first.'}`); - } - return wsFetcher(graphQLParams); - } - return httpFetcher(graphQLParams, fetcherOpts); - }; -} - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/create-fetcher/index.js": -/*!**********************************************************!*\ - !*** ../../graphiql-toolkit/esm/create-fetcher/index.js ***! - \**********************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var _exportNames = { - createGraphiQLFetcher: true -}; -Object.defineProperty(exports, "createGraphiQLFetcher", ({ - enumerable: true, - get: function () { - return _createFetcher.createGraphiQLFetcher; - } -})); -var _types = __webpack_require__(/*! ./types */ "../../graphiql-toolkit/esm/create-fetcher/types.js"); -Object.keys(_types).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _types[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _types[key]; - } - }); -}); -var _createFetcher = __webpack_require__(/*! ./createFetcher */ "../../graphiql-toolkit/esm/create-fetcher/createFetcher.js"); - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/create-fetcher/lib.js": -/*!********************************************************!*\ - !*** ../../graphiql-toolkit/esm/create-fetcher/lib.js ***! - \********************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isSubscriptionWithName = exports.getWsFetcher = exports.createWebsocketsFetcherFromUrl = exports.createWebsocketsFetcherFromClient = exports.createSimpleFetcher = exports.createMultipartFetcher = exports.createLegacyWebsocketsFetcher = void 0; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -var _meros = __webpack_require__(/*! meros */ "../../../node_modules/meros/browser/index.mjs"); -var _pushPullAsyncIterableIterator = __webpack_require__(/*! @n1ru4l/push-pull-async-iterable-iterator */ "../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js"); -var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __await = void 0 && (void 0).__await || function (v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -}; -var __asyncValues = void 0 && (void 0).__asyncValues || function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], - i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function (v) { - return new Promise(function (resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function (v) { - resolve({ - value: v, - done: d - }); - }, reject); - } -}; -var __asyncGenerator = void 0 && (void 0).__asyncGenerator || function (thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), - i, - q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function (v) { - return new Promise(function (a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -}; -const errorHasCode = err => { - return typeof err === 'object' && err !== null && 'code' in err; -}; -const isSubscriptionWithName = (document, name) => { - let isSubscription = false; - (0, _graphql.visit)(document, { - OperationDefinition(node) { - var _a; - if (name === ((_a = node.name) === null || _a === void 0 ? void 0 : _a.value) && node.operation === 'subscription') { - isSubscription = true; - } - } - }); - return isSubscription; -}; -exports.isSubscriptionWithName = isSubscriptionWithName; -const createSimpleFetcher = (options, httpFetch) => (graphQLParams, fetcherOpts) => __awaiter(void 0, void 0, void 0, function* () { - const data = yield httpFetch(options.url, { - method: 'POST', - body: JSON.stringify(graphQLParams), - headers: Object.assign(Object.assign({ - 'content-type': 'application/json' - }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers) - }); - return data.json(); -}); -exports.createSimpleFetcher = createSimpleFetcher; -const createWebsocketsFetcherFromUrl = (url, connectionParams) => { - let wsClient; - try { - const { - createClient - } = __webpack_require__(/*! graphql-ws */ "../../../node_modules/graphql-ws/lib/index.js"); - wsClient = createClient({ - url, - connectionParams - }); - return createWebsocketsFetcherFromClient(wsClient); - } catch (err) { - if (errorHasCode(err) && err.code === 'MODULE_NOT_FOUND') { - throw new Error("You need to install the 'graphql-ws' package to use websockets when passing a 'subscriptionUrl'"); - } - console.error(`Error creating websocket client for ${url}`, err); - } -}; -exports.createWebsocketsFetcherFromUrl = createWebsocketsFetcherFromUrl; -const createWebsocketsFetcherFromClient = wsClient => graphQLParams => (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => wsClient.subscribe(graphQLParams, Object.assign(Object.assign({}, sink), { - error(err) { - if (err instanceof CloseEvent) { - sink.error(new Error(`Socket closed with event ${err.code} ${err.reason || ''}`.trim())); - } else { - sink.error(err); - } - } -}))); -exports.createWebsocketsFetcherFromClient = createWebsocketsFetcherFromClient; -const createLegacyWebsocketsFetcher = legacyWsClient => graphQLParams => { - const observable = legacyWsClient.request(graphQLParams); - return (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => observable.subscribe(sink).unsubscribe); -}; -exports.createLegacyWebsocketsFetcher = createLegacyWebsocketsFetcher; -const createMultipartFetcher = (options, httpFetch) => function (graphQLParams, fetcherOpts) { - return __asyncGenerator(this, arguments, function* () { - var e_1, _a; - const response = yield __await(httpFetch(options.url, { - method: 'POST', - body: JSON.stringify(graphQLParams), - headers: Object.assign(Object.assign({ - 'content-type': 'application/json', - accept: 'application/json, multipart/mixed' - }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers) - }).then(r => (0, _meros.meros)(r, { - multiple: true - }))); - if (!(0, _pushPullAsyncIterableIterator.isAsyncIterable)(response)) { - return yield __await(yield yield __await(response.json())); - } - try { - for (var response_1 = __asyncValues(response), response_1_1; response_1_1 = yield __await(response_1.next()), !response_1_1.done;) { - const chunk = response_1_1.value; - if (chunk.some(part => !part.json)) { - const message = chunk.map(part => `Headers::\n${part.headers}\n\nBody::\n${part.body}`); - throw new Error(`Expected multipart chunks to be of json type. got:\n${message}`); - } - yield yield __await(chunk.map(part => part.body)); - } - } catch (e_1_1) { - e_1 = { - error: e_1_1 - }; - } finally { - try { - if (response_1_1 && !response_1_1.done && (_a = response_1.return)) yield __await(_a.call(response_1)); - } finally { - if (e_1) throw e_1.error; - } - } - }); -}; -exports.createMultipartFetcher = createMultipartFetcher; -const getWsFetcher = (options, fetcherOpts) => { - if (options.wsClient) { - return createWebsocketsFetcherFromClient(options.wsClient); - } - if (options.subscriptionUrl) { - return createWebsocketsFetcherFromUrl(options.subscriptionUrl, Object.assign(Object.assign({}, options.wsConnectionParams), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers)); - } - const legacyWebsocketsClient = options.legacyClient || options.legacyWsClient; - if (legacyWebsocketsClient) { - return createLegacyWebsocketsFetcher(legacyWebsocketsClient); - } -}; -exports.getWsFetcher = getWsFetcher; - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/create-fetcher/types.js": -/*!**********************************************************!*\ - !*** ../../graphiql-toolkit/esm/create-fetcher/types.js ***! - \**********************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/format/index.js": -/*!**************************************************!*\ - !*** ../../graphiql-toolkit/esm/format/index.js ***! - \**************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.formatError = formatError; -exports.formatResult = formatResult; -function stringify(obj) { - return JSON.stringify(obj, null, 2); -} -function formatSingleError(error) { - return Object.assign(Object.assign({}, error), { - message: error.message, - stack: error.stack - }); -} -function handleSingleError(error) { - if (error instanceof Error) { - return formatSingleError(error); - } - return error; -} -function formatError(error) { - if (Array.isArray(error)) { - return stringify({ - errors: error.map(e => handleSingleError(e)) - }); - } - return stringify({ - errors: [handleSingleError(error)] - }); -} -function formatResult(result) { - return stringify(result); -} - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js": -/*!*******************************************************************!*\ - !*** ../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js ***! - \*******************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.fillLeafs = fillLeafs; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -function fillLeafs(schema, docString, getDefaultFieldNames) { - const insertions = []; - if (!schema || !docString) { - return { - insertions, - result: docString - }; - } - let ast; - try { - ast = (0, _graphql.parse)(docString); - } catch (_a) { - return { - insertions, - result: docString - }; - } - const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames; - const typeInfo = new _graphql.TypeInfo(schema); - (0, _graphql.visit)(ast, { - leave(node) { - typeInfo.leave(node); - }, - enter(node) { - typeInfo.enter(node); - if (node.kind === 'Field' && !node.selectionSet) { - const fieldType = typeInfo.getType(); - const selectionSet = buildSelectionSet(isFieldType(fieldType), fieldNameFn); - if (selectionSet && node.loc) { - const indent = getIndentation(docString, node.loc.start); - insertions.push({ - index: node.loc.end, - string: ' ' + (0, _graphql.print)(selectionSet).replaceAll('\n', '\n' + indent) - }); - } - } - } - }); - return { - insertions, - result: withInsertions(docString, insertions) - }; -} -function defaultGetDefaultFieldNames(type) { - if (!('getFields' in type)) { - return []; - } - const fields = type.getFields(); - if (fields.id) { - return ['id']; - } - if (fields.edges) { - return ['edges']; - } - if (fields.node) { - return ['node']; - } - const leafFieldNames = []; - for (const fieldName of Object.keys(fields)) { - if ((0, _graphql.isLeafType)(fields[fieldName].type)) { - leafFieldNames.push(fieldName); - } - } - return leafFieldNames; -} -function buildSelectionSet(type, getDefaultFieldNames) { - const namedType = (0, _graphql.getNamedType)(type); - if (!type || (0, _graphql.isLeafType)(type)) { - return; - } - const fieldNames = getDefaultFieldNames(namedType); - if (!Array.isArray(fieldNames) || fieldNames.length === 0 || !('getFields' in namedType)) { - return; - } - return { - kind: _graphql.Kind.SELECTION_SET, - selections: fieldNames.map(fieldName => { - const fieldDef = namedType.getFields()[fieldName]; - const fieldType = fieldDef ? fieldDef.type : null; - return { - kind: _graphql.Kind.FIELD, - name: { - kind: _graphql.Kind.NAME, - value: fieldName - }, - selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames) - }; - }) - }; -} -function withInsertions(initial, insertions) { - if (insertions.length === 0) { - return initial; - } - let edited = ''; - let prevIndex = 0; - for (const { - index, - string - } of insertions) { - edited += initial.slice(prevIndex, index) + string; - prevIndex = index; - } - edited += initial.slice(prevIndex); - return edited; -} -function getIndentation(str, index) { - let indentStart = index; - let indentEnd = index; - while (indentStart) { - const c = str.charCodeAt(indentStart - 1); - if (c === 10 || c === 13 || c === 0x2028 || c === 0x2029) { - break; - } - indentStart--; - if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) { - indentEnd = indentStart; - } - } - return str.slice(indentStart, indentEnd); -} -function isFieldType(fieldType) { - if (fieldType) { - return fieldType; - } -} - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/graphql-helpers/index.js": -/*!***********************************************************!*\ - !*** ../../graphiql-toolkit/esm/graphql-helpers/index.js ***! - \***********************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var _autoComplete = __webpack_require__(/*! ./auto-complete */ "../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js"); -Object.keys(_autoComplete).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _autoComplete[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _autoComplete[key]; - } - }); -}); -var _mergeAst = __webpack_require__(/*! ./merge-ast */ "../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js"); -Object.keys(_mergeAst).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _mergeAst[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _mergeAst[key]; - } - }); -}); -var _operationName = __webpack_require__(/*! ./operation-name */ "../../graphiql-toolkit/esm/graphql-helpers/operation-name.js"); -Object.keys(_operationName).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _operationName[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _operationName[key]; - } - }); -}); - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js": -/*!***************************************************************!*\ - !*** ../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js ***! - \***************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.mergeAst = mergeAst; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -function uniqueBy(array, iteratee) { - var _a; - const FilteredMap = new Map(); - const result = []; - for (const item of array) { - if (item.kind === 'Field') { - const uniqueValue = iteratee(item); - const existing = FilteredMap.get(uniqueValue); - if ((_a = item.directives) === null || _a === void 0 ? void 0 : _a.length) { - const itemClone = Object.assign({}, item); - result.push(itemClone); - } else if ((existing === null || existing === void 0 ? void 0 : existing.selectionSet) && item.selectionSet) { - existing.selectionSet.selections = [...existing.selectionSet.selections, ...item.selectionSet.selections]; - } else if (!existing) { - const itemClone = Object.assign({}, item); - FilteredMap.set(uniqueValue, itemClone); - result.push(itemClone); - } - } else { - result.push(item); - } - } - return result; -} -function inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType) { - var _a; - const selectionSetTypeName = selectionSetType ? (0, _graphql.getNamedType)(selectionSetType).name : null; - const outputSelections = []; - const seenSpreads = []; - for (let selection of selections) { - if (selection.kind === 'FragmentSpread') { - const fragmentName = selection.name.value; - if (!selection.directives || selection.directives.length === 0) { - if (seenSpreads.includes(fragmentName)) { - continue; - } else { - seenSpreads.push(fragmentName); - } - } - const fragmentDefinition = fragmentDefinitions[selection.name.value]; - if (fragmentDefinition) { - const { - typeCondition, - directives, - selectionSet - } = fragmentDefinition; - selection = { - kind: _graphql.Kind.INLINE_FRAGMENT, - typeCondition, - directives, - selectionSet - }; - } - } - if (selection.kind === _graphql.Kind.INLINE_FRAGMENT && (!selection.directives || ((_a = selection.directives) === null || _a === void 0 ? void 0 : _a.length) === 0)) { - const fragmentTypeName = selection.typeCondition ? selection.typeCondition.name.value : null; - if (!fragmentTypeName || fragmentTypeName === selectionSetTypeName) { - outputSelections.push(...inlineRelevantFragmentSpreads(fragmentDefinitions, selection.selectionSet.selections, selectionSetType)); - continue; - } - } - outputSelections.push(selection); - } - return outputSelections; -} -function mergeAst(documentAST, schema) { - const typeInfo = schema ? new _graphql.TypeInfo(schema) : null; - const fragmentDefinitions = Object.create(null); - for (const definition of documentAST.definitions) { - if (definition.kind === _graphql.Kind.FRAGMENT_DEFINITION) { - fragmentDefinitions[definition.name.value] = definition; - } - } - const flattenVisitors = { - SelectionSet(node) { - const selectionSetType = typeInfo ? typeInfo.getParentType() : null; - let { - selections - } = node; - selections = inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType); - return Object.assign(Object.assign({}, node), { - selections - }); - }, - FragmentDefinition() { - return null; - } - }; - const flattenedAST = (0, _graphql.visit)(documentAST, typeInfo ? (0, _graphql.visitWithTypeInfo)(typeInfo, flattenVisitors) : flattenVisitors); - const deduplicateVisitors = { - SelectionSet(node) { - let { - selections - } = node; - selections = uniqueBy(selections, selection => selection.alias ? selection.alias.value : selection.name.value); - return Object.assign(Object.assign({}, node), { - selections - }); - }, - FragmentDefinition() { - return null; - } - }; - return (0, _graphql.visit)(flattenedAST, deduplicateVisitors); -} - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/graphql-helpers/operation-name.js": -/*!********************************************************************!*\ - !*** ../../graphiql-toolkit/esm/graphql-helpers/operation-name.js ***! - \********************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getSelectedOperationName = getSelectedOperationName; -function getSelectedOperationName(prevOperations, prevSelectedOperationName, operations) { - if (!operations || operations.length < 1) { - return; - } - const names = operations.map(op => { - var _a; - return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value; - }); - if (prevSelectedOperationName && names.includes(prevSelectedOperationName)) { - return prevSelectedOperationName; - } - if (prevSelectedOperationName && prevOperations) { - const prevNames = prevOperations.map(op => { - var _a; - return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value; - }); - const prevIndex = prevNames.indexOf(prevSelectedOperationName); - if (prevIndex !== -1 && prevIndex < names.length) { - return names[prevIndex]; - } - } - return names[0]; -} - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/index.js": -/*!*******************************************!*\ - !*** ../../graphiql-toolkit/esm/index.js ***! - \*******************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var _asyncHelpers = __webpack_require__(/*! ./async-helpers */ "../../graphiql-toolkit/esm/async-helpers/index.js"); -Object.keys(_asyncHelpers).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _asyncHelpers[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _asyncHelpers[key]; - } - }); -}); -var _createFetcher = __webpack_require__(/*! ./create-fetcher */ "../../graphiql-toolkit/esm/create-fetcher/index.js"); -Object.keys(_createFetcher).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _createFetcher[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _createFetcher[key]; - } - }); -}); -var _format = __webpack_require__(/*! ./format */ "../../graphiql-toolkit/esm/format/index.js"); -Object.keys(_format).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _format[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _format[key]; - } - }); -}); -var _graphqlHelpers = __webpack_require__(/*! ./graphql-helpers */ "../../graphiql-toolkit/esm/graphql-helpers/index.js"); -Object.keys(_graphqlHelpers).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _graphqlHelpers[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _graphqlHelpers[key]; - } - }); -}); -var _storage = __webpack_require__(/*! ./storage */ "../../graphiql-toolkit/esm/storage/index.js"); -Object.keys(_storage).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _storage[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _storage[key]; - } - }); -}); - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/storage/base.js": -/*!**************************************************!*\ - !*** ../../graphiql-toolkit/esm/storage/base.js ***! - \**************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.StorageAPI = void 0; -function isQuotaError(storage, e) { - return e instanceof DOMException && (e.code === 22 || e.code === 1014 || e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') && storage.length !== 0; -} -class StorageAPI { - constructor(storage) { - if (storage) { - this.storage = storage; - } else if (storage === null) { - this.storage = null; - } else if (typeof window === 'undefined') { - this.storage = null; - } else { - this.storage = { - getItem: window.localStorage.getItem.bind(window.localStorage), - setItem: window.localStorage.setItem.bind(window.localStorage), - removeItem: window.localStorage.removeItem.bind(window.localStorage), - get length() { - let keys = 0; - for (const key in window.localStorage) { - if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) { - keys += 1; - } - } - return keys; - }, - clear() { - for (const key in window.localStorage) { - if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) { - window.localStorage.removeItem(key); - } - } - } - }; - } - } - get(name) { - if (!this.storage) { - return null; - } - const key = `${STORAGE_NAMESPACE}:${name}`; - const value = this.storage.getItem(key); - if (value === 'null' || value === 'undefined') { - this.storage.removeItem(key); - return null; - } - return value || null; - } - set(name, value) { - let quotaError = false; - let error = null; - if (this.storage) { - const key = `${STORAGE_NAMESPACE}:${name}`; - if (value) { - try { - this.storage.setItem(key, value); - } catch (e) { - error = e instanceof Error ? e : new Error(`${e}`); - quotaError = isQuotaError(this.storage, e); - } - } else { - this.storage.removeItem(key); - } - } - return { - isQuotaError: quotaError, - error - }; - } - clear() { - if (this.storage) { - this.storage.clear(); - } - } -} -exports.StorageAPI = StorageAPI; -const STORAGE_NAMESPACE = 'graphiql'; - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/storage/custom.js": -/*!****************************************************!*\ - !*** ../../graphiql-toolkit/esm/storage/custom.js ***! - \****************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.createLocalStorage = createLocalStorage; -function createLocalStorage(_ref) { - let { - namespace - } = _ref; - const storageKeyPrefix = `${namespace}:`; - const getStorageKey = key => `${storageKeyPrefix}${key}`; - const storage = { - setItem: (key, value) => localStorage.setItem(getStorageKey(key), value), - getItem: key => localStorage.getItem(getStorageKey(key)), - removeItem: key => localStorage.removeItem(getStorageKey(key)), - get length() { - let keys = 0; - for (const key in window.localStorage) { - if (key.indexOf(storageKeyPrefix) === 0) { - keys += 1; - } - } - return keys; - }, - clear() { - for (const key in window.localStorage) { - if (key.indexOf(storageKeyPrefix) === 0) { - window.localStorage.removeItem(key); - } - } - } - }; - return storage; -} - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/storage/history.js": -/*!*****************************************************!*\ - !*** ../../graphiql-toolkit/esm/storage/history.js ***! - \*****************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.HistoryStore = void 0; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -var _query = __webpack_require__(/*! ./query */ "../../graphiql-toolkit/esm/storage/query.js"); -const MAX_QUERY_SIZE = 100000; -class HistoryStore { - constructor(storage, maxHistoryLength) { - var _this = this; - this.storage = storage; - this.maxHistoryLength = maxHistoryLength; - this.updateHistory = _ref => { - let { - query, - variables, - headers, - operationName - } = _ref; - if (!this.shouldSaveQuery(query, variables, headers, this.history.fetchRecent())) { - return; - } - this.history.push({ - query, - variables, - headers, - operationName - }); - const historyQueries = this.history.items; - const favoriteQueries = this.favorite.items; - this.queries = historyQueries.concat(favoriteQueries); - }; - this.deleteHistory = function (_ref2) { - let { - query, - variables, - headers, - operationName, - favorite - } = _ref2; - let clearFavorites = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - function deleteFromStore(store) { - const found = store.items.find(x => x.query === query && x.variables === variables && x.headers === headers && x.operationName === operationName); - if (found) { - store.delete(found); - } - } - if (favorite || clearFavorites) { - deleteFromStore(_this.favorite); - } - if (!favorite || clearFavorites) { - deleteFromStore(_this.history); - } - _this.queries = [..._this.history.items, ..._this.favorite.items]; - }; - this.history = new _query.QueryStore('queries', this.storage, this.maxHistoryLength); - this.favorite = new _query.QueryStore('favorites', this.storage, null); - this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()]; - } - shouldSaveQuery(query, variables, headers, lastQuerySaved) { - if (!query) { - return false; - } - try { - (0, _graphql.parse)(query); - } catch (_a) { - return false; - } - if (query.length > MAX_QUERY_SIZE) { - return false; - } - if (!lastQuerySaved) { - return true; - } - if (JSON.stringify(query) === JSON.stringify(lastQuerySaved.query)) { - if (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables)) { - if (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers)) { - return false; - } - if (headers && !lastQuerySaved.headers) { - return false; - } - } - if (variables && !lastQuerySaved.variables) { - return false; - } - } - return true; - } - toggleFavorite(_ref3) { - let { - query, - variables, - headers, - operationName, - label, - favorite - } = _ref3; - const item = { - query, - variables, - headers, - operationName, - label - }; - if (favorite) { - item.favorite = false; - this.favorite.delete(item); - this.history.push(item); - } else { - item.favorite = true; - this.favorite.push(item); - this.history.delete(item); - } - this.queries = [...this.history.items, ...this.favorite.items]; - } - editLabel(_ref4, index) { - let { - query, - variables, - headers, - operationName, - label, - favorite - } = _ref4; - const item = { - query, - variables, - headers, - operationName, - label - }; - if (favorite) { - this.favorite.edit(Object.assign(Object.assign({}, item), { - favorite - }), index); - } else { - this.history.edit(item, index); - } - this.queries = [...this.history.items, ...this.favorite.items]; - } -} -exports.HistoryStore = HistoryStore; - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/storage/index.js": -/*!***************************************************!*\ - !*** ../../graphiql-toolkit/esm/storage/index.js ***! - \***************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var _base = __webpack_require__(/*! ./base */ "../../graphiql-toolkit/esm/storage/base.js"); -Object.keys(_base).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _base[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _base[key]; - } - }); -}); -var _history = __webpack_require__(/*! ./history */ "../../graphiql-toolkit/esm/storage/history.js"); -Object.keys(_history).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _history[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _history[key]; - } - }); -}); -var _query = __webpack_require__(/*! ./query */ "../../graphiql-toolkit/esm/storage/query.js"); -Object.keys(_query).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _query[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _query[key]; - } - }); -}); -var _custom = __webpack_require__(/*! ./custom */ "../../graphiql-toolkit/esm/storage/custom.js"); -Object.keys(_custom).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _custom[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _custom[key]; - } - }); -}); - -/***/ }), - -/***/ "../../graphiql-toolkit/esm/storage/query.js": -/*!***************************************************!*\ - !*** ../../graphiql-toolkit/esm/storage/query.js ***! - \***************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.QueryStore = void 0; -class QueryStore { - constructor(key, storage) { - let maxSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - this.key = key; - this.storage = storage; - this.maxSize = maxSize; - this.items = this.fetchAll(); - } - get length() { - return this.items.length; - } - contains(item) { - return this.items.some(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName); - } - edit(item, index) { - if (typeof index === 'number' && this.items[index]) { - const found = this.items[index]; - if (found.query === item.query && found.variables === item.variables && found.headers === item.headers && found.operationName === item.operationName) { - this.items.splice(index, 1, item); - this.save(); - return; - } - } - const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName); - if (itemIndex !== -1) { - this.items.splice(itemIndex, 1, item); - this.save(); - } - } - delete(item) { - const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName); - if (itemIndex !== -1) { - this.items.splice(itemIndex, 1); - this.save(); - } - } - fetchRecent() { - return this.items.at(-1); - } - fetchAll() { - const raw = this.storage.get(this.key); - if (raw) { - return JSON.parse(raw)[this.key]; - } - return []; - } - push(item) { - const items = [...this.items, item]; - if (this.maxSize && items.length > this.maxSize) { - items.shift(); - } - for (let attempts = 0; attempts < 5; attempts++) { - const response = this.storage.set(this.key, JSON.stringify({ - [this.key]: items - })); - if (!(response === null || response === void 0 ? void 0 : response.error)) { - this.items = items; - } else if (response.isQuotaError && this.maxSize) { - items.shift(); - } else { - return; - } - } - } - save() { - this.storage.set(this.key, JSON.stringify({ - [this.key]: this.items - })); - } -} -exports.QueryStore = QueryStore; - -/***/ }), - -/***/ "./components/GraphiQL.tsx": -/*!*********************************!*\ - !*** ./components/GraphiQL.tsx ***! - \*********************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.GraphiQL = GraphiQL; -exports.GraphiQLInterface = GraphiQLInterface; -var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); -var _react2 = __webpack_require__(/*! @graphiql/react */ "../../graphiql-react/dist/index.js"); -function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } -function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } -function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } -const majorVersion = parseInt(_react.default.version.slice(0, 2), 10); -if (majorVersion < 16) { - throw new Error(['GraphiQL 0.18.0 and after is not compatible with React 15 or below.', 'If you are using a CDN source (jsdelivr, unpkg, etc), follow this example:', 'https://github.com/graphql/graphiql/blob/master/examples/graphiql-cdn/index.html#L49'].join('\n')); -} -/** - * The top-level React component for GraphiQL, intended to encompass the entire - * browser viewport. - * - * @see https://github.com/graphql/graphiql#usage - */ - -function GraphiQL(_ref) { - let { - dangerouslyAssumeSchemaIsValid, - defaultQuery, - defaultTabs, - externalFragments, - fetcher, - getDefaultFieldNames, - headers, - inputValueDeprecation, - introspectionQueryName, - maxHistoryLength, - onEditOperationName, - onSchemaChange, - onTabChange, - onTogglePluginVisibility, - operationName, - plugins, - query, - response, - schema, - schemaDescription, - shouldPersistHeaders, - storage, - validationRules, - variables, - visiblePlugin, - defaultHeaders, - ...props - } = _ref; - // Ensure props are correct - if (typeof fetcher !== 'function') { - throw new TypeError('The `GraphiQL` component requires a `fetcher` function to be passed as prop.'); - } - return /*#__PURE__*/_react.default.createElement(_react2.GraphiQLProvider, { - getDefaultFieldNames: getDefaultFieldNames, - dangerouslyAssumeSchemaIsValid: dangerouslyAssumeSchemaIsValid, - defaultQuery: defaultQuery, - defaultHeaders: defaultHeaders, - defaultTabs: defaultTabs, - externalFragments: externalFragments, - fetcher: fetcher, - headers: headers, - inputValueDeprecation: inputValueDeprecation, - introspectionQueryName: introspectionQueryName, - maxHistoryLength: maxHistoryLength, - onEditOperationName: onEditOperationName, - onSchemaChange: onSchemaChange, - onTabChange: onTabChange, - onTogglePluginVisibility: onTogglePluginVisibility, - plugins: plugins, - visiblePlugin: visiblePlugin, - operationName: operationName, - query: query, - response: response, - schema: schema, - schemaDescription: schemaDescription, - shouldPersistHeaders: shouldPersistHeaders, - storage: storage, - validationRules: validationRules, - variables: variables - }, /*#__PURE__*/_react.default.createElement(GraphiQLInterface, _extends({ - showPersistHeadersSettings: shouldPersistHeaders !== false - }, props))); -} - -// Export main windows/panes to be used separately if desired. -GraphiQL.Logo = GraphiQLLogo; -GraphiQL.Toolbar = GraphiQLToolbar; -GraphiQL.Footer = GraphiQLFooter; -function GraphiQLInterface(props) { - var _props$isHeadersEdito, _pluginContext$visibl, _props$toolbar, _props$toolbar2; - const isHeadersEditorEnabled = (_props$isHeadersEdito = props.isHeadersEditorEnabled) !== null && _props$isHeadersEdito !== void 0 ? _props$isHeadersEdito : true; - const editorContext = (0, _react2.useEditorContext)({ - nonNull: true - }); - const executionContext = (0, _react2.useExecutionContext)({ - nonNull: true - }); - const schemaContext = (0, _react2.useSchemaContext)({ - nonNull: true - }); - const storageContext = (0, _react2.useStorageContext)(); - const pluginContext = (0, _react2.usePluginContext)(); - const copy = (0, _react2.useCopyQuery)({ - onCopyQuery: props.onCopyQuery - }); - const merge = (0, _react2.useMergeQuery)(); - const prettify = (0, _react2.usePrettifyEditors)(); - const { - theme, - setTheme - } = (0, _react2.useTheme)(); - const PluginContent = pluginContext === null || pluginContext === void 0 ? void 0 : (_pluginContext$visibl = pluginContext.visiblePlugin) === null || _pluginContext$visibl === void 0 ? void 0 : _pluginContext$visibl.content; - const pluginResize = (0, _react2.useDragResize)({ - defaultSizeRelation: 1 / 3, - direction: 'horizontal', - initiallyHidden: pluginContext !== null && pluginContext !== void 0 && pluginContext.visiblePlugin ? undefined : 'first', - onHiddenElementChange(resizableElement) { - if (resizableElement === 'first') { - pluginContext === null || pluginContext === void 0 ? void 0 : pluginContext.setVisiblePlugin(null); - } - }, - sizeThresholdSecond: 200, - storageKey: 'docExplorerFlex' - }); - const editorResize = (0, _react2.useDragResize)({ - direction: 'horizontal', - storageKey: 'editorFlex' - }); - const editorToolsResize = (0, _react2.useDragResize)({ - defaultSizeRelation: 3, - direction: 'vertical', - initiallyHidden: (() => { - if (props.defaultEditorToolsVisibility === 'variables' || props.defaultEditorToolsVisibility === 'headers') { - return; - } - if (typeof props.defaultEditorToolsVisibility === 'boolean') { - return props.defaultEditorToolsVisibility ? undefined : 'second'; - } - return editorContext.initialVariables || editorContext.initialHeaders ? undefined : 'second'; - })(), - sizeThresholdSecond: 60, - storageKey: 'secondaryEditorFlex' - }); - const [activeSecondaryEditor, setActiveSecondaryEditor] = (0, _react.useState)(() => { - if (props.defaultEditorToolsVisibility === 'variables' || props.defaultEditorToolsVisibility === 'headers') { - return props.defaultEditorToolsVisibility; - } - return !editorContext.initialVariables && editorContext.initialHeaders && isHeadersEditorEnabled ? 'headers' : 'variables'; - }); - const [showDialog, setShowDialog] = (0, _react.useState)(null); - const [clearStorageStatus, setClearStorageStatus] = (0, _react.useState)(null); - const children = _react.default.Children.toArray(props.children); - const logo = children.find(child => isChildComponentType(child, GraphiQL.Logo)) || /*#__PURE__*/_react.default.createElement(GraphiQL.Logo, null); - const toolbar = children.find(child => isChildComponentType(child, GraphiQL.Toolbar)) || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_react2.ToolbarButton, { - onClick: prettify, - label: "Prettify query (Shift-Ctrl-P)" - }, /*#__PURE__*/_react.default.createElement(_react2.PrettifyIcon, { - className: "graphiql-toolbar-icon", - "aria-hidden": "true" - })), /*#__PURE__*/_react.default.createElement(_react2.ToolbarButton, { - onClick: merge, - label: "Merge fragments into query (Shift-Ctrl-M)" - }, /*#__PURE__*/_react.default.createElement(_react2.MergeIcon, { - className: "graphiql-toolbar-icon", - "aria-hidden": "true" - })), /*#__PURE__*/_react.default.createElement(_react2.ToolbarButton, { - onClick: copy, - label: "Copy query (Shift-Ctrl-C)" - }, /*#__PURE__*/_react.default.createElement(_react2.CopyIcon, { - className: "graphiql-toolbar-icon", - "aria-hidden": "true" - })), ((_props$toolbar = props.toolbar) === null || _props$toolbar === void 0 ? void 0 : _props$toolbar.additionalContent) && props.toolbar.additionalContent, ((_props$toolbar2 = props.toolbar) === null || _props$toolbar2 === void 0 ? void 0 : _props$toolbar2.additionalComponent) && /*#__PURE__*/_react.default.createElement(props.toolbar.additionalComponent, null)); - const footer = children.find(child => isChildComponentType(child, GraphiQL.Footer)); - const onClickReference = (0, _react.useCallback)(() => { - if (pluginResize.hiddenElement === 'first') { - pluginResize.setHiddenElement(null); - } - }, [pluginResize]); - const handleClearData = (0, _react.useCallback)(() => { - try { - storageContext === null || storageContext === void 0 ? void 0 : storageContext.clear(); - setClearStorageStatus('success'); - } catch { - setClearStorageStatus('error'); - } - }, [storageContext]); - const handlePersistHeaders = (0, _react.useCallback)(event => { - editorContext.setShouldPersistHeaders(event.currentTarget.dataset.value === 'true'); - }, [editorContext]); - const handleChangeTheme = (0, _react.useCallback)(event => { - const selectedTheme = event.currentTarget.dataset.theme; - setTheme(selectedTheme || null); - }, [setTheme]); - const handleAddTab = editorContext.addTab; - const handleRefetchSchema = schemaContext.introspect; - const handleReorder = editorContext.moveTab; - const handleShowDialog = (0, _react.useCallback)(event => { - setShowDialog(event.currentTarget.dataset.value); - }, []); - const handlePluginClick = (0, _react.useCallback)(e => { - const context = pluginContext; - const pluginIndex = Number(e.currentTarget.dataset.index); - const plugin = context.plugins.find((_, index) => pluginIndex === index); - const isVisible = plugin === context.visiblePlugin; - if (isVisible) { - context.setVisiblePlugin(null); - pluginResize.setHiddenElement('first'); - } else { - context.setVisiblePlugin(plugin); - pluginResize.setHiddenElement(null); - } - }, [pluginContext, pluginResize]); - const handleToolsTabClick = (0, _react.useCallback)(event => { - if (editorToolsResize.hiddenElement === 'second') { - editorToolsResize.setHiddenElement(null); - } - setActiveSecondaryEditor(event.currentTarget.dataset.name); - }, [editorToolsResize]); - const toggleEditorTools = (0, _react.useCallback)(() => { - editorToolsResize.setHiddenElement(editorToolsResize.hiddenElement === 'second' ? null : 'second'); - }, [editorToolsResize]); - const handleOpenShortKeysDialog = (0, _react.useCallback)(isOpen => { - if (!isOpen) { - setShowDialog(null); - } - }, []); - const handleOpenSettingsDialog = (0, _react.useCallback)(isOpen => { - if (!isOpen) { - setShowDialog(null); - setClearStorageStatus(null); - } - }, []); - const addTab = /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { - label: "Add tab" - }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { - type: "button", - className: "graphiql-tab-add", - onClick: handleAddTab, - "aria-label": "Add tab" - }, /*#__PURE__*/_react.default.createElement(_react2.PlusIcon, { - "aria-hidden": "true" - }))); - return /*#__PURE__*/_react.default.createElement(_react2.Tooltip.Provider, null, /*#__PURE__*/_react.default.createElement("div", { - "data-testid": "graphiql-container", - className: "graphiql-container" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-sidebar" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-sidebar-section" - }, pluginContext === null || pluginContext === void 0 ? void 0 : pluginContext.plugins.map((plugin, index) => { - const isVisible = plugin === pluginContext.visiblePlugin; - const label = `${isVisible ? 'Hide' : 'Show'} ${plugin.title}`; - const Icon = plugin.icon; - return /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { - key: plugin.title, - label: label - }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { - type: "button", - className: isVisible ? 'active' : '', - onClick: handlePluginClick, - "data-index": index, - "aria-label": label - }, /*#__PURE__*/_react.default.createElement(Icon, { - "aria-hidden": "true" - }))); - })), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-sidebar-section" - }, /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { - label: "Re-fetch GraphQL schema" - }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { - type: "button", - disabled: schemaContext.isFetching, - onClick: handleRefetchSchema, - "aria-label": "Re-fetch GraphQL schema" - }, /*#__PURE__*/_react.default.createElement(_react2.ReloadIcon, { - className: schemaContext.isFetching ? 'graphiql-spin' : '', - "aria-hidden": "true" - }))), /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { - label: "Open short keys dialog" - }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { - type: "button", - "data-value": "short-keys", - onClick: handleShowDialog, - "aria-label": "Open short keys dialog" - }, /*#__PURE__*/_react.default.createElement(_react2.KeyboardShortcutIcon, { - "aria-hidden": "true" - }))), /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { - label: "Open settings dialog" - }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { - type: "button", - "data-value": "settings", - onClick: handleShowDialog, - "aria-label": "Open settings dialog" - }, /*#__PURE__*/_react.default.createElement(_react2.SettingsIcon, { - "aria-hidden": "true" - }))))), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-main" - }, /*#__PURE__*/_react.default.createElement("div", { - ref: pluginResize.firstRef, - style: { - // Make sure the container shrinks when containing long - // non-breaking texts - minWidth: '200px' - } - }, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-plugin" - }, PluginContent ? /*#__PURE__*/_react.default.createElement(PluginContent, null) : null)), (pluginContext === null || pluginContext === void 0 ? void 0 : pluginContext.visiblePlugin) && /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-horizontal-drag-bar", - ref: pluginResize.dragBarRef - }), /*#__PURE__*/_react.default.createElement("div", { - ref: pluginResize.secondRef, - className: "graphiql-sessions" - }, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-session-header" - }, /*#__PURE__*/_react.default.createElement(_react2.Tabs, { - values: editorContext.tabs, - onReorder: handleReorder, - "aria-label": "Select active operation" - }, editorContext.tabs.length > 1 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, editorContext.tabs.map((tab, index) => /*#__PURE__*/_react.default.createElement(_react2.Tab, { - key: tab.id, - value: tab, - isActive: index === editorContext.activeTabIndex - }, /*#__PURE__*/_react.default.createElement(_react2.Tab.Button, { - "aria-controls": "graphiql-session", - id: `graphiql-session-tab-${index}`, - onClick: () => { - executionContext.stop(); - editorContext.changeTab(index); - } - }, tab.title), /*#__PURE__*/_react.default.createElement(_react2.Tab.Close, { - onClick: () => { - if (editorContext.activeTabIndex === index) { - executionContext.stop(); - } - editorContext.closeTab(index); - } - }))), addTab)), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-session-header-right" - }, editorContext.tabs.length === 1 && addTab, logo)), /*#__PURE__*/_react.default.createElement("div", { - role: "tabpanel", - id: "graphiql-session", - className: "graphiql-session", - "aria-labelledby": `graphiql-session-tab-${editorContext.activeTabIndex}` - }, /*#__PURE__*/_react.default.createElement("div", { - ref: editorResize.firstRef - }, /*#__PURE__*/_react.default.createElement("div", { - className: `graphiql-editors${editorContext.tabs.length === 1 ? ' full-height' : ''}` - }, /*#__PURE__*/_react.default.createElement("div", { - ref: editorToolsResize.firstRef - }, /*#__PURE__*/_react.default.createElement("section", { - className: "graphiql-query-editor", - "aria-label": "Query Editor" - }, /*#__PURE__*/_react.default.createElement(_react2.QueryEditor, { - editorTheme: props.editorTheme, - keyMap: props.keyMap, - onClickReference: onClickReference, - onCopyQuery: props.onCopyQuery, - onEdit: props.onEditQuery, - readOnly: props.readOnly - }), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-toolbar", - role: "toolbar", - "aria-label": "Editor Commands" - }, /*#__PURE__*/_react.default.createElement(_react2.ExecuteButton, null), toolbar))), /*#__PURE__*/_react.default.createElement("div", { - ref: editorToolsResize.dragBarRef - }, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-editor-tools" - }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { - type: "button", - className: activeSecondaryEditor === 'variables' && editorToolsResize.hiddenElement !== 'second' ? 'active' : '', - onClick: handleToolsTabClick, - "data-name": "variables" - }, "Variables"), isHeadersEditorEnabled && /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { - type: "button", - className: activeSecondaryEditor === 'headers' && editorToolsResize.hiddenElement !== 'second' ? 'active' : '', - onClick: handleToolsTabClick, - "data-name": "headers" - }, "Headers"), /*#__PURE__*/_react.default.createElement(_react2.Tooltip, { - label: editorToolsResize.hiddenElement === 'second' ? 'Show editor tools' : 'Hide editor tools' - }, /*#__PURE__*/_react.default.createElement(_react2.UnStyledButton, { - type: "button", - onClick: toggleEditorTools, - "aria-label": editorToolsResize.hiddenElement === 'second' ? 'Show editor tools' : 'Hide editor tools', - className: "graphiql-toggle-editor-tools" - }, editorToolsResize.hiddenElement === 'second' ? /*#__PURE__*/_react.default.createElement(_react2.ChevronUpIcon, { - className: "graphiql-chevron-icon", - "aria-hidden": "true" - }) : /*#__PURE__*/_react.default.createElement(_react2.ChevronDownIcon, { - className: "graphiql-chevron-icon", - "aria-hidden": "true" - }))))), /*#__PURE__*/_react.default.createElement("div", { - ref: editorToolsResize.secondRef - }, /*#__PURE__*/_react.default.createElement("section", { - className: "graphiql-editor-tool", - "aria-label": activeSecondaryEditor === 'variables' ? 'Variables' : 'Headers' - }, /*#__PURE__*/_react.default.createElement(_react2.VariableEditor, { - editorTheme: props.editorTheme, - isHidden: activeSecondaryEditor !== 'variables', - keyMap: props.keyMap, - onEdit: props.onEditVariables, - onClickReference: onClickReference, - readOnly: props.readOnly - }), isHeadersEditorEnabled && /*#__PURE__*/_react.default.createElement(_react2.HeaderEditor, { - editorTheme: props.editorTheme, - isHidden: activeSecondaryEditor !== 'headers', - keyMap: props.keyMap, - onEdit: props.onEditHeaders, - readOnly: props.readOnly - }))))), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-horizontal-drag-bar", - ref: editorResize.dragBarRef - }), /*#__PURE__*/_react.default.createElement("div", { - ref: editorResize.secondRef - }, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-response" - }, executionContext.isFetching ? /*#__PURE__*/_react.default.createElement(_react2.Spinner, null) : null, /*#__PURE__*/_react.default.createElement(_react2.ResponseEditor, { - editorTheme: props.editorTheme, - responseTooltip: props.responseTooltip, - keyMap: props.keyMap - }), footer))))), /*#__PURE__*/_react.default.createElement(_react2.Dialog, { - open: showDialog === 'short-keys', - onOpenChange: handleOpenShortKeysDialog - }, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-header" - }, /*#__PURE__*/_react.default.createElement(_react2.Dialog.Title, { - className: "graphiql-dialog-title" - }, "Short Keys"), /*#__PURE__*/_react.default.createElement(_react2.Dialog.Close, null)), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section" - }, /*#__PURE__*/_react.default.createElement(ShortKeys, { - keyMap: props.keyMap || 'sublime' - }))), /*#__PURE__*/_react.default.createElement(_react2.Dialog, { - open: showDialog === 'settings', - onOpenChange: handleOpenSettingsDialog - }, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-header" - }, /*#__PURE__*/_react.default.createElement(_react2.Dialog.Title, { - className: "graphiql-dialog-title" - }, "Settings"), /*#__PURE__*/_react.default.createElement(_react2.Dialog.Close, null)), props.showPersistHeadersSettings ? /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section" - }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section-title" - }, "Persist headers"), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section-caption" - }, "Save headers upon reloading.", ' ', /*#__PURE__*/_react.default.createElement("span", { - className: "graphiql-warning-text" - }, "Only enable if you trust this device."))), /*#__PURE__*/_react.default.createElement(_react2.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_react2.Button, { - type: "button", - id: "enable-persist-headers", - className: editorContext.shouldPersistHeaders ? 'active' : '', - "data-value": "true", - onClick: handlePersistHeaders - }, "On"), /*#__PURE__*/_react.default.createElement(_react2.Button, { - type: "button", - id: "disable-persist-headers", - className: editorContext.shouldPersistHeaders ? '' : 'active', - onClick: handlePersistHeaders - }, "Off"))) : null, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section" - }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section-title" - }, "Theme"), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section-caption" - }, "Adjust how the interface looks like.")), /*#__PURE__*/_react.default.createElement(_react2.ButtonGroup, null, /*#__PURE__*/_react.default.createElement(_react2.Button, { - type: "button", - className: theme === null ? 'active' : '', - onClick: handleChangeTheme - }, "System"), /*#__PURE__*/_react.default.createElement(_react2.Button, { - type: "button", - className: theme === 'light' ? 'active' : '', - "data-theme": "light", - onClick: handleChangeTheme - }, "Light"), /*#__PURE__*/_react.default.createElement(_react2.Button, { - type: "button", - className: theme === 'dark' ? 'active' : '', - "data-theme": "dark", - onClick: handleChangeTheme - }, "Dark"))), storageContext ? /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section" - }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section-title" - }, "Clear storage"), /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-dialog-section-caption" - }, "Remove all locally stored data and start fresh.")), /*#__PURE__*/_react.default.createElement(_react2.Button, { - type: "button", - state: clearStorageStatus || undefined, - disabled: clearStorageStatus === 'success', - onClick: handleClearData - }, { - success: 'Cleared data', - error: 'Failed' - }[clearStorageStatus] || 'Clear data')) : null))); -} -const modifier = typeof window !== 'undefined' && window.navigator.platform.toLowerCase().indexOf('mac') === 0 ? 'Cmd' : 'Ctrl'; -const SHORT_KEYS = Object.entries({ - 'Search in editor': [modifier, 'F'], - 'Search in documentation': [modifier, 'K'], - 'Execute query': [modifier, 'Enter'], - 'Prettify editors': ['Ctrl', 'Shift', 'P'], - 'Merge fragments definitions into operation definition': ['Ctrl', 'Shift', 'M'], - 'Copy query': ['Ctrl', 'Shift', 'C'], - 'Re-fetch schema using introspection': ['Ctrl', 'Shift', 'R'] -}); -function ShortKeys(_ref2) { - let { - keyMap - } = _ref2; - return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("table", { - className: "graphiql-table" - }, /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("th", null, "Short Key"), /*#__PURE__*/_react.default.createElement("th", null, "Function"))), /*#__PURE__*/_react.default.createElement("tbody", null, SHORT_KEYS.map(_ref3 => { - let [title, keys] = _ref3; - return /*#__PURE__*/_react.default.createElement("tr", { - key: title - }, /*#__PURE__*/_react.default.createElement("td", null, keys.map((key, index, array) => /*#__PURE__*/_react.default.createElement(_react.Fragment, { - key: key - }, /*#__PURE__*/_react.default.createElement("code", { - className: "graphiql-key" - }, key), index !== array.length - 1 && ' + '))), /*#__PURE__*/_react.default.createElement("td", null, title)); - }))), /*#__PURE__*/_react.default.createElement("p", null, "The editors use", ' ', /*#__PURE__*/_react.default.createElement("a", { - href: "https://codemirror.net/5/doc/manual.html#keymaps", - target: "_blank", - rel: "noopener noreferrer" - }, "CodeMirror Key Maps"), ' ', "that add more short keys. This instance of Graph", /*#__PURE__*/_react.default.createElement("em", null, "i"), "QL uses", ' ', /*#__PURE__*/_react.default.createElement("code", null, keyMap), ".")); -} - -// Configure the UI by providing this Component as a child of GraphiQL. -function GraphiQLLogo(props) { - return /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-logo" - }, props.children || /*#__PURE__*/_react.default.createElement("a", { - className: "graphiql-logo-link", - href: "https://github.com/graphql/graphiql", - target: "_blank", - rel: "noreferrer" - }, "Graph", /*#__PURE__*/_react.default.createElement("em", null, "i"), "QL")); -} -GraphiQLLogo.displayName = 'GraphiQLLogo'; - -// Configure the UI by providing this Component as a child of GraphiQL. -function GraphiQLToolbar(props) { - // eslint-disable-next-line react/jsx-no-useless-fragment - return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.children); -} -GraphiQLToolbar.displayName = 'GraphiQLToolbar'; - -// Configure the UI by providing this Component as a child of GraphiQL. -function GraphiQLFooter(props) { - return /*#__PURE__*/_react.default.createElement("div", { - className: "graphiql-footer" - }, props.children); -} -GraphiQLFooter.displayName = 'GraphiQLFooter'; - -// Determines if the React child is of the same type of the provided React component -function isChildComponentType(child, component) { - var _child$type; - if (child !== null && child !== void 0 && (_child$type = child.type) !== null && _child$type !== void 0 && _child$type.displayName && child.type.displayName === component.displayName) { - return true; - } - return child.type === component; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/index.js": -/*!***************************************************!*\ - !*** ../../graphql-language-service/esm/index.js ***! - \***************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "CharacterStream", ({ - enumerable: true, - get: function () { - return _parser.CharacterStream; - } -})); -Object.defineProperty(exports, "CompletionItemKind", ({ - enumerable: true, - get: function () { - return _types.CompletionItemKind; - } -})); -Object.defineProperty(exports, "DIAGNOSTIC_SEVERITY", ({ - enumerable: true, - get: function () { - return _interface.DIAGNOSTIC_SEVERITY; - } -})); -Object.defineProperty(exports, "FileChangeTypeKind", ({ - enumerable: true, - get: function () { - return _types.FileChangeTypeKind; - } -})); -Object.defineProperty(exports, "LexRules", ({ - enumerable: true, - get: function () { - return _parser.LexRules; - } -})); -Object.defineProperty(exports, "ParseRules", ({ - enumerable: true, - get: function () { - return _parser.ParseRules; - } -})); -Object.defineProperty(exports, "Position", ({ - enumerable: true, - get: function () { - return _utils.Position; - } -})); -Object.defineProperty(exports, "Range", ({ - enumerable: true, - get: function () { - return _utils.Range; - } -})); -Object.defineProperty(exports, "RuleKinds", ({ - enumerable: true, - get: function () { - return _parser.RuleKinds; - } -})); -Object.defineProperty(exports, "SEVERITY", ({ - enumerable: true, - get: function () { - return _interface.SEVERITY; - } -})); -Object.defineProperty(exports, "SuggestionCommand", ({ - enumerable: true, - get: function () { - return _interface.SuggestionCommand; - } -})); -Object.defineProperty(exports, "canUseDirective", ({ - enumerable: true, - get: function () { - return _interface.canUseDirective; - } -})); -Object.defineProperty(exports, "collectVariables", ({ - enumerable: true, - get: function () { - return _utils.collectVariables; - } -})); -Object.defineProperty(exports, "getASTNodeAtPosition", ({ - enumerable: true, - get: function () { - return _utils.getASTNodeAtPosition; - } -})); -Object.defineProperty(exports, "getAutocompleteSuggestions", ({ - enumerable: true, - get: function () { - return _interface.getAutocompleteSuggestions; - } -})); -Object.defineProperty(exports, "getDefinitionQueryResultForDefinitionNode", ({ - enumerable: true, - get: function () { - return _interface.getDefinitionQueryResultForDefinitionNode; - } -})); -Object.defineProperty(exports, "getDefinitionQueryResultForField", ({ - enumerable: true, - get: function () { - return _interface.getDefinitionQueryResultForField; - } -})); -Object.defineProperty(exports, "getDefinitionQueryResultForFragmentSpread", ({ - enumerable: true, - get: function () { - return _interface.getDefinitionQueryResultForFragmentSpread; - } -})); -Object.defineProperty(exports, "getDefinitionQueryResultForNamedType", ({ - enumerable: true, - get: function () { - return _interface.getDefinitionQueryResultForNamedType; - } -})); -Object.defineProperty(exports, "getDefinitionState", ({ - enumerable: true, - get: function () { - return _interface.getDefinitionState; - } -})); -Object.defineProperty(exports, "getDiagnostics", ({ - enumerable: true, - get: function () { - return _interface.getDiagnostics; - } -})); -Object.defineProperty(exports, "getFieldDef", ({ - enumerable: true, - get: function () { - return _interface.getFieldDef; - } -})); -Object.defineProperty(exports, "getFragmentDefinitions", ({ - enumerable: true, - get: function () { - return _interface.getFragmentDefinitions; - } -})); -Object.defineProperty(exports, "getFragmentDependencies", ({ - enumerable: true, - get: function () { - return _utils.getFragmentDependencies; - } -})); -Object.defineProperty(exports, "getFragmentDependenciesForAST", ({ - enumerable: true, - get: function () { - return _utils.getFragmentDependenciesForAST; - } -})); -Object.defineProperty(exports, "getHoverInformation", ({ - enumerable: true, - get: function () { - return _interface.getHoverInformation; - } -})); -Object.defineProperty(exports, "getOperationASTFacts", ({ - enumerable: true, - get: function () { - return _utils.getOperationASTFacts; - } -})); -Object.defineProperty(exports, "getOperationFacts", ({ - enumerable: true, - get: function () { - return _utils.getOperationFacts; - } -})); -Object.defineProperty(exports, "getOutline", ({ - enumerable: true, - get: function () { - return _interface.getOutline; - } -})); -Object.defineProperty(exports, "getQueryFacts", ({ - enumerable: true, - get: function () { - return _utils.getQueryFacts; - } -})); -Object.defineProperty(exports, "getRange", ({ - enumerable: true, - get: function () { - return _interface.getRange; - } -})); -Object.defineProperty(exports, "getTokenAtPosition", ({ - enumerable: true, - get: function () { - return _interface.getTokenAtPosition; - } -})); -Object.defineProperty(exports, "getTypeInfo", ({ - enumerable: true, - get: function () { - return _interface.getTypeInfo; - } -})); -Object.defineProperty(exports, "getVariableCompletions", ({ - enumerable: true, - get: function () { - return _interface.getVariableCompletions; - } -})); -Object.defineProperty(exports, "getVariablesJSONSchema", ({ - enumerable: true, - get: function () { - return _utils.getVariablesJSONSchema; - } -})); -Object.defineProperty(exports, "isIgnored", ({ - enumerable: true, - get: function () { - return _parser.isIgnored; - } -})); -Object.defineProperty(exports, "list", ({ - enumerable: true, - get: function () { - return _parser.list; - } -})); -Object.defineProperty(exports, "offsetToPosition", ({ - enumerable: true, - get: function () { - return _utils.offsetToPosition; - } -})); -Object.defineProperty(exports, "onlineParser", ({ - enumerable: true, - get: function () { - return _parser.onlineParser; - } -})); -Object.defineProperty(exports, "opt", ({ - enumerable: true, - get: function () { - return _parser.opt; - } -})); -Object.defineProperty(exports, "p", ({ - enumerable: true, - get: function () { - return _parser.p; - } -})); -Object.defineProperty(exports, "pointToOffset", ({ - enumerable: true, - get: function () { - return _utils.pointToOffset; - } -})); -Object.defineProperty(exports, "t", ({ - enumerable: true, - get: function () { - return _parser.t; - } -})); -Object.defineProperty(exports, "validateQuery", ({ - enumerable: true, - get: function () { - return _interface.validateQuery; - } -})); -Object.defineProperty(exports, "validateWithCustomRules", ({ - enumerable: true, - get: function () { - return _utils.validateWithCustomRules; - } -})); -var _interface = __webpack_require__(/*! ./interface */ "../../graphql-language-service/esm/interface/index.js"); -var _parser = __webpack_require__(/*! ./parser */ "../../graphql-language-service/esm/parser/index.js"); -var _types = __webpack_require__(/*! ./types */ "../../graphql-language-service/esm/types.js"); -var _utils = __webpack_require__(/*! ./utils */ "../../graphql-language-service/esm/utils/index.js"); - -/***/ }), - -/***/ "../../graphql-language-service/esm/interface/autocompleteUtils.js": -/*!*************************************************************************!*\ - !*** ../../graphql-language-service/esm/interface/autocompleteUtils.js ***! - \*************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.forEachState = forEachState; -exports.getDefinitionState = getDefinitionState; -exports.getFieldDef = getFieldDef; -exports.hintList = hintList; -exports.objectValues = objectValues; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -function getDefinitionState(tokenState) { - let definitionState; - forEachState(tokenState, state => { - switch (state.kind) { - case 'Query': - case 'ShortQuery': - case 'Mutation': - case 'Subscription': - case 'FragmentDefinition': - definitionState = state; - break; - } - }); - return definitionState; -} -function getFieldDef(schema, type, fieldName) { - if (fieldName === _graphql.SchemaMetaFieldDef.name && schema.getQueryType() === type) { - return _graphql.SchemaMetaFieldDef; - } - if (fieldName === _graphql.TypeMetaFieldDef.name && schema.getQueryType() === type) { - return _graphql.TypeMetaFieldDef; - } - if (fieldName === _graphql.TypeNameMetaFieldDef.name && (0, _graphql.isCompositeType)(type)) { - return _graphql.TypeNameMetaFieldDef; - } - if ('getFields' in type) { - return type.getFields()[fieldName]; - } - return null; -} -function forEachState(stack, fn) { - const reverseStateStack = []; - let state = stack; - while (state === null || state === void 0 ? void 0 : state.kind) { - reverseStateStack.push(state); - state = state.prevState; - } - for (let i = reverseStateStack.length - 1; i >= 0; i--) { - fn(reverseStateStack[i]); - } -} -function objectValues(object) { - const keys = Object.keys(object); - const len = keys.length; - const values = new Array(len); - for (let i = 0; i < len; ++i) { - values[i] = object[keys[i]]; - } - return values; -} -function hintList(token, list) { - return filterAndSortList(list, normalizeText(token.string)); -} -function filterAndSortList(list, text) { - if (!text) { - return filterNonEmpty(list, entry => !entry.isDeprecated); - } - const byProximity = list.map(entry => ({ - proximity: getProximity(normalizeText(entry.label), text), - entry - })); - return filterNonEmpty(filterNonEmpty(byProximity, pair => pair.proximity <= 2), pair => !pair.entry.isDeprecated).sort((a, b) => (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) || a.proximity - b.proximity || a.entry.label.length - b.entry.label.length).map(pair => pair.entry); -} -function filterNonEmpty(array, predicate) { - const filtered = array.filter(predicate); - return filtered.length === 0 ? array : filtered; -} -function normalizeText(text) { - return text.toLowerCase().replaceAll(/\W/g, ''); -} -function getProximity(suggestion, text) { - let proximity = lexicalDistance(text, suggestion); - if (suggestion.length > text.length) { - proximity -= suggestion.length - text.length - 1; - proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5; - } - return proximity; -} -function lexicalDistance(a, b) { - let i; - let j; - const d = []; - const aLength = a.length; - const bLength = b.length; - for (i = 0; i <= aLength; i++) { - d[i] = [i]; - } - for (j = 1; j <= bLength; j++) { - d[0][j] = j; - } - for (i = 1; i <= aLength; i++) { - for (j = 1; j <= bLength; j++) { - const cost = a[i - 1] === b[j - 1] ? 0 : 1; - d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost); - if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) { - d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost); - } - } - } - return d[aLength][bLength]; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js": -/*!**********************************************************************************!*\ - !*** ../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js ***! - \**********************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SuggestionCommand = exports.GraphQLDocumentMode = void 0; -exports.canUseDirective = canUseDirective; -exports.getAutocompleteSuggestions = getAutocompleteSuggestions; -exports.getFragmentDefinitions = getFragmentDefinitions; -exports.getTokenAtPosition = getTokenAtPosition; -exports.getTypeInfo = getTypeInfo; -exports.getVariableCompletions = getVariableCompletions; -exports.runOnlineParser = runOnlineParser; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -var _types = __webpack_require__(/*! ../types */ "../../graphql-language-service/esm/types.js"); -var _parser = __webpack_require__(/*! ../parser */ "../../graphql-language-service/esm/parser/index.js"); -var _autocompleteUtils = __webpack_require__(/*! ./autocompleteUtils */ "../../graphql-language-service/esm/interface/autocompleteUtils.js"); -const SuggestionCommand = { - command: 'editor.action.triggerSuggest', - title: 'Suggestions' -}; -exports.SuggestionCommand = SuggestionCommand; -const collectFragmentDefs = op => { - const externalFragments = []; - if (op) { - try { - (0, _graphql.visit)((0, _graphql.parse)(op), { - FragmentDefinition(def) { - externalFragments.push(def); - } - }); - } catch (_a) { - return []; - } - } - return externalFragments; -}; -const typeSystemKinds = [_graphql.Kind.SCHEMA_DEFINITION, _graphql.Kind.OPERATION_TYPE_DEFINITION, _graphql.Kind.SCALAR_TYPE_DEFINITION, _graphql.Kind.OBJECT_TYPE_DEFINITION, _graphql.Kind.INTERFACE_TYPE_DEFINITION, _graphql.Kind.UNION_TYPE_DEFINITION, _graphql.Kind.ENUM_TYPE_DEFINITION, _graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION, _graphql.Kind.DIRECTIVE_DEFINITION, _graphql.Kind.SCHEMA_EXTENSION, _graphql.Kind.SCALAR_TYPE_EXTENSION, _graphql.Kind.OBJECT_TYPE_EXTENSION, _graphql.Kind.INTERFACE_TYPE_EXTENSION, _graphql.Kind.UNION_TYPE_EXTENSION, _graphql.Kind.ENUM_TYPE_EXTENSION, _graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION]; -const hasTypeSystemDefinitions = sdl => { - let hasTypeSystemDef = false; - if (sdl) { - try { - (0, _graphql.visit)((0, _graphql.parse)(sdl), { - enter(node) { - if (node.kind === 'Document') { - return; - } - if (typeSystemKinds.includes(node.kind)) { - hasTypeSystemDef = true; - return _graphql.BREAK; - } - return false; - } - }); - } catch (_a) { - return hasTypeSystemDef; - } - } - return hasTypeSystemDef; -}; -function getAutocompleteSuggestions(schema, queryText, cursor, contextToken, fragmentDefs, options) { - var _a; - const opts = Object.assign(Object.assign({}, options), { - schema - }); - const token = contextToken || getTokenAtPosition(queryText, cursor, 1); - const state = token.state.kind === 'Invalid' ? token.state.prevState : token.state; - const mode = (options === null || options === void 0 ? void 0 : options.mode) || getDocumentMode(queryText, options === null || options === void 0 ? void 0 : options.uri); - if (!state) { - return []; - } - const { - kind, - step, - prevState - } = state; - const typeInfo = getTypeInfo(schema, token.state); - if (kind === _parser.RuleKinds.DOCUMENT) { - if (mode === GraphQLDocumentMode.TYPE_SYSTEM) { - return getSuggestionsForTypeSystemDefinitions(token); - } - return getSuggestionsForExecutableDefinitions(token); - } - if (kind === _parser.RuleKinds.EXTEND_DEF) { - return getSuggestionsForExtensionDefinitions(token); - } - if (((_a = prevState === null || prevState === void 0 ? void 0 : prevState.prevState) === null || _a === void 0 ? void 0 : _a.kind) === _parser.RuleKinds.EXTENSION_DEFINITION && state.name) { - return (0, _autocompleteUtils.hintList)(token, []); - } - if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.SCALAR_TYPE_EXTENSION) { - return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(_graphql.isScalarType).map(type => ({ - label: type.name, - kind: _types.CompletionItemKind.Function - }))); - } - if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.OBJECT_TYPE_EXTENSION) { - return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(type => (0, _graphql.isObjectType)(type) && !type.name.startsWith('__')).map(type => ({ - label: type.name, - kind: _types.CompletionItemKind.Function - }))); - } - if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.INTERFACE_TYPE_EXTENSION) { - return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(_graphql.isInterfaceType).map(type => ({ - label: type.name, - kind: _types.CompletionItemKind.Function - }))); - } - if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.UNION_TYPE_EXTENSION) { - return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(_graphql.isUnionType).map(type => ({ - label: type.name, - kind: _types.CompletionItemKind.Function - }))); - } - if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.ENUM_TYPE_EXTENSION) { - return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(type => (0, _graphql.isEnumType)(type) && !type.name.startsWith('__')).map(type => ({ - label: type.name, - kind: _types.CompletionItemKind.Function - }))); - } - if ((prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION) { - return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(_graphql.isInputObjectType).map(type => ({ - label: type.name, - kind: _types.CompletionItemKind.Function - }))); - } - if (kind === _parser.RuleKinds.IMPLEMENTS || kind === _parser.RuleKinds.NAMED_TYPE && (prevState === null || prevState === void 0 ? void 0 : prevState.kind) === _parser.RuleKinds.IMPLEMENTS) { - return getSuggestionsForImplements(token, state, schema, queryText, typeInfo); - } - if (kind === _parser.RuleKinds.SELECTION_SET || kind === _parser.RuleKinds.FIELD || kind === _parser.RuleKinds.ALIASED_FIELD) { - return getSuggestionsForFieldNames(token, typeInfo, opts); - } - if (kind === _parser.RuleKinds.ARGUMENTS || kind === _parser.RuleKinds.ARGUMENT && step === 0) { - const { - argDefs - } = typeInfo; - if (argDefs) { - return (0, _autocompleteUtils.hintList)(token, argDefs.map(argDef => { - var _a; - return { - label: argDef.name, - insertText: argDef.name + ': ', - command: SuggestionCommand, - detail: String(argDef.type), - documentation: (_a = argDef.description) !== null && _a !== void 0 ? _a : undefined, - kind: _types.CompletionItemKind.Variable, - type: argDef.type - }; - })); - } - } - if ((kind === _parser.RuleKinds.OBJECT_VALUE || kind === _parser.RuleKinds.OBJECT_FIELD && step === 0) && typeInfo.objectFieldDefs) { - const objectFields = (0, _autocompleteUtils.objectValues)(typeInfo.objectFieldDefs); - const completionKind = kind === _parser.RuleKinds.OBJECT_VALUE ? _types.CompletionItemKind.Value : _types.CompletionItemKind.Field; - return (0, _autocompleteUtils.hintList)(token, objectFields.map(field => { - var _a; - return { - label: field.name, - detail: String(field.type), - documentation: (_a = field.description) !== null && _a !== void 0 ? _a : undefined, - kind: completionKind, - type: field.type - }; - })); - } - if (kind === _parser.RuleKinds.ENUM_VALUE || kind === _parser.RuleKinds.LIST_VALUE && step === 1 || kind === _parser.RuleKinds.OBJECT_FIELD && step === 2 || kind === _parser.RuleKinds.ARGUMENT && step === 2) { - return getSuggestionsForInputValues(token, typeInfo, queryText, schema); - } - if (kind === _parser.RuleKinds.VARIABLE && step === 1) { - const namedInputType = (0, _graphql.getNamedType)(typeInfo.inputType); - const variableDefinitions = getVariableCompletions(queryText, schema, token); - return (0, _autocompleteUtils.hintList)(token, variableDefinitions.filter(v => v.detail === (namedInputType === null || namedInputType === void 0 ? void 0 : namedInputType.name))); - } - if (kind === _parser.RuleKinds.TYPE_CONDITION && step === 1 || kind === _parser.RuleKinds.NAMED_TYPE && prevState != null && prevState.kind === _parser.RuleKinds.TYPE_CONDITION) { - return getSuggestionsForFragmentTypeConditions(token, typeInfo, schema, kind); - } - if (kind === _parser.RuleKinds.FRAGMENT_SPREAD && step === 1) { - return getSuggestionsForFragmentSpread(token, typeInfo, schema, queryText, Array.isArray(fragmentDefs) ? fragmentDefs : collectFragmentDefs(fragmentDefs)); - } - const unwrappedState = unwrapType(state); - if (mode === GraphQLDocumentMode.TYPE_SYSTEM && !unwrappedState.needsAdvance && kind === _parser.RuleKinds.NAMED_TYPE || kind === _parser.RuleKinds.LIST_TYPE) { - if (unwrappedState.kind === _parser.RuleKinds.FIELD_DEF) { - return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(type => (0, _graphql.isOutputType)(type) && !type.name.startsWith('__')).map(type => ({ - label: type.name, - kind: _types.CompletionItemKind.Function - }))); - } - if (unwrappedState.kind === _parser.RuleKinds.INPUT_VALUE_DEF) { - return (0, _autocompleteUtils.hintList)(token, Object.values(schema.getTypeMap()).filter(type => (0, _graphql.isInputType)(type) && !type.name.startsWith('__')).map(type => ({ - label: type.name, - kind: _types.CompletionItemKind.Function - }))); - } - } - if (kind === _parser.RuleKinds.VARIABLE_DEFINITION && step === 2 || kind === _parser.RuleKinds.LIST_TYPE && step === 1 || kind === _parser.RuleKinds.NAMED_TYPE && prevState && (prevState.kind === _parser.RuleKinds.VARIABLE_DEFINITION || prevState.kind === _parser.RuleKinds.LIST_TYPE || prevState.kind === _parser.RuleKinds.NON_NULL_TYPE)) { - return getSuggestionsForVariableDefinition(token, schema, kind); - } - if (kind === _parser.RuleKinds.DIRECTIVE) { - return getSuggestionsForDirective(token, state, schema, kind); - } - return []; -} -const insertSuffix = ' {\n $1\n}'; -const getInsertText = field => { - const { - type - } = field; - if ((0, _graphql.isCompositeType)(type)) { - return insertSuffix; - } - if ((0, _graphql.isListType)(type) && (0, _graphql.isCompositeType)(type.ofType)) { - return insertSuffix; - } - if ((0, _graphql.isNonNullType)(type)) { - if ((0, _graphql.isCompositeType)(type.ofType)) { - return insertSuffix; - } - if ((0, _graphql.isListType)(type.ofType) && (0, _graphql.isCompositeType)(type.ofType.ofType)) { - return insertSuffix; - } - } - return null; -}; -function getSuggestionsForTypeSystemDefinitions(token) { - return (0, _autocompleteUtils.hintList)(token, [{ - label: 'extend', - kind: _types.CompletionItemKind.Function - }, { - label: 'type', - kind: _types.CompletionItemKind.Function - }, { - label: 'interface', - kind: _types.CompletionItemKind.Function - }, { - label: 'union', - kind: _types.CompletionItemKind.Function - }, { - label: 'input', - kind: _types.CompletionItemKind.Function - }, { - label: 'scalar', - kind: _types.CompletionItemKind.Function - }, { - label: 'schema', - kind: _types.CompletionItemKind.Function - }]); -} -function getSuggestionsForExecutableDefinitions(token) { - return (0, _autocompleteUtils.hintList)(token, [{ - label: 'query', - kind: _types.CompletionItemKind.Function - }, { - label: 'mutation', - kind: _types.CompletionItemKind.Function - }, { - label: 'subscription', - kind: _types.CompletionItemKind.Function - }, { - label: 'fragment', - kind: _types.CompletionItemKind.Function - }, { - label: '{', - kind: _types.CompletionItemKind.Constructor - }]); -} -function getSuggestionsForExtensionDefinitions(token) { - return (0, _autocompleteUtils.hintList)(token, [{ - label: 'type', - kind: _types.CompletionItemKind.Function - }, { - label: 'interface', - kind: _types.CompletionItemKind.Function - }, { - label: 'union', - kind: _types.CompletionItemKind.Function - }, { - label: 'input', - kind: _types.CompletionItemKind.Function - }, { - label: 'scalar', - kind: _types.CompletionItemKind.Function - }, { - label: 'schema', - kind: _types.CompletionItemKind.Function - }]); -} -function getSuggestionsForFieldNames(token, typeInfo, options) { - var _a; - if (typeInfo.parentType) { - const { - parentType - } = typeInfo; - let fields = []; - if ('getFields' in parentType) { - fields = (0, _autocompleteUtils.objectValues)(parentType.getFields()); - } - if ((0, _graphql.isCompositeType)(parentType)) { - fields.push(_graphql.TypeNameMetaFieldDef); - } - if (parentType === ((_a = options === null || options === void 0 ? void 0 : options.schema) === null || _a === void 0 ? void 0 : _a.getQueryType())) { - fields.push(_graphql.SchemaMetaFieldDef, _graphql.TypeMetaFieldDef); - } - return (0, _autocompleteUtils.hintList)(token, fields.map((field, index) => { - var _a; - const suggestion = { - sortText: String(index) + field.name, - label: field.name, - detail: String(field.type), - documentation: (_a = field.description) !== null && _a !== void 0 ? _a : undefined, - deprecated: Boolean(field.deprecationReason), - isDeprecated: Boolean(field.deprecationReason), - deprecationReason: field.deprecationReason, - kind: _types.CompletionItemKind.Field, - type: field.type - }; - if (options === null || options === void 0 ? void 0 : options.fillLeafsOnComplete) { - const insertText = getInsertText(field); - if (insertText) { - suggestion.insertText = field.name + insertText; - suggestion.insertTextFormat = _types.InsertTextFormat.Snippet; - suggestion.command = SuggestionCommand; - } - } - return suggestion; - })); - } - return []; -} -function getSuggestionsForInputValues(token, typeInfo, queryText, schema) { - const namedInputType = (0, _graphql.getNamedType)(typeInfo.inputType); - const queryVariables = getVariableCompletions(queryText, schema, token).filter(v => v.detail === namedInputType.name); - if (namedInputType instanceof _graphql.GraphQLEnumType) { - const values = namedInputType.getValues(); - return (0, _autocompleteUtils.hintList)(token, values.map(value => { - var _a; - return { - label: value.name, - detail: String(namedInputType), - documentation: (_a = value.description) !== null && _a !== void 0 ? _a : undefined, - deprecated: Boolean(value.deprecationReason), - isDeprecated: Boolean(value.deprecationReason), - deprecationReason: value.deprecationReason, - kind: _types.CompletionItemKind.EnumMember, - type: namedInputType - }; - }).concat(queryVariables)); - } - if (namedInputType === _graphql.GraphQLBoolean) { - return (0, _autocompleteUtils.hintList)(token, queryVariables.concat([{ - label: 'true', - detail: String(_graphql.GraphQLBoolean), - documentation: 'Not false.', - kind: _types.CompletionItemKind.Variable, - type: _graphql.GraphQLBoolean - }, { - label: 'false', - detail: String(_graphql.GraphQLBoolean), - documentation: 'Not true.', - kind: _types.CompletionItemKind.Variable, - type: _graphql.GraphQLBoolean - }])); - } - return queryVariables; -} -function getSuggestionsForImplements(token, tokenState, schema, documentText, typeInfo) { - if (tokenState.needsSeparator) { - return []; - } - const typeMap = schema.getTypeMap(); - const schemaInterfaces = (0, _autocompleteUtils.objectValues)(typeMap).filter(_graphql.isInterfaceType); - const schemaInterfaceNames = schemaInterfaces.map(_ref => { - let { - name - } = _ref; - return name; - }); - const inlineInterfaces = new Set(); - runOnlineParser(documentText, (_, state) => { - var _a, _b, _c, _d, _e; - if (state.name) { - if (state.kind === _parser.RuleKinds.INTERFACE_DEF && !schemaInterfaceNames.includes(state.name)) { - inlineInterfaces.add(state.name); - } - if (state.kind === _parser.RuleKinds.NAMED_TYPE && ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === _parser.RuleKinds.IMPLEMENTS) { - if (typeInfo.interfaceDef) { - const existingType = (_b = typeInfo.interfaceDef) === null || _b === void 0 ? void 0 : _b.getInterfaces().find(_ref2 => { - let { - name - } = _ref2; - return name === state.name; - }); - if (existingType) { - return; - } - const type = schema.getType(state.name); - const interfaceConfig = (_c = typeInfo.interfaceDef) === null || _c === void 0 ? void 0 : _c.toConfig(); - typeInfo.interfaceDef = new _graphql.GraphQLInterfaceType(Object.assign(Object.assign({}, interfaceConfig), { - interfaces: [...interfaceConfig.interfaces, type || new _graphql.GraphQLInterfaceType({ - name: state.name, - fields: {} - })] - })); - } else if (typeInfo.objectTypeDef) { - const existingType = (_d = typeInfo.objectTypeDef) === null || _d === void 0 ? void 0 : _d.getInterfaces().find(_ref3 => { - let { - name - } = _ref3; - return name === state.name; - }); - if (existingType) { - return; - } - const type = schema.getType(state.name); - const objectTypeConfig = (_e = typeInfo.objectTypeDef) === null || _e === void 0 ? void 0 : _e.toConfig(); - typeInfo.objectTypeDef = new _graphql.GraphQLObjectType(Object.assign(Object.assign({}, objectTypeConfig), { - interfaces: [...objectTypeConfig.interfaces, type || new _graphql.GraphQLInterfaceType({ - name: state.name, - fields: {} - })] - })); - } - } - } - }); - const currentTypeToExtend = typeInfo.interfaceDef || typeInfo.objectTypeDef; - const siblingInterfaces = (currentTypeToExtend === null || currentTypeToExtend === void 0 ? void 0 : currentTypeToExtend.getInterfaces()) || []; - const siblingInterfaceNames = siblingInterfaces.map(_ref4 => { - let { - name - } = _ref4; - return name; - }); - const possibleInterfaces = schemaInterfaces.concat([...inlineInterfaces].map(name => ({ - name - }))).filter(_ref5 => { - let { - name - } = _ref5; - return name !== (currentTypeToExtend === null || currentTypeToExtend === void 0 ? void 0 : currentTypeToExtend.name) && !siblingInterfaceNames.includes(name); - }); - return (0, _autocompleteUtils.hintList)(token, possibleInterfaces.map(type => { - const result = { - label: type.name, - kind: _types.CompletionItemKind.Interface, - type - }; - if (type === null || type === void 0 ? void 0 : type.description) { - result.documentation = type.description; - } - return result; - })); -} -function getSuggestionsForFragmentTypeConditions(token, typeInfo, schema, _kind) { - let possibleTypes; - if (typeInfo.parentType) { - if ((0, _graphql.isAbstractType)(typeInfo.parentType)) { - const abstractType = (0, _graphql.assertAbstractType)(typeInfo.parentType); - const possibleObjTypes = schema.getPossibleTypes(abstractType); - const possibleIfaceMap = Object.create(null); - for (const type of possibleObjTypes) { - for (const iface of type.getInterfaces()) { - possibleIfaceMap[iface.name] = iface; - } - } - possibleTypes = possibleObjTypes.concat((0, _autocompleteUtils.objectValues)(possibleIfaceMap)); - } else { - possibleTypes = [typeInfo.parentType]; - } - } else { - const typeMap = schema.getTypeMap(); - possibleTypes = (0, _autocompleteUtils.objectValues)(typeMap).filter(type => (0, _graphql.isCompositeType)(type) && !type.name.startsWith('__')); - } - return (0, _autocompleteUtils.hintList)(token, possibleTypes.map(type => { - const namedType = (0, _graphql.getNamedType)(type); - return { - label: String(type), - documentation: (namedType === null || namedType === void 0 ? void 0 : namedType.description) || '', - kind: _types.CompletionItemKind.Field - }; - })); -} -function getSuggestionsForFragmentSpread(token, typeInfo, schema, queryText, fragmentDefs) { - if (!queryText) { - return []; - } - const typeMap = schema.getTypeMap(); - const defState = (0, _autocompleteUtils.getDefinitionState)(token.state); - const fragments = getFragmentDefinitions(queryText); - if (fragmentDefs && fragmentDefs.length > 0) { - fragments.push(...fragmentDefs); - } - const relevantFrags = fragments.filter(frag => typeMap[frag.typeCondition.name.value] && !(defState && defState.kind === _parser.RuleKinds.FRAGMENT_DEFINITION && defState.name === frag.name.value) && (0, _graphql.isCompositeType)(typeInfo.parentType) && (0, _graphql.isCompositeType)(typeMap[frag.typeCondition.name.value]) && (0, _graphql.doTypesOverlap)(schema, typeInfo.parentType, typeMap[frag.typeCondition.name.value])); - return (0, _autocompleteUtils.hintList)(token, relevantFrags.map(frag => ({ - label: frag.name.value, - detail: String(typeMap[frag.typeCondition.name.value]), - documentation: `fragment ${frag.name.value} on ${frag.typeCondition.name.value}`, - kind: _types.CompletionItemKind.Field, - type: typeMap[frag.typeCondition.name.value] - }))); -} -const getParentDefinition = (state, kind) => { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; - if (((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) === kind) { - return state.prevState; - } - if (((_c = (_b = state.prevState) === null || _b === void 0 ? void 0 : _b.prevState) === null || _c === void 0 ? void 0 : _c.kind) === kind) { - return state.prevState.prevState; - } - if (((_f = (_e = (_d = state.prevState) === null || _d === void 0 ? void 0 : _d.prevState) === null || _e === void 0 ? void 0 : _e.prevState) === null || _f === void 0 ? void 0 : _f.kind) === kind) { - return state.prevState.prevState.prevState; - } - if (((_k = (_j = (_h = (_g = state.prevState) === null || _g === void 0 ? void 0 : _g.prevState) === null || _h === void 0 ? void 0 : _h.prevState) === null || _j === void 0 ? void 0 : _j.prevState) === null || _k === void 0 ? void 0 : _k.kind) === kind) { - return state.prevState.prevState.prevState.prevState; - } -}; -function getVariableCompletions(queryText, schema, token) { - let variableName = null; - let variableType; - const definitions = Object.create({}); - runOnlineParser(queryText, (_, state) => { - if ((state === null || state === void 0 ? void 0 : state.kind) === _parser.RuleKinds.VARIABLE && state.name) { - variableName = state.name; - } - if ((state === null || state === void 0 ? void 0 : state.kind) === _parser.RuleKinds.NAMED_TYPE && variableName) { - const parentDefinition = getParentDefinition(state, _parser.RuleKinds.TYPE); - if (parentDefinition === null || parentDefinition === void 0 ? void 0 : parentDefinition.type) { - variableType = schema.getType(parentDefinition === null || parentDefinition === void 0 ? void 0 : parentDefinition.type); - } - } - if (variableName && variableType && !definitions[variableName]) { - definitions[variableName] = { - detail: variableType.toString(), - insertText: token.string === '$' ? variableName : '$' + variableName, - label: variableName, - type: variableType, - kind: _types.CompletionItemKind.Variable - }; - variableName = null; - variableType = null; - } - }); - return (0, _autocompleteUtils.objectValues)(definitions); -} -function getFragmentDefinitions(queryText) { - const fragmentDefs = []; - runOnlineParser(queryText, (_, state) => { - if (state.kind === _parser.RuleKinds.FRAGMENT_DEFINITION && state.name && state.type) { - fragmentDefs.push({ - kind: _parser.RuleKinds.FRAGMENT_DEFINITION, - name: { - kind: _graphql.Kind.NAME, - value: state.name - }, - selectionSet: { - kind: _parser.RuleKinds.SELECTION_SET, - selections: [] - }, - typeCondition: { - kind: _parser.RuleKinds.NAMED_TYPE, - name: { - kind: _graphql.Kind.NAME, - value: state.type - } - } - }); - } - }); - return fragmentDefs; -} -function getSuggestionsForVariableDefinition(token, schema, _kind) { - const inputTypeMap = schema.getTypeMap(); - const inputTypes = (0, _autocompleteUtils.objectValues)(inputTypeMap).filter(_graphql.isInputType); - return (0, _autocompleteUtils.hintList)(token, inputTypes.map(type => ({ - label: type.name, - documentation: type.description, - kind: _types.CompletionItemKind.Variable - }))); -} -function getSuggestionsForDirective(token, state, schema, _kind) { - var _a; - if ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.kind) { - const directives = schema.getDirectives().filter(directive => canUseDirective(state.prevState, directive)); - return (0, _autocompleteUtils.hintList)(token, directives.map(directive => ({ - label: directive.name, - documentation: directive.description || '', - kind: _types.CompletionItemKind.Function - }))); - } - return []; -} -function getTokenAtPosition(queryText, cursor) { - let offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - let styleAtCursor = null; - let stateAtCursor = null; - let stringAtCursor = null; - const token = runOnlineParser(queryText, (stream, state, style, index) => { - if (index !== cursor.line || stream.getCurrentPosition() + offset < cursor.character + 1) { - return; - } - styleAtCursor = style; - stateAtCursor = Object.assign({}, state); - stringAtCursor = stream.current(); - return 'BREAK'; - }); - return { - start: token.start, - end: token.end, - string: stringAtCursor || token.string, - state: stateAtCursor || token.state, - style: styleAtCursor || token.style - }; -} -function runOnlineParser(queryText, callback) { - const lines = queryText.split('\n'); - const parser = (0, _parser.onlineParser)(); - let state = parser.startState(); - let style = ''; - let stream = new _parser.CharacterStream(''); - for (let i = 0; i < lines.length; i++) { - stream = new _parser.CharacterStream(lines[i]); - while (!stream.eol()) { - style = parser.token(stream, state); - const code = callback(stream, state, style, i); - if (code === 'BREAK') { - break; - } - } - callback(stream, state, style, i); - if (!state.kind) { - state = parser.startState(); - } - } - return { - start: stream.getStartOfToken(), - end: stream.getCurrentPosition(), - string: stream.current(), - state, - style - }; -} -function canUseDirective(state, directive) { - if (!(state === null || state === void 0 ? void 0 : state.kind)) { - return false; - } - const { - kind, - prevState - } = state; - const { - locations - } = directive; - switch (kind) { - case _parser.RuleKinds.QUERY: - return locations.includes(_graphql.DirectiveLocation.QUERY); - case _parser.RuleKinds.MUTATION: - return locations.includes(_graphql.DirectiveLocation.MUTATION); - case _parser.RuleKinds.SUBSCRIPTION: - return locations.includes(_graphql.DirectiveLocation.SUBSCRIPTION); - case _parser.RuleKinds.FIELD: - case _parser.RuleKinds.ALIASED_FIELD: - return locations.includes(_graphql.DirectiveLocation.FIELD); - case _parser.RuleKinds.FRAGMENT_DEFINITION: - return locations.includes(_graphql.DirectiveLocation.FRAGMENT_DEFINITION); - case _parser.RuleKinds.FRAGMENT_SPREAD: - return locations.includes(_graphql.DirectiveLocation.FRAGMENT_SPREAD); - case _parser.RuleKinds.INLINE_FRAGMENT: - return locations.includes(_graphql.DirectiveLocation.INLINE_FRAGMENT); - case _parser.RuleKinds.SCHEMA_DEF: - return locations.includes(_graphql.DirectiveLocation.SCHEMA); - case _parser.RuleKinds.SCALAR_DEF: - return locations.includes(_graphql.DirectiveLocation.SCALAR); - case _parser.RuleKinds.OBJECT_TYPE_DEF: - return locations.includes(_graphql.DirectiveLocation.OBJECT); - case _parser.RuleKinds.FIELD_DEF: - return locations.includes(_graphql.DirectiveLocation.FIELD_DEFINITION); - case _parser.RuleKinds.INTERFACE_DEF: - return locations.includes(_graphql.DirectiveLocation.INTERFACE); - case _parser.RuleKinds.UNION_DEF: - return locations.includes(_graphql.DirectiveLocation.UNION); - case _parser.RuleKinds.ENUM_DEF: - return locations.includes(_graphql.DirectiveLocation.ENUM); - case _parser.RuleKinds.ENUM_VALUE: - return locations.includes(_graphql.DirectiveLocation.ENUM_VALUE); - case _parser.RuleKinds.INPUT_DEF: - return locations.includes(_graphql.DirectiveLocation.INPUT_OBJECT); - case _parser.RuleKinds.INPUT_VALUE_DEF: - const prevStateKind = prevState === null || prevState === void 0 ? void 0 : prevState.kind; - switch (prevStateKind) { - case _parser.RuleKinds.ARGUMENTS_DEF: - return locations.includes(_graphql.DirectiveLocation.ARGUMENT_DEFINITION); - case _parser.RuleKinds.INPUT_DEF: - return locations.includes(_graphql.DirectiveLocation.INPUT_FIELD_DEFINITION); - } - } - return false; -} -function getTypeInfo(schema, tokenState) { - let argDef; - let argDefs; - let directiveDef; - let enumValue; - let fieldDef; - let inputType; - let objectTypeDef; - let objectFieldDefs; - let parentType; - let type; - let interfaceDef; - (0, _autocompleteUtils.forEachState)(tokenState, state => { - var _a; - switch (state.kind) { - case _parser.RuleKinds.QUERY: - case 'ShortQuery': - type = schema.getQueryType(); - break; - case _parser.RuleKinds.MUTATION: - type = schema.getMutationType(); - break; - case _parser.RuleKinds.SUBSCRIPTION: - type = schema.getSubscriptionType(); - break; - case _parser.RuleKinds.INLINE_FRAGMENT: - case _parser.RuleKinds.FRAGMENT_DEFINITION: - if (state.type) { - type = schema.getType(state.type); - } - break; - case _parser.RuleKinds.FIELD: - case _parser.RuleKinds.ALIASED_FIELD: - { - if (!type || !state.name) { - fieldDef = null; - } else { - fieldDef = parentType ? (0, _autocompleteUtils.getFieldDef)(schema, parentType, state.name) : null; - type = fieldDef ? fieldDef.type : null; - } - break; - } - case _parser.RuleKinds.SELECTION_SET: - parentType = (0, _graphql.getNamedType)(type); - break; - case _parser.RuleKinds.DIRECTIVE: - directiveDef = state.name ? schema.getDirective(state.name) : null; - break; - case _parser.RuleKinds.INTERFACE_DEF: - if (state.name) { - objectTypeDef = null; - interfaceDef = new _graphql.GraphQLInterfaceType({ - name: state.name, - interfaces: [], - fields: {} - }); - } - break; - case _parser.RuleKinds.OBJECT_TYPE_DEF: - if (state.name) { - interfaceDef = null; - objectTypeDef = new _graphql.GraphQLObjectType({ - name: state.name, - interfaces: [], - fields: {} - }); - } - break; - case _parser.RuleKinds.ARGUMENTS: - { - if (state.prevState) { - switch (state.prevState.kind) { - case _parser.RuleKinds.FIELD: - argDefs = fieldDef && fieldDef.args; - break; - case _parser.RuleKinds.DIRECTIVE: - argDefs = directiveDef && directiveDef.args; - break; - case _parser.RuleKinds.ALIASED_FIELD: - { - const name = (_a = state.prevState) === null || _a === void 0 ? void 0 : _a.name; - if (!name) { - argDefs = null; - break; - } - const field = parentType ? (0, _autocompleteUtils.getFieldDef)(schema, parentType, name) : null; - if (!field) { - argDefs = null; - break; - } - argDefs = field.args; - break; - } - default: - argDefs = null; - break; - } - } else { - argDefs = null; - } - break; - } - case _parser.RuleKinds.ARGUMENT: - if (argDefs) { - for (let i = 0; i < argDefs.length; i++) { - if (argDefs[i].name === state.name) { - argDef = argDefs[i]; - break; - } - } - } - inputType = argDef === null || argDef === void 0 ? void 0 : argDef.type; - break; - case _parser.RuleKinds.ENUM_VALUE: - const enumType = (0, _graphql.getNamedType)(inputType); - enumValue = enumType instanceof _graphql.GraphQLEnumType ? enumType.getValues().find(val => val.value === state.name) : null; - break; - case _parser.RuleKinds.LIST_VALUE: - const nullableType = (0, _graphql.getNullableType)(inputType); - inputType = nullableType instanceof _graphql.GraphQLList ? nullableType.ofType : null; - break; - case _parser.RuleKinds.OBJECT_VALUE: - const objectType = (0, _graphql.getNamedType)(inputType); - objectFieldDefs = objectType instanceof _graphql.GraphQLInputObjectType ? objectType.getFields() : null; - break; - case _parser.RuleKinds.OBJECT_FIELD: - const objectField = state.name && objectFieldDefs ? objectFieldDefs[state.name] : null; - inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type; - break; - case _parser.RuleKinds.NAMED_TYPE: - if (state.name) { - type = schema.getType(state.name); - } - break; - } - }); - return { - argDef, - argDefs, - directiveDef, - enumValue, - fieldDef, - inputType, - objectFieldDefs, - parentType, - type, - interfaceDef, - objectTypeDef - }; -} -var GraphQLDocumentMode; -exports.GraphQLDocumentMode = GraphQLDocumentMode; -(function (GraphQLDocumentMode) { - GraphQLDocumentMode["TYPE_SYSTEM"] = "TYPE_SYSTEM"; - GraphQLDocumentMode["EXECUTABLE"] = "EXECUTABLE"; -})(GraphQLDocumentMode || (exports.GraphQLDocumentMode = GraphQLDocumentMode = {})); -function getDocumentMode(documentText, uri) { - if (uri === null || uri === void 0 ? void 0 : uri.endsWith('.graphqls')) { - return GraphQLDocumentMode.TYPE_SYSTEM; - } - return hasTypeSystemDefinitions(documentText) ? GraphQLDocumentMode.TYPE_SYSTEM : GraphQLDocumentMode.EXECUTABLE; -} -function unwrapType(state) { - if (state.prevState && state.kind && [_parser.RuleKinds.NAMED_TYPE, _parser.RuleKinds.LIST_TYPE, _parser.RuleKinds.TYPE, _parser.RuleKinds.NON_NULL_TYPE].includes(state.kind)) { - return unwrapType(state.prevState); - } - return state; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/interface/getDefinition.js": -/*!*********************************************************************!*\ - !*** ../../graphql-language-service/esm/interface/getDefinition.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.LANGUAGE = void 0; -exports.getDefinitionQueryResultForDefinitionNode = getDefinitionQueryResultForDefinitionNode; -exports.getDefinitionQueryResultForField = getDefinitionQueryResultForField; -exports.getDefinitionQueryResultForFragmentSpread = getDefinitionQueryResultForFragmentSpread; -exports.getDefinitionQueryResultForNamedType = getDefinitionQueryResultForNamedType; -var _utils = __webpack_require__(/*! ../utils */ "../../graphql-language-service/esm/utils/index.js"); -var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const LANGUAGE = 'GraphQL'; -exports.LANGUAGE = LANGUAGE; -function assert(value, message) { - if (!value) { - throw new Error(message); - } -} -function getRange(text, node) { - const location = node.loc; - assert(location, 'Expected ASTNode to have a location.'); - return (0, _utils.locToRange)(text, location); -} -function getPosition(text, node) { - const location = node.loc; - assert(location, 'Expected ASTNode to have a location.'); - return (0, _utils.offsetToPosition)(text, location.start); -} -function getDefinitionQueryResultForNamedType(text, node, dependencies) { - return __awaiter(this, void 0, void 0, function* () { - const name = node.name.value; - const defNodes = dependencies.filter(_ref => { - let { - definition - } = _ref; - return definition.name && definition.name.value === name; - }); - if (defNodes.length === 0) { - throw new Error(`Definition not found for GraphQL type ${name}`); - } - const definitions = defNodes.map(_ref2 => { - let { - filePath, - content, - definition - } = _ref2; - return getDefinitionForNodeDefinition(filePath || '', content, definition); - }); - return { - definitions, - queryRange: definitions.map(_ => getRange(text, node)) - }; - }); -} -function getDefinitionQueryResultForField(fieldName, typeName, dependencies) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const defNodes = dependencies.filter(_ref3 => { - let { - definition - } = _ref3; - return definition.name && definition.name.value === typeName; - }); - if (defNodes.length === 0) { - throw new Error(`Definition not found for GraphQL type ${typeName}`); - } - const definitions = []; - for (const { - filePath, - content, - definition - } of defNodes) { - const fieldDefinition = (_a = definition.fields) === null || _a === void 0 ? void 0 : _a.find(item => item.name.value === fieldName); - if (fieldDefinition == null) { - continue; - } - definitions.push(getDefinitionForFieldDefinition(filePath || '', content, fieldDefinition)); - } - return { - definitions, - queryRange: [] - }; - }); -} -function getDefinitionQueryResultForFragmentSpread(text, fragment, dependencies) { - return __awaiter(this, void 0, void 0, function* () { - const name = fragment.name.value; - const defNodes = dependencies.filter(_ref4 => { - let { - definition - } = _ref4; - return definition.name.value === name; - }); - if (defNodes.length === 0) { - throw new Error(`Definition not found for GraphQL fragment ${name}`); - } - const definitions = defNodes.map(_ref5 => { - let { - filePath, - content, - definition - } = _ref5; - return getDefinitionForFragmentDefinition(filePath || '', content, definition); - }); - return { - definitions, - queryRange: definitions.map(_ => getRange(text, fragment)) - }; - }); -} -function getDefinitionQueryResultForDefinitionNode(path, text, definition) { - return { - definitions: [getDefinitionForFragmentDefinition(path, text, definition)], - queryRange: definition.name ? [getRange(text, definition.name)] : [] - }; -} -function getDefinitionForFragmentDefinition(path, text, definition) { - const { - name - } = definition; - if (!name) { - throw new Error('Expected ASTNode to have a Name.'); - } - return { - path, - position: getPosition(text, definition), - range: getRange(text, definition), - name: name.value || '', - language: LANGUAGE, - projectRoot: path - }; -} -function getDefinitionForNodeDefinition(path, text, definition) { - const { - name - } = definition; - assert(name, 'Expected ASTNode to have a Name.'); - return { - path, - position: getPosition(text, definition), - range: getRange(text, definition), - name: name.value || '', - language: LANGUAGE, - projectRoot: path - }; -} -function getDefinitionForFieldDefinition(path, text, definition) { - const { - name - } = definition; - assert(name, 'Expected ASTNode to have a Name.'); - return { - path, - position: getPosition(text, definition), - range: getRange(text, definition), - name: name.value || '', - language: LANGUAGE, - projectRoot: path - }; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/interface/getDiagnostics.js": -/*!**********************************************************************!*\ - !*** ../../graphql-language-service/esm/interface/getDiagnostics.js ***! - \**********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SEVERITY = exports.DIAGNOSTIC_SEVERITY = void 0; -exports.getDiagnostics = getDiagnostics; -exports.getRange = getRange; -exports.validateQuery = validateQuery; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -var _parser = __webpack_require__(/*! ../parser */ "../../graphql-language-service/esm/parser/index.js"); -var _utils = __webpack_require__(/*! ../utils */ "../../graphql-language-service/esm/utils/index.js"); -const SEVERITY = { - Error: 'Error', - Warning: 'Warning', - Information: 'Information', - Hint: 'Hint' -}; -exports.SEVERITY = SEVERITY; -const DIAGNOSTIC_SEVERITY = { - [SEVERITY.Error]: 1, - [SEVERITY.Warning]: 2, - [SEVERITY.Information]: 3, - [SEVERITY.Hint]: 4 -}; -exports.DIAGNOSTIC_SEVERITY = DIAGNOSTIC_SEVERITY; -const invariant = (condition, message) => { - if (!condition) { - throw new Error(message); - } -}; -function getDiagnostics(query) { - let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - let customRules = arguments.length > 2 ? arguments[2] : undefined; - let isRelayCompatMode = arguments.length > 3 ? arguments[3] : undefined; - let externalFragments = arguments.length > 4 ? arguments[4] : undefined; - var _a, _b; - let ast = null; - let fragments = ''; - if (externalFragments) { - fragments = typeof externalFragments === 'string' ? externalFragments : externalFragments.reduce((acc, node) => acc + (0, _graphql.print)(node) + '\n\n', ''); - } - const enhancedQuery = fragments ? `${query}\n\n${fragments}` : query; - try { - ast = (0, _graphql.parse)(enhancedQuery); - } catch (error) { - if (error instanceof _graphql.GraphQLError) { - const range = getRange((_b = (_a = error.locations) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : { - line: 0, - column: 0 - }, enhancedQuery); - return [{ - severity: DIAGNOSTIC_SEVERITY.Error, - message: error.message, - source: 'GraphQL: Syntax', - range - }]; - } - throw error; - } - return validateQuery(ast, schema, customRules, isRelayCompatMode); -} -function validateQuery(ast) { - let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - let customRules = arguments.length > 2 ? arguments[2] : undefined; - let isRelayCompatMode = arguments.length > 3 ? arguments[3] : undefined; - if (!schema) { - return []; - } - const validationErrorAnnotations = (0, _utils.validateWithCustomRules)(schema, ast, customRules, isRelayCompatMode).flatMap(error => annotations(error, DIAGNOSTIC_SEVERITY.Error, 'Validation')); - const deprecationWarningAnnotations = (0, _graphql.validate)(schema, ast, [_graphql.NoDeprecatedCustomRule]).flatMap(error => annotations(error, DIAGNOSTIC_SEVERITY.Warning, 'Deprecation')); - return validationErrorAnnotations.concat(deprecationWarningAnnotations); -} -function annotations(error, severity, type) { - if (!error.nodes) { - return []; - } - const highlightedNodes = []; - for (const [i, node] of error.nodes.entries()) { - const highlightNode = node.kind !== 'Variable' && 'name' in node && node.name !== undefined ? node.name : 'variable' in node && node.variable !== undefined ? node.variable : node; - if (highlightNode) { - invariant(error.locations, 'GraphQL validation error requires locations.'); - const loc = error.locations[i]; - const highlightLoc = getLocation(highlightNode); - const end = loc.column + (highlightLoc.end - highlightLoc.start); - highlightedNodes.push({ - source: `GraphQL: ${type}`, - message: error.message, - severity, - range: new _utils.Range(new _utils.Position(loc.line - 1, loc.column - 1), new _utils.Position(loc.line - 1, end)) - }); - } - } - return highlightedNodes; -} -function getRange(location, queryText) { - const parser = (0, _parser.onlineParser)(); - const state = parser.startState(); - const lines = queryText.split('\n'); - invariant(lines.length >= location.line, 'Query text must have more lines than where the error happened'); - let stream = null; - for (let i = 0; i < location.line; i++) { - stream = new _parser.CharacterStream(lines[i]); - while (!stream.eol()) { - const style = parser.token(stream, state); - if (style === 'invalidchar') { - break; - } - } - } - invariant(stream, 'Expected Parser stream to be available.'); - const line = location.line - 1; - const start = stream.getStartOfToken(); - const end = stream.getCurrentPosition(); - return new _utils.Range(new _utils.Position(line, start), new _utils.Position(line, end)); -} -function getLocation(node) { - const typeCastedNode = node; - const location = typeCastedNode.loc; - invariant(location, 'Expected ASTNode to have a location.'); - return location; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/interface/getHoverInformation.js": -/*!***************************************************************************!*\ - !*** ../../graphql-language-service/esm/interface/getHoverInformation.js ***! - \***************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getHoverInformation = getHoverInformation; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -var _getAutocompleteSuggestions = __webpack_require__(/*! ./getAutocompleteSuggestions */ "../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js"); -function getHoverInformation(schema, queryText, cursor, contextToken, config) { - const token = contextToken || (0, _getAutocompleteSuggestions.getTokenAtPosition)(queryText, cursor); - if (!schema || !token || !token.state) { - return ''; - } - const { - kind, - step - } = token.state; - const typeInfo = (0, _getAutocompleteSuggestions.getTypeInfo)(schema, token.state); - const options = Object.assign(Object.assign({}, config), { - schema - }); - if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef) { - const into = []; - renderMdCodeStart(into, options); - renderField(into, typeInfo, options); - renderMdCodeEnd(into, options); - renderDescription(into, options, typeInfo.fieldDef); - return into.join('').trim(); - } - if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) { - const into = []; - renderMdCodeStart(into, options); - renderDirective(into, typeInfo, options); - renderMdCodeEnd(into, options); - renderDescription(into, options, typeInfo.directiveDef); - return into.join('').trim(); - } - if (kind === 'Argument' && step === 0 && typeInfo.argDef) { - const into = []; - renderMdCodeStart(into, options); - renderArg(into, typeInfo, options); - renderMdCodeEnd(into, options); - renderDescription(into, options, typeInfo.argDef); - return into.join('').trim(); - } - if (kind === 'EnumValue' && typeInfo.enumValue && 'description' in typeInfo.enumValue) { - const into = []; - renderMdCodeStart(into, options); - renderEnumValue(into, typeInfo, options); - renderMdCodeEnd(into, options); - renderDescription(into, options, typeInfo.enumValue); - return into.join('').trim(); - } - if (kind === 'NamedType' && typeInfo.type && 'description' in typeInfo.type) { - const into = []; - renderMdCodeStart(into, options); - renderType(into, typeInfo, options, typeInfo.type); - renderMdCodeEnd(into, options); - renderDescription(into, options, typeInfo.type); - return into.join('').trim(); - } - return ''; -} -function renderMdCodeStart(into, options) { - if (options.useMarkdown) { - text(into, '```graphql\n'); - } -} -function renderMdCodeEnd(into, options) { - if (options.useMarkdown) { - text(into, '\n```'); - } -} -function renderField(into, typeInfo, options) { - renderQualifiedField(into, typeInfo, options); - renderTypeAnnotation(into, typeInfo, options, typeInfo.type); -} -function renderQualifiedField(into, typeInfo, options) { - if (!typeInfo.fieldDef) { - return; - } - const fieldName = typeInfo.fieldDef.name; - if (fieldName.slice(0, 2) !== '__') { - renderType(into, typeInfo, options, typeInfo.parentType); - text(into, '.'); - } - text(into, fieldName); -} -function renderDirective(into, typeInfo, _options) { - if (!typeInfo.directiveDef) { - return; - } - const name = '@' + typeInfo.directiveDef.name; - text(into, name); -} -function renderArg(into, typeInfo, options) { - if (typeInfo.directiveDef) { - renderDirective(into, typeInfo, options); - } else if (typeInfo.fieldDef) { - renderQualifiedField(into, typeInfo, options); - } - if (!typeInfo.argDef) { - return; - } - const { - name - } = typeInfo.argDef; - text(into, '('); - text(into, name); - renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType); - text(into, ')'); -} -function renderTypeAnnotation(into, typeInfo, options, t) { - text(into, ': '); - renderType(into, typeInfo, options, t); -} -function renderEnumValue(into, typeInfo, options) { - if (!typeInfo.enumValue) { - return; - } - const { - name - } = typeInfo.enumValue; - renderType(into, typeInfo, options, typeInfo.inputType); - text(into, '.'); - text(into, name); -} -function renderType(into, typeInfo, options, t) { - if (!t) { - return; - } - if (t instanceof _graphql.GraphQLNonNull) { - renderType(into, typeInfo, options, t.ofType); - text(into, '!'); - } else if (t instanceof _graphql.GraphQLList) { - text(into, '['); - renderType(into, typeInfo, options, t.ofType); - text(into, ']'); - } else { - text(into, t.name); - } -} -function renderDescription(into, options, def) { - if (!def) { - return; - } - const description = typeof def.description === 'string' ? def.description : null; - if (description) { - text(into, '\n\n'); - text(into, description); - } - renderDeprecation(into, options, def); -} -function renderDeprecation(into, _options, def) { - if (!def) { - return; - } - const reason = def.deprecationReason || null; - if (!reason) { - return; - } - text(into, '\n\n'); - text(into, 'Deprecated: '); - text(into, reason); -} -function text(into, content) { - into.push(content); -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/interface/getOutline.js": -/*!******************************************************************!*\ - !*** ../../graphql-language-service/esm/interface/getOutline.js ***! - \******************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getOutline = getOutline; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -var _utils = __webpack_require__(/*! ../utils */ "../../graphql-language-service/esm/utils/index.js"); -const { - INLINE_FRAGMENT -} = _graphql.Kind; -const OUTLINEABLE_KINDS = { - Field: true, - OperationDefinition: true, - Document: true, - SelectionSet: true, - Name: true, - FragmentDefinition: true, - FragmentSpread: true, - InlineFragment: true, - ObjectTypeDefinition: true, - InputObjectTypeDefinition: true, - InterfaceTypeDefinition: true, - EnumTypeDefinition: true, - EnumValueDefinition: true, - InputValueDefinition: true, - FieldDefinition: true -}; -function getOutline(documentText) { - let ast; - try { - ast = (0, _graphql.parse)(documentText); - } catch (_a) { - return null; - } - const visitorFns = outlineTreeConverter(documentText); - const outlineTrees = (0, _graphql.visit)(ast, { - leave(node) { - if (visitorFns !== undefined && node.kind in visitorFns) { - return visitorFns[node.kind](node); - } - return null; - } - }); - return { - outlineTrees - }; -} -function outlineTreeConverter(docText) { - const meta = node => { - return { - representativeName: node.name, - startPosition: (0, _utils.offsetToPosition)(docText, node.loc.start), - endPosition: (0, _utils.offsetToPosition)(docText, node.loc.end), - kind: node.kind, - children: node.selectionSet || node.fields || node.values || node.arguments || [] - }; - }; - return { - Field(node) { - const tokenizedText = node.alias ? [buildToken('plain', node.alias), buildToken('plain', ': ')] : []; - tokenizedText.push(buildToken('plain', node.name)); - return Object.assign({ - tokenizedText - }, meta(node)); - }, - OperationDefinition: node => Object.assign({ - tokenizedText: [buildToken('keyword', node.operation), buildToken('whitespace', ' '), buildToken('class-name', node.name)] - }, meta(node)), - Document: node => node.definitions, - SelectionSet: node => concatMap(node.selections, child => { - return child.kind === INLINE_FRAGMENT ? child.selectionSet : child; - }), - Name: node => node.value, - FragmentDefinition: node => Object.assign({ - tokenizedText: [buildToken('keyword', 'fragment'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] - }, meta(node)), - InterfaceTypeDefinition: node => Object.assign({ - tokenizedText: [buildToken('keyword', 'interface'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] - }, meta(node)), - EnumTypeDefinition: node => Object.assign({ - tokenizedText: [buildToken('keyword', 'enum'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] - }, meta(node)), - EnumValueDefinition: node => Object.assign({ - tokenizedText: [buildToken('plain', node.name)] - }, meta(node)), - ObjectTypeDefinition: node => Object.assign({ - tokenizedText: [buildToken('keyword', 'type'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] - }, meta(node)), - InputObjectTypeDefinition: node => Object.assign({ - tokenizedText: [buildToken('keyword', 'input'), buildToken('whitespace', ' '), buildToken('class-name', node.name)] - }, meta(node)), - FragmentSpread: node => Object.assign({ - tokenizedText: [buildToken('plain', '...'), buildToken('class-name', node.name)] - }, meta(node)), - InputValueDefinition(node) { - return Object.assign({ - tokenizedText: [buildToken('plain', node.name)] - }, meta(node)); - }, - FieldDefinition(node) { - return Object.assign({ - tokenizedText: [buildToken('plain', node.name)] - }, meta(node)); - }, - InlineFragment: node => node.selectionSet - }; -} -function buildToken(kind, value) { - return { - kind, - value - }; -} -function concatMap(arr, fn) { - const res = []; - for (let i = 0; i < arr.length; i++) { - const x = fn(arr[i], i); - if (Array.isArray(x)) { - res.push(...x); - } else { - res.push(x); - } - } - return res; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/interface/index.js": -/*!*************************************************************!*\ - !*** ../../graphql-language-service/esm/interface/index.js ***! - \*************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var _exportNames = { - getOutline: true, - getHoverInformation: true -}; -Object.defineProperty(exports, "getHoverInformation", ({ - enumerable: true, - get: function () { - return _getHoverInformation.getHoverInformation; - } -})); -Object.defineProperty(exports, "getOutline", ({ - enumerable: true, - get: function () { - return _getOutline.getOutline; - } -})); -var _autocompleteUtils = __webpack_require__(/*! ./autocompleteUtils */ "../../graphql-language-service/esm/interface/autocompleteUtils.js"); -Object.keys(_autocompleteUtils).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _autocompleteUtils[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _autocompleteUtils[key]; - } - }); -}); -var _getAutocompleteSuggestions = __webpack_require__(/*! ./getAutocompleteSuggestions */ "../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js"); -Object.keys(_getAutocompleteSuggestions).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _getAutocompleteSuggestions[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _getAutocompleteSuggestions[key]; - } - }); -}); -var _getDefinition = __webpack_require__(/*! ./getDefinition */ "../../graphql-language-service/esm/interface/getDefinition.js"); -Object.keys(_getDefinition).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _getDefinition[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _getDefinition[key]; - } - }); -}); -var _getDiagnostics = __webpack_require__(/*! ./getDiagnostics */ "../../graphql-language-service/esm/interface/getDiagnostics.js"); -Object.keys(_getDiagnostics).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _getDiagnostics[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _getDiagnostics[key]; - } - }); -}); -var _getOutline = __webpack_require__(/*! ./getOutline */ "../../graphql-language-service/esm/interface/getOutline.js"); -var _getHoverInformation = __webpack_require__(/*! ./getHoverInformation */ "../../graphql-language-service/esm/interface/getHoverInformation.js"); - -/***/ }), - -/***/ "../../graphql-language-service/esm/parser/CharacterStream.js": -/*!********************************************************************!*\ - !*** ../../graphql-language-service/esm/parser/CharacterStream.js ***! - \********************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -class CharacterStream { - constructor(sourceText) { - var _this = this; - this._start = 0; - this._pos = 0; - this.getStartOfToken = () => this._start; - this.getCurrentPosition = () => this._pos; - this.eol = () => this._sourceText.length === this._pos; - this.sol = () => this._pos === 0; - this.peek = () => { - return this._sourceText.charAt(this._pos) || null; - }; - this.next = () => { - const char = this._sourceText.charAt(this._pos); - this._pos++; - return char; - }; - this.eat = pattern => { - const isMatched = this._testNextCharacter(pattern); - if (isMatched) { - this._start = this._pos; - this._pos++; - return this._sourceText.charAt(this._pos - 1); - } - return undefined; - }; - this.eatWhile = match => { - let isMatched = this._testNextCharacter(match); - let didEat = false; - if (isMatched) { - didEat = isMatched; - this._start = this._pos; - } - while (isMatched) { - this._pos++; - isMatched = this._testNextCharacter(match); - didEat = true; - } - return didEat; - }; - this.eatSpace = () => this.eatWhile(/[\s\u00a0]/); - this.skipToEnd = () => { - this._pos = this._sourceText.length; - }; - this.skipTo = position => { - this._pos = position; - }; - this.match = function (pattern) { - let consume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - let caseFold = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - let token = null; - let match = null; - if (typeof pattern === 'string') { - const regex = new RegExp(pattern, caseFold ? 'i' : 'g'); - match = regex.test(_this._sourceText.slice(_this._pos, _this._pos + pattern.length)); - token = pattern; - } else if (pattern instanceof RegExp) { - match = _this._sourceText.slice(_this._pos).match(pattern); - token = match === null || match === void 0 ? void 0 : match[0]; - } - if (match != null && (typeof pattern === 'string' || match instanceof Array && _this._sourceText.startsWith(match[0], _this._pos))) { - if (consume) { - _this._start = _this._pos; - if (token && token.length) { - _this._pos += token.length; - } - } - return match; - } - return false; - }; - this.backUp = num => { - this._pos -= num; - }; - this.column = () => this._pos; - this.indentation = () => { - const match = this._sourceText.match(/\s*/); - let indent = 0; - if (match && match.length !== 0) { - const whiteSpaces = match[0]; - let pos = 0; - while (whiteSpaces.length > pos) { - if (whiteSpaces.charCodeAt(pos) === 9) { - indent += 2; - } else { - indent++; - } - pos++; - } - } - return indent; - }; - this.current = () => this._sourceText.slice(this._start, this._pos); - this._sourceText = sourceText; - } - _testNextCharacter(pattern) { - const character = this._sourceText.charAt(this._pos); - let isMatched = false; - if (typeof pattern === 'string') { - isMatched = character === pattern; - } else { - isMatched = pattern instanceof RegExp ? pattern.test(character) : pattern(character); - } - return isMatched; - } -} -exports["default"] = CharacterStream; - -/***/ }), - -/***/ "../../graphql-language-service/esm/parser/RuleHelpers.js": -/*!****************************************************************!*\ - !*** ../../graphql-language-service/esm/parser/RuleHelpers.js ***! - \****************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.butNot = butNot; -exports.list = list; -exports.opt = opt; -exports.p = p; -exports.t = t; -function opt(ofRule) { - return { - ofRule - }; -} -function list(ofRule, separator) { - return { - ofRule, - isList: true, - separator - }; -} -function butNot(rule, exclusions) { - const ruleMatch = rule.match; - rule.match = token => { - let check = false; - if (ruleMatch) { - check = ruleMatch(token); - } - return check && exclusions.every(exclusion => exclusion.match && !exclusion.match(token)); - }; - return rule; -} -function t(kind, style) { - return { - style, - match: token => token.kind === kind - }; -} -function p(value, style) { - return { - style: style || 'punctuation', - match: token => token.kind === 'Punctuation' && token.value === value - }; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/parser/Rules.js": -/*!**********************************************************!*\ - !*** ../../graphql-language-service/esm/parser/Rules.js ***! - \**********************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.isIgnored = exports.ParseRules = exports.LexRules = void 0; -var _RuleHelpers = __webpack_require__(/*! ./RuleHelpers */ "../../graphql-language-service/esm/parser/RuleHelpers.js"); -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -const isIgnored = ch => ch === ' ' || ch === '\t' || ch === ',' || ch === '\n' || ch === '\r' || ch === '\uFEFF' || ch === '\u00A0'; -exports.isIgnored = isIgnored; -const LexRules = { - Name: /^[_A-Za-z][_0-9A-Za-z]*/, - Punctuation: /^(?:!|\$|\(|\)|\.\.\.|:|=|&|@|\[|]|\{|\||\})/, - Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/, - String: /^(?:"""(?:\\"""|[^"]|"[^"]|""[^"])*(?:""")?|"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?)/, - Comment: /^#.*/ -}; -exports.LexRules = LexRules; -const ParseRules = { - Document: [(0, _RuleHelpers.list)('Definition')], - Definition(token) { - switch (token.value) { - case '{': - return 'ShortQuery'; - case 'query': - return 'Query'; - case 'mutation': - return 'Mutation'; - case 'subscription': - return 'Subscription'; - case 'fragment': - return _graphql.Kind.FRAGMENT_DEFINITION; - case 'schema': - return 'SchemaDef'; - case 'scalar': - return 'ScalarDef'; - case 'type': - return 'ObjectTypeDef'; - case 'interface': - return 'InterfaceDef'; - case 'union': - return 'UnionDef'; - case 'enum': - return 'EnumDef'; - case 'input': - return 'InputDef'; - case 'extend': - return 'ExtendDef'; - case 'directive': - return 'DirectiveDef'; - } - }, - ShortQuery: ['SelectionSet'], - Query: [word('query'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], - Mutation: [word('mutation'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], - Subscription: [word('subscription'), (0, _RuleHelpers.opt)(name('def')), (0, _RuleHelpers.opt)('VariableDefinitions'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], - VariableDefinitions: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('VariableDefinition'), (0, _RuleHelpers.p)(')')], - VariableDefinition: ['Variable', (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.opt)('DefaultValue')], - Variable: [(0, _RuleHelpers.p)('$', 'variable'), name('variable')], - DefaultValue: [(0, _RuleHelpers.p)('='), 'Value'], - SelectionSet: [(0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('Selection'), (0, _RuleHelpers.p)('}')], - Selection(token, stream) { - return token.value === '...' ? stream.match(/[\s\u00a0,]*(on\b|@|{)/, false) ? 'InlineFragment' : 'FragmentSpread' : stream.match(/[\s\u00a0,]*:/, false) ? 'AliasedField' : 'Field'; - }, - AliasedField: [name('property'), (0, _RuleHelpers.p)(':'), name('qualifier'), (0, _RuleHelpers.opt)('Arguments'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.opt)('SelectionSet')], - Field: [name('property'), (0, _RuleHelpers.opt)('Arguments'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.opt)('SelectionSet')], - Arguments: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('Argument'), (0, _RuleHelpers.p)(')')], - Argument: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Value'], - FragmentSpread: [(0, _RuleHelpers.p)('...'), name('def'), (0, _RuleHelpers.list)('Directive')], - InlineFragment: [(0, _RuleHelpers.p)('...'), (0, _RuleHelpers.opt)('TypeCondition'), (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], - FragmentDefinition: [word('fragment'), (0, _RuleHelpers.opt)((0, _RuleHelpers.butNot)(name('def'), [word('on')])), 'TypeCondition', (0, _RuleHelpers.list)('Directive'), 'SelectionSet'], - TypeCondition: [word('on'), 'NamedType'], - Value(token) { - switch (token.kind) { - case 'Number': - return 'NumberValue'; - case 'String': - return 'StringValue'; - case 'Punctuation': - switch (token.value) { - case '[': - return 'ListValue'; - case '{': - return 'ObjectValue'; - case '$': - return 'Variable'; - case '&': - return 'NamedType'; - } - return null; - case 'Name': - switch (token.value) { - case 'true': - case 'false': - return 'BooleanValue'; - } - if (token.value === 'null') { - return 'NullValue'; - } - return 'EnumValue'; - } - }, - NumberValue: [(0, _RuleHelpers.t)('Number', 'number')], - StringValue: [{ - style: 'string', - match: token => token.kind === 'String', - update(state, token) { - if (token.value.startsWith('"""')) { - state.inBlockstring = !token.value.slice(3).endsWith('"""'); - } - } - }], - BooleanValue: [(0, _RuleHelpers.t)('Name', 'builtin')], - NullValue: [(0, _RuleHelpers.t)('Name', 'keyword')], - EnumValue: [name('string-2')], - ListValue: [(0, _RuleHelpers.p)('['), (0, _RuleHelpers.list)('Value'), (0, _RuleHelpers.p)(']')], - ObjectValue: [(0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('ObjectField'), (0, _RuleHelpers.p)('}')], - ObjectField: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Value'], - Type(token) { - return token.value === '[' ? 'ListType' : 'NonNullType'; - }, - ListType: [(0, _RuleHelpers.p)('['), 'Type', (0, _RuleHelpers.p)(']'), (0, _RuleHelpers.opt)((0, _RuleHelpers.p)('!'))], - NonNullType: ['NamedType', (0, _RuleHelpers.opt)((0, _RuleHelpers.p)('!'))], - NamedType: [type('atom')], - Directive: [(0, _RuleHelpers.p)('@', 'meta'), name('meta'), (0, _RuleHelpers.opt)('Arguments')], - DirectiveDef: [word('directive'), (0, _RuleHelpers.p)('@', 'meta'), name('meta'), (0, _RuleHelpers.opt)('ArgumentsDef'), word('on'), (0, _RuleHelpers.list)('DirectiveLocation', (0, _RuleHelpers.p)('|'))], - InterfaceDef: [word('interface'), name('atom'), (0, _RuleHelpers.opt)('Implements'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('FieldDef'), (0, _RuleHelpers.p)('}')], - Implements: [word('implements'), (0, _RuleHelpers.list)('NamedType', (0, _RuleHelpers.p)('&'))], - DirectiveLocation: [name('string-2')], - SchemaDef: [word('schema'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('OperationTypeDef'), (0, _RuleHelpers.p)('}')], - OperationTypeDef: [name('keyword'), (0, _RuleHelpers.p)(':'), name('atom')], - ScalarDef: [word('scalar'), name('atom'), (0, _RuleHelpers.list)('Directive')], - ObjectTypeDef: [word('type'), name('atom'), (0, _RuleHelpers.opt)('Implements'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('FieldDef'), (0, _RuleHelpers.p)('}')], - FieldDef: [name('property'), (0, _RuleHelpers.opt)('ArgumentsDef'), (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.list)('Directive')], - ArgumentsDef: [(0, _RuleHelpers.p)('('), (0, _RuleHelpers.list)('InputValueDef'), (0, _RuleHelpers.p)(')')], - InputValueDef: [name('attribute'), (0, _RuleHelpers.p)(':'), 'Type', (0, _RuleHelpers.opt)('DefaultValue'), (0, _RuleHelpers.list)('Directive')], - UnionDef: [word('union'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('='), (0, _RuleHelpers.list)('UnionMember', (0, _RuleHelpers.p)('|'))], - UnionMember: ['NamedType'], - EnumDef: [word('enum'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('EnumValueDef'), (0, _RuleHelpers.p)('}')], - EnumValueDef: [name('string-2'), (0, _RuleHelpers.list)('Directive')], - InputDef: [word('input'), name('atom'), (0, _RuleHelpers.list)('Directive'), (0, _RuleHelpers.p)('{'), (0, _RuleHelpers.list)('InputValueDef'), (0, _RuleHelpers.p)('}')], - ExtendDef: [word('extend'), 'ExtensionDefinition'], - ExtensionDefinition(token) { - switch (token.value) { - case 'schema': - return _graphql.Kind.SCHEMA_EXTENSION; - case 'scalar': - return _graphql.Kind.SCALAR_TYPE_EXTENSION; - case 'type': - return _graphql.Kind.OBJECT_TYPE_EXTENSION; - case 'interface': - return _graphql.Kind.INTERFACE_TYPE_EXTENSION; - case 'union': - return _graphql.Kind.UNION_TYPE_EXTENSION; - case 'enum': - return _graphql.Kind.ENUM_TYPE_EXTENSION; - case 'input': - return _graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION; - } - }, - [_graphql.Kind.SCHEMA_EXTENSION]: ['SchemaDef'], - [_graphql.Kind.SCALAR_TYPE_EXTENSION]: ['ScalarDef'], - [_graphql.Kind.OBJECT_TYPE_EXTENSION]: ['ObjectTypeDef'], - [_graphql.Kind.INTERFACE_TYPE_EXTENSION]: ['InterfaceDef'], - [_graphql.Kind.UNION_TYPE_EXTENSION]: ['UnionDef'], - [_graphql.Kind.ENUM_TYPE_EXTENSION]: ['EnumDef'], - [_graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION]: ['InputDef'] -}; -exports.ParseRules = ParseRules; -function word(value) { - return { - style: 'keyword', - match: token => token.kind === 'Name' && token.value === value - }; -} -function name(style) { - return { - style, - match: token => token.kind === 'Name', - update(state, token) { - state.name = token.value; - } - }; -} -function type(style) { - return { - style, - match: token => token.kind === 'Name', - update(state, token) { - var _a; - if ((_a = state.prevState) === null || _a === void 0 ? void 0 : _a.prevState) { - state.name = token.value; - state.prevState.prevState.type = token.value; - } - } - }; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/parser/index.js": -/*!**********************************************************!*\ - !*** ../../graphql-language-service/esm/parser/index.js ***! - \**********************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -var _exportNames = { - CharacterStream: true, - LexRules: true, - ParseRules: true, - isIgnored: true, - butNot: true, - list: true, - opt: true, - p: true, - t: true, - onlineParser: true -}; -Object.defineProperty(exports, "CharacterStream", ({ - enumerable: true, - get: function () { - return _CharacterStream.default; - } -})); -Object.defineProperty(exports, "LexRules", ({ - enumerable: true, - get: function () { - return _Rules.LexRules; - } -})); -Object.defineProperty(exports, "ParseRules", ({ - enumerable: true, - get: function () { - return _Rules.ParseRules; - } -})); -Object.defineProperty(exports, "butNot", ({ - enumerable: true, - get: function () { - return _RuleHelpers.butNot; - } -})); -Object.defineProperty(exports, "isIgnored", ({ - enumerable: true, - get: function () { - return _Rules.isIgnored; - } -})); -Object.defineProperty(exports, "list", ({ - enumerable: true, - get: function () { - return _RuleHelpers.list; - } -})); -Object.defineProperty(exports, "onlineParser", ({ - enumerable: true, - get: function () { - return _onlineParser.default; - } -})); -Object.defineProperty(exports, "opt", ({ - enumerable: true, - get: function () { - return _RuleHelpers.opt; - } -})); -Object.defineProperty(exports, "p", ({ - enumerable: true, - get: function () { - return _RuleHelpers.p; - } -})); -Object.defineProperty(exports, "t", ({ - enumerable: true, - get: function () { - return _RuleHelpers.t; - } -})); -var _CharacterStream = _interopRequireDefault(__webpack_require__(/*! ./CharacterStream */ "../../graphql-language-service/esm/parser/CharacterStream.js")); -var _Rules = __webpack_require__(/*! ./Rules */ "../../graphql-language-service/esm/parser/Rules.js"); -var _RuleHelpers = __webpack_require__(/*! ./RuleHelpers */ "../../graphql-language-service/esm/parser/RuleHelpers.js"); -var _onlineParser = _interopRequireDefault(__webpack_require__(/*! ./onlineParser */ "../../graphql-language-service/esm/parser/onlineParser.js")); -var _types = __webpack_require__(/*! ./types */ "../../graphql-language-service/esm/parser/types.js"); -Object.keys(_types).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; - if (key in exports && exports[key] === _types[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _types[key]; - } - }); -}); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/***/ }), - -/***/ "../../graphql-language-service/esm/parser/onlineParser.js": -/*!*****************************************************************!*\ - !*** ../../graphql-language-service/esm/parser/onlineParser.js ***! - \*****************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = onlineParser; -var _Rules = __webpack_require__(/*! ./Rules */ "../../graphql-language-service/esm/parser/Rules.js"); -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -function onlineParser() { - let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { - eatWhitespace: stream => stream.eatWhile(_Rules.isIgnored), - lexRules: _Rules.LexRules, - parseRules: _Rules.ParseRules, - editorConfig: {} - }; - return { - startState() { - const initialState = { - level: 0, - step: 0, - name: null, - kind: null, - type: null, - rule: null, - needsSeparator: false, - prevState: null - }; - pushRule(options.parseRules, initialState, _graphql.Kind.DOCUMENT); - return initialState; - }, - token(stream, state) { - return getToken(stream, state, options); - } - }; -} -function getToken(stream, state, options) { - var _a; - if (state.inBlockstring) { - if (stream.match(/.*"""/)) { - state.inBlockstring = false; - return 'string'; - } - stream.skipToEnd(); - return 'string'; - } - const { - lexRules, - parseRules, - eatWhitespace, - editorConfig - } = options; - if (state.rule && state.rule.length === 0) { - popRule(state); - } else if (state.needsAdvance) { - state.needsAdvance = false; - advanceRule(state, true); - } - if (stream.sol()) { - const tabSize = (editorConfig === null || editorConfig === void 0 ? void 0 : editorConfig.tabSize) || 2; - state.indentLevel = Math.floor(stream.indentation() / tabSize); - } - if (eatWhitespace(stream)) { - return 'ws'; - } - const token = lex(lexRules, stream); - if (!token) { - const matchedSomething = stream.match(/\S+/); - if (!matchedSomething) { - stream.match(/\s/); - } - pushRule(SpecialParseRules, state, 'Invalid'); - return 'invalidchar'; - } - if (token.kind === 'Comment') { - pushRule(SpecialParseRules, state, 'Comment'); - return 'comment'; - } - const backupState = assign({}, state); - if (token.kind === 'Punctuation') { - if (/^[{([]/.test(token.value)) { - if (state.indentLevel !== undefined) { - state.levels = (state.levels || []).concat(state.indentLevel + 1); - } - } else if (/^[})\]]/.test(token.value)) { - const levels = state.levels = (state.levels || []).slice(0, -1); - if (state.indentLevel && levels.length > 0 && levels.at(-1) < state.indentLevel) { - state.indentLevel = levels.at(-1); - } - } - } - while (state.rule) { - let expected = typeof state.rule === 'function' ? state.step === 0 ? state.rule(token, stream) : null : state.rule[state.step]; - if (state.needsSeparator) { - expected = expected === null || expected === void 0 ? void 0 : expected.separator; - } - if (expected) { - if (expected.ofRule) { - expected = expected.ofRule; - } - if (typeof expected === 'string') { - pushRule(parseRules, state, expected); - continue; - } - if ((_a = expected.match) === null || _a === void 0 ? void 0 : _a.call(expected, token)) { - if (expected.update) { - expected.update(state, token); - } - if (token.kind === 'Punctuation') { - advanceRule(state, true); - } else { - state.needsAdvance = true; - } - return expected.style; - } - } - unsuccessful(state); - } - assign(state, backupState); - pushRule(SpecialParseRules, state, 'Invalid'); - return 'invalidchar'; -} -function assign(to, from) { - const keys = Object.keys(from); - for (let i = 0; i < keys.length; i++) { - to[keys[i]] = from[keys[i]]; - } - return to; -} -const SpecialParseRules = { - Invalid: [], - Comment: [] -}; -function pushRule(rules, state, ruleKind) { - if (!rules[ruleKind]) { - throw new TypeError('Unknown rule: ' + ruleKind); - } - state.prevState = Object.assign({}, state); - state.kind = ruleKind; - state.name = null; - state.type = null; - state.rule = rules[ruleKind]; - state.step = 0; - state.needsSeparator = false; -} -function popRule(state) { - if (!state.prevState) { - return; - } - state.kind = state.prevState.kind; - state.name = state.prevState.name; - state.type = state.prevState.type; - state.rule = state.prevState.rule; - state.step = state.prevState.step; - state.needsSeparator = state.prevState.needsSeparator; - state.prevState = state.prevState.prevState; -} -function advanceRule(state, successful) { - var _a; - if (isList(state) && state.rule) { - const step = state.rule[state.step]; - if (step.separator) { - const { - separator - } = step; - state.needsSeparator = !state.needsSeparator; - if (!state.needsSeparator && separator.ofRule) { - return; - } - } - if (successful) { - return; - } - } - state.needsSeparator = false; - state.step++; - while (state.rule && !(Array.isArray(state.rule) && state.step < state.rule.length)) { - popRule(state); - if (state.rule) { - if (isList(state)) { - if ((_a = state.rule) === null || _a === void 0 ? void 0 : _a[state.step].separator) { - state.needsSeparator = !state.needsSeparator; - } - } else { - state.needsSeparator = false; - state.step++; - } - } - } -} -function isList(state) { - const step = Array.isArray(state.rule) && typeof state.rule[state.step] !== 'string' && state.rule[state.step]; - return step && step.isList; -} -function unsuccessful(state) { - while (state.rule && !(Array.isArray(state.rule) && state.rule[state.step].ofRule)) { - popRule(state); - } - if (state.rule) { - advanceRule(state, false); - } -} -function lex(lexRules, stream) { - const kinds = Object.keys(lexRules); - for (let i = 0; i < kinds.length; i++) { - const match = stream.match(lexRules[kinds[i]]); - if (match && match instanceof Array) { - return { - kind: kinds[i], - value: match[0] - }; - } - } -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/parser/types.js": -/*!**********************************************************!*\ - !*** ../../graphql-language-service/esm/parser/types.js ***! - \**********************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.RuleKinds = exports.AdditionalRuleKinds = void 0; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -const AdditionalRuleKinds = { - ALIASED_FIELD: 'AliasedField', - ARGUMENTS: 'Arguments', - SHORT_QUERY: 'ShortQuery', - QUERY: 'Query', - MUTATION: 'Mutation', - SUBSCRIPTION: 'Subscription', - TYPE_CONDITION: 'TypeCondition', - INVALID: 'Invalid', - COMMENT: 'Comment', - SCHEMA_DEF: 'SchemaDef', - SCALAR_DEF: 'ScalarDef', - OBJECT_TYPE_DEF: 'ObjectTypeDef', - OBJECT_VALUE: 'ObjectValue', - LIST_VALUE: 'ListValue', - INTERFACE_DEF: 'InterfaceDef', - UNION_DEF: 'UnionDef', - ENUM_DEF: 'EnumDef', - ENUM_VALUE: 'EnumValue', - FIELD_DEF: 'FieldDef', - INPUT_DEF: 'InputDef', - INPUT_VALUE_DEF: 'InputValueDef', - ARGUMENTS_DEF: 'ArgumentsDef', - EXTEND_DEF: 'ExtendDef', - EXTENSION_DEFINITION: 'ExtensionDefinition', - DIRECTIVE_DEF: 'DirectiveDef', - IMPLEMENTS: 'Implements', - VARIABLE_DEFINITIONS: 'VariableDefinitions', - TYPE: 'Type' -}; -exports.AdditionalRuleKinds = AdditionalRuleKinds; -const RuleKinds = Object.assign(Object.assign({}, _graphql.Kind), AdditionalRuleKinds); -exports.RuleKinds = RuleKinds; - -/***/ }), - -/***/ "../../graphql-language-service/esm/types.js": -/*!***************************************************!*\ - !*** ../../graphql-language-service/esm/types.js ***! - \***************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.FileChangeTypeKind = exports.CompletionItemKind = void 0; -Object.defineProperty(exports, "InsertTextFormat", ({ - enumerable: true, - get: function () { - return _vscodeLanguageserverTypes.InsertTextFormat; - } -})); -var _vscodeLanguageserverTypes = __webpack_require__(/*! vscode-languageserver-types */ "../../../node_modules/vscode-languageserver-types/lib/esm/main.js"); -const FileChangeTypeKind = { - Created: 1, - Changed: 2, - Deleted: 3 -}; -exports.FileChangeTypeKind = FileChangeTypeKind; -var CompletionItemKind; -exports.CompletionItemKind = CompletionItemKind; -(function (CompletionItemKind) { - CompletionItemKind.Text = 1; - CompletionItemKind.Method = 2; - CompletionItemKind.Function = 3; - CompletionItemKind.Constructor = 4; - CompletionItemKind.Field = 5; - CompletionItemKind.Variable = 6; - CompletionItemKind.Class = 7; - CompletionItemKind.Interface = 8; - CompletionItemKind.Module = 9; - CompletionItemKind.Property = 10; - CompletionItemKind.Unit = 11; - CompletionItemKind.Value = 12; - CompletionItemKind.Enum = 13; - CompletionItemKind.Keyword = 14; - CompletionItemKind.Snippet = 15; - CompletionItemKind.Color = 16; - CompletionItemKind.File = 17; - CompletionItemKind.Reference = 18; - CompletionItemKind.Folder = 19; - CompletionItemKind.EnumMember = 20; - CompletionItemKind.Constant = 21; - CompletionItemKind.Struct = 22; - CompletionItemKind.Event = 23; - CompletionItemKind.Operator = 24; - CompletionItemKind.TypeParameter = 25; -})(CompletionItemKind || (exports.CompletionItemKind = CompletionItemKind = {})); - -/***/ }), - -/***/ "../../graphql-language-service/esm/utils/Range.js": -/*!*********************************************************!*\ - !*** ../../graphql-language-service/esm/utils/Range.js ***! - \*********************************************************/ -/***/ (function(__unused_webpack_module, exports) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.Range = exports.Position = void 0; -exports.locToRange = locToRange; -exports.offsetToPosition = offsetToPosition; -class Range { - constructor(start, end) { - this.containsPosition = position => { - if (this.start.line === position.line) { - return this.start.character <= position.character; - } - if (this.end.line === position.line) { - return this.end.character >= position.character; - } - return this.start.line <= position.line && this.end.line >= position.line; - }; - this.start = start; - this.end = end; - } - setStart(line, character) { - this.start = new Position(line, character); - } - setEnd(line, character) { - this.end = new Position(line, character); - } -} -exports.Range = Range; -class Position { - constructor(line, character) { - this.lessThanOrEqualTo = position => this.line < position.line || this.line === position.line && this.character <= position.character; - this.line = line; - this.character = character; - } - setLine(line) { - this.line = line; - } - setCharacter(character) { - this.character = character; - } -} -exports.Position = Position; -function offsetToPosition(text, loc) { - const EOL = '\n'; - const buf = text.slice(0, loc); - const lines = buf.split(EOL).length - 1; - const lastLineIndex = buf.lastIndexOf(EOL); - return new Position(lines, loc - lastLineIndex - 1); -} -function locToRange(text, loc) { - const start = offsetToPosition(text, loc.start); - const end = offsetToPosition(text, loc.end); - return new Range(start, end); -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/utils/collectVariables.js": -/*!********************************************************************!*\ - !*** ../../graphql-language-service/esm/utils/collectVariables.js ***! - \********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.collectVariables = collectVariables; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -function collectVariables(schema, documentAST) { - const variableToType = Object.create(null); - for (const definition of documentAST.definitions) { - if (definition.kind === 'OperationDefinition') { - const { - variableDefinitions - } = definition; - if (variableDefinitions) { - for (const { - variable, - type - } of variableDefinitions) { - const inputType = (0, _graphql.typeFromAST)(schema, type); - if (inputType) { - variableToType[variable.name.value] = inputType; - } else if (type.kind === _graphql.Kind.NAMED_TYPE && type.name.value === 'Float') { - variableToType[variable.name.value] = _graphql.GraphQLFloat; - } - } - } - } - } - return variableToType; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/utils/fragmentDependencies.js": -/*!************************************************************************!*\ - !*** ../../graphql-language-service/esm/utils/fragmentDependencies.js ***! - \************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getFragmentDependenciesForAST = exports.getFragmentDependencies = void 0; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -var _nullthrows = _interopRequireDefault(__webpack_require__(/*! nullthrows */ "../../../node_modules/nullthrows/nullthrows.js")); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const getFragmentDependencies = (operationString, fragmentDefinitions) => { - if (!fragmentDefinitions) { - return []; - } - let parsedOperation; - try { - parsedOperation = (0, _graphql.parse)(operationString); - } catch (_a) { - return []; - } - return getFragmentDependenciesForAST(parsedOperation, fragmentDefinitions); -}; -exports.getFragmentDependencies = getFragmentDependencies; -const getFragmentDependenciesForAST = (parsedOperation, fragmentDefinitions) => { - if (!fragmentDefinitions) { - return []; - } - const existingFrags = new Map(); - const referencedFragNames = new Set(); - (0, _graphql.visit)(parsedOperation, { - FragmentDefinition(node) { - existingFrags.set(node.name.value, true); - }, - FragmentSpread(node) { - if (!referencedFragNames.has(node.name.value)) { - referencedFragNames.add(node.name.value); - } - } - }); - const asts = new Set(); - for (const name of referencedFragNames) { - if (!existingFrags.has(name) && fragmentDefinitions.has(name)) { - asts.add((0, _nullthrows.default)(fragmentDefinitions.get(name))); - } - } - const referencedFragments = []; - for (const ast of asts) { - (0, _graphql.visit)(ast, { - FragmentSpread(node) { - if (!referencedFragNames.has(node.name.value) && fragmentDefinitions.get(node.name.value)) { - asts.add((0, _nullthrows.default)(fragmentDefinitions.get(node.name.value))); - referencedFragNames.add(node.name.value); - } - } - }); - if (!existingFrags.has(ast.name.value)) { - referencedFragments.push(ast); - } - } - return referencedFragments; -}; -exports.getFragmentDependenciesForAST = getFragmentDependenciesForAST; - -/***/ }), - -/***/ "../../graphql-language-service/esm/utils/getASTNodeAtPosition.js": -/*!************************************************************************!*\ - !*** ../../graphql-language-service/esm/utils/getASTNodeAtPosition.js ***! - \************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.getASTNodeAtPosition = getASTNodeAtPosition; -exports.pointToOffset = pointToOffset; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -function getASTNodeAtPosition(query, ast, point) { - const offset = pointToOffset(query, point); - let nodeContainingPosition; - (0, _graphql.visit)(ast, { - enter(node) { - if (node.kind !== 'Name' && node.loc && node.loc.start <= offset && offset <= node.loc.end) { - nodeContainingPosition = node; - } else { - return false; - } - }, - leave(node) { - if (node.loc && node.loc.start <= offset && offset <= node.loc.end) { - return false; - } - } - }); - return nodeContainingPosition; -} -function pointToOffset(text, point) { - const linesUntilPosition = text.split('\n').slice(0, point.line); - return point.character + linesUntilPosition.map(line => line.length + 1).reduce((a, b) => a + b, 0); -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/utils/getOperationFacts.js": -/*!*********************************************************************!*\ - !*** ../../graphql-language-service/esm/utils/getOperationFacts.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = getOperationFacts; -exports.getOperationASTFacts = getOperationASTFacts; -exports.getQueryFacts = void 0; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -var _collectVariables = __webpack_require__(/*! ./collectVariables */ "../../graphql-language-service/esm/utils/collectVariables.js"); -function getOperationASTFacts(documentAST, schema) { - const variableToType = schema ? (0, _collectVariables.collectVariables)(schema, documentAST) : undefined; - const operations = []; - (0, _graphql.visit)(documentAST, { - OperationDefinition(node) { - operations.push(node); - } - }); - return { - variableToType, - operations - }; -} -function getOperationFacts(schema, documentString) { - if (!documentString) { - return; - } - try { - const documentAST = (0, _graphql.parse)(documentString); - return Object.assign(Object.assign({}, getOperationASTFacts(documentAST, schema)), { - documentAST - }); - } catch (_a) { - return; - } -} -const getQueryFacts = getOperationFacts; -exports.getQueryFacts = getQueryFacts; - -/***/ }), - -/***/ "../../graphql-language-service/esm/utils/getVariablesJSONSchema.js": -/*!**************************************************************************!*\ - !*** ../../graphql-language-service/esm/utils/getVariablesJSONSchema.js ***! - \**************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.defaultJSONSchemaOptions = void 0; -exports.getVariablesJSONSchema = getVariablesJSONSchema; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -const defaultJSONSchemaOptions = { - useMarkdownDescription: false -}; -exports.defaultJSONSchemaOptions = defaultJSONSchemaOptions; -function text(into, newText) { - into.push(newText); -} -function renderType(into, t) { - if ((0, _graphql.isNonNullType)(t)) { - renderType(into, t.ofType); - text(into, '!'); - } else if ((0, _graphql.isListType)(t)) { - text(into, '['); - renderType(into, t.ofType); - text(into, ']'); - } else { - text(into, t.name); - } -} -function renderDefinitionDescription(t, useMarkdown, description) { - const into = []; - const type = 'type' in t ? t.type : t; - if ('type' in t && t.description) { - text(into, t.description); - text(into, '\n\n'); - } - text(into, renderTypeToString(type, useMarkdown)); - if (description) { - text(into, '\n'); - text(into, description); - } else if (!(0, _graphql.isScalarType)(type) && 'description' in type && type.description) { - text(into, '\n'); - text(into, type.description); - } else if ('ofType' in type && !(0, _graphql.isScalarType)(type.ofType) && 'description' in type.ofType && type.ofType.description) { - text(into, '\n'); - text(into, type.ofType.description); - } - return into.join(''); -} -function renderTypeToString(t, useMarkdown) { - const into = []; - if (useMarkdown) { - text(into, '```graphql\n'); - } - renderType(into, t); - if (useMarkdown) { - text(into, '\n```'); - } - return into.join(''); -} -const defaultScalarTypesMap = { - Int: { - type: 'integer' - }, - String: { - type: 'string' - }, - Float: { - type: 'number' - }, - ID: { - type: 'string' - }, - Boolean: { - type: 'boolean' - }, - DateTime: { - type: 'string' - } -}; -class Marker { - constructor() { - this.set = new Set(); - } - mark(name) { - if (this.set.has(name)) { - return false; - } - this.set.add(name); - return true; - } -} -function getJSONSchemaFromGraphQLType(fieldOrType, options) { - var _a, _b; - let definition = Object.create(null); - const definitions = Object.create(null); - const isField = ('type' in fieldOrType); - const type = isField ? fieldOrType.type : fieldOrType; - const baseType = (0, _graphql.isNonNullType)(type) ? type.ofType : type; - const required = (0, _graphql.isNonNullType)(type); - if ((0, _graphql.isScalarType)(baseType)) { - if ((_a = options === null || options === void 0 ? void 0 : options.scalarSchemas) === null || _a === void 0 ? void 0 : _a[baseType.name]) { - definition = JSON.parse(JSON.stringify(options.scalarSchemas[baseType.name])); - } else { - definition.type = ['string', 'number', 'boolean', 'integer']; - } - if (!required) { - if (Array.isArray(definition.type)) { - definition.type.push('null'); - } else if (definition.type) { - definition.type = [definition.type, 'null']; - } else if (definition.enum) { - definition.enum.push(null); - } else if (definition.oneOf) { - definition.oneOf.push({ - type: 'null' - }); - } else { - definition = { - oneOf: [definition, { - type: 'null' - }] - }; - } - } - } else if ((0, _graphql.isEnumType)(baseType)) { - definition.enum = baseType.getValues().map(val => val.name); - if (!required) { - definition.enum.push(null); - } - } else if ((0, _graphql.isListType)(baseType)) { - if (required) { - definition.type = 'array'; - } else { - definition.type = ['array', 'null']; - } - const { - definition: def, - definitions: defs - } = getJSONSchemaFromGraphQLType(baseType.ofType, options); - definition.items = def; - if (defs) { - for (const defName of Object.keys(defs)) { - definitions[defName] = defs[defName]; - } - } - } else if ((0, _graphql.isInputObjectType)(baseType)) { - if (required) { - definition.$ref = `#/definitions/${baseType.name}`; - } else { - definition.oneOf = [{ - $ref: `#/definitions/${baseType.name}` - }, { - type: 'null' - }]; - } - if ((_b = options === null || options === void 0 ? void 0 : options.definitionMarker) === null || _b === void 0 ? void 0 : _b.mark(baseType.name)) { - const fields = baseType.getFields(); - const fieldDef = { - type: 'object', - properties: {}, - required: [] - }; - fieldDef.description = renderDefinitionDescription(baseType); - if (options === null || options === void 0 ? void 0 : options.useMarkdownDescription) { - fieldDef.markdownDescription = renderDefinitionDescription(baseType, true); - } - for (const fieldName of Object.keys(fields)) { - const field = fields[fieldName]; - const { - required: fieldRequired, - definition: fieldDefinition, - definitions: typeDefinitions - } = getJSONSchemaFromGraphQLType(field, options); - fieldDef.properties[fieldName] = fieldDefinition; - if (fieldRequired) { - fieldDef.required.push(fieldName); - } - if (typeDefinitions) { - for (const [defName, value] of Object.entries(typeDefinitions)) { - definitions[defName] = value; - } - } - } - definitions[baseType.name] = fieldDef; - } - } - if ('defaultValue' in fieldOrType && fieldOrType.defaultValue !== undefined) { - definition.default = fieldOrType.defaultValue; - } - const { - description - } = definition; - definition.description = renderDefinitionDescription(fieldOrType, false, description); - if (options === null || options === void 0 ? void 0 : options.useMarkdownDescription) { - definition.markdownDescription = renderDefinitionDescription(fieldOrType, true, description); - } - return { - required, - definition, - definitions - }; -} -function getVariablesJSONSchema(variableToType, options) { - var _a; - const jsonSchema = { - $schema: 'http://json-schema.org/draft-04/schema', - type: 'object', - properties: {}, - required: [] - }; - const runtimeOptions = Object.assign(Object.assign({}, options), { - definitionMarker: new Marker(), - scalarSchemas: Object.assign(Object.assign({}, defaultScalarTypesMap), options === null || options === void 0 ? void 0 : options.scalarSchemas) - }); - if (variableToType) { - for (const [variableName, type] of Object.entries(variableToType)) { - const { - definition, - required, - definitions - } = getJSONSchemaFromGraphQLType(type, runtimeOptions); - jsonSchema.properties[variableName] = definition; - if (required) { - (_a = jsonSchema.required) === null || _a === void 0 ? void 0 : _a.push(variableName); - } - if (definitions) { - jsonSchema.definitions = Object.assign(Object.assign({}, jsonSchema === null || jsonSchema === void 0 ? void 0 : jsonSchema.definitions), definitions); - } - } - } - return jsonSchema; -} - -/***/ }), - -/***/ "../../graphql-language-service/esm/utils/index.js": -/*!*********************************************************!*\ - !*** ../../graphql-language-service/esm/utils/index.js ***! - \*********************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "Position", ({ - enumerable: true, - get: function () { - return _Range.Position; - } -})); -Object.defineProperty(exports, "Range", ({ - enumerable: true, - get: function () { - return _Range.Range; - } -})); -Object.defineProperty(exports, "collectVariables", ({ - enumerable: true, - get: function () { - return _collectVariables.collectVariables; - } -})); -Object.defineProperty(exports, "getASTNodeAtPosition", ({ - enumerable: true, - get: function () { - return _getASTNodeAtPosition.getASTNodeAtPosition; - } -})); -Object.defineProperty(exports, "getFragmentDependencies", ({ - enumerable: true, - get: function () { - return _fragmentDependencies.getFragmentDependencies; - } -})); -Object.defineProperty(exports, "getFragmentDependenciesForAST", ({ - enumerable: true, - get: function () { - return _fragmentDependencies.getFragmentDependenciesForAST; - } -})); -Object.defineProperty(exports, "getOperationASTFacts", ({ - enumerable: true, - get: function () { - return _getOperationFacts.getOperationASTFacts; - } -})); -Object.defineProperty(exports, "getOperationFacts", ({ - enumerable: true, - get: function () { - return _getOperationFacts.default; - } -})); -Object.defineProperty(exports, "getQueryFacts", ({ - enumerable: true, - get: function () { - return _getOperationFacts.getQueryFacts; - } -})); -Object.defineProperty(exports, "getVariablesJSONSchema", ({ - enumerable: true, - get: function () { - return _getVariablesJSONSchema.getVariablesJSONSchema; - } -})); -Object.defineProperty(exports, "locToRange", ({ - enumerable: true, - get: function () { - return _Range.locToRange; - } -})); -Object.defineProperty(exports, "offsetToPosition", ({ - enumerable: true, - get: function () { - return _Range.offsetToPosition; - } -})); -Object.defineProperty(exports, "pointToOffset", ({ - enumerable: true, - get: function () { - return _getASTNodeAtPosition.pointToOffset; - } -})); -Object.defineProperty(exports, "validateWithCustomRules", ({ - enumerable: true, - get: function () { - return _validateWithCustomRules.validateWithCustomRules; - } -})); -var _fragmentDependencies = __webpack_require__(/*! ./fragmentDependencies */ "../../graphql-language-service/esm/utils/fragmentDependencies.js"); -var _getVariablesJSONSchema = __webpack_require__(/*! ./getVariablesJSONSchema */ "../../graphql-language-service/esm/utils/getVariablesJSONSchema.js"); -var _getASTNodeAtPosition = __webpack_require__(/*! ./getASTNodeAtPosition */ "../../graphql-language-service/esm/utils/getASTNodeAtPosition.js"); -var _Range = __webpack_require__(/*! ./Range */ "../../graphql-language-service/esm/utils/Range.js"); -var _validateWithCustomRules = __webpack_require__(/*! ./validateWithCustomRules */ "../../graphql-language-service/esm/utils/validateWithCustomRules.js"); -var _collectVariables = __webpack_require__(/*! ./collectVariables */ "../../graphql-language-service/esm/utils/collectVariables.js"); -var _getOperationFacts = _interopRequireWildcard(__webpack_require__(/*! ./getOperationFacts */ "../../graphql-language-service/esm/utils/getOperationFacts.js")); -function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } -function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } - -/***/ }), - -/***/ "../../graphql-language-service/esm/utils/validateWithCustomRules.js": -/*!***************************************************************************!*\ - !*** ../../graphql-language-service/esm/utils/validateWithCustomRules.js ***! - \***************************************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.validateWithCustomRules = validateWithCustomRules; -var _graphql = __webpack_require__(/*! graphql */ "../../../node_modules/graphql/index.mjs"); -const specifiedSDLRules = [_graphql.LoneSchemaDefinitionRule, _graphql.UniqueOperationTypesRule, _graphql.UniqueTypeNamesRule, _graphql.UniqueEnumValueNamesRule, _graphql.UniqueFieldDefinitionNamesRule, _graphql.UniqueDirectiveNamesRule, _graphql.KnownTypeNamesRule, _graphql.KnownDirectivesRule, _graphql.UniqueDirectivesPerLocationRule, _graphql.PossibleTypeExtensionsRule, _graphql.UniqueArgumentNamesRule, _graphql.UniqueInputFieldNamesRule]; -function validateWithCustomRules(schema, ast, customRules, isRelayCompatMode, isSchemaDocument) { - const rules = _graphql.specifiedRules.filter(rule => { - if (rule === _graphql.NoUnusedFragmentsRule || rule === _graphql.ExecutableDefinitionsRule) { - return false; - } - if (isRelayCompatMode && rule === _graphql.KnownFragmentNamesRule) { - return false; - } - return true; - }); - if (customRules) { - Array.prototype.push.apply(rules, customRules); - } - if (isSchemaDocument) { - Array.prototype.push.apply(rules, specifiedSDLRules); - } - const errors = (0, _graphql.validate)(schema, ast, rules); - return errors.filter(error => { - if (error.message.includes('Unknown directive') && error.nodes) { - const node = error.nodes[0]; - if (node && node.kind === _graphql.Kind.DIRECTIVE) { - const name = node.name.value; - if (name === 'arguments' || name === 'argumentDefinitions') { - return false; - } - } - } - return true; - }); -} - -/***/ }), - -/***/ "./style.css": -/*!*******************!*\ - !*** ./style.css ***! - \*******************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "../../graphiql-react/dist/style.css": -/*!*******************************************!*\ - !*** ../../graphiql-react/dist/style.css ***! - \*******************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "../../graphiql-react/font/fira-code.css": -/*!***********************************************!*\ - !*** ../../graphiql-react/font/fira-code.css ***! - \***********************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "../../graphiql-react/font/roboto.css": -/*!********************************************!*\ - !*** ../../graphiql-react/font/roboto.css ***! - \********************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "react": -/*!************************!*\ - !*** external "React" ***! - \************************/ -/***/ (function(module) { - -module.exports = window["React"]; - -/***/ }), - -/***/ "react-dom": -/*!***************************!*\ - !*** external "ReactDOM" ***! - \***************************/ -/***/ (function(module) { - -module.exports = window["ReactDOM"]; - -/***/ }), - -/***/ "../../../node_modules/@headlessui/react/dist/headlessui.dev.cjs": -/*!***********************************************************************!*\ - !*** ../../../node_modules/@headlessui/react/dist/headlessui.dev.cjs ***! - \***********************************************************************/ -/***/ (function(module, __unused_webpack_exports, __webpack_require__) { - - -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var __publicField = (obj, key, value) => { - __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; - -// src/index.ts -var src_exports = {}; -__export(src_exports, { - Combobox: () => Combobox, - Dialog: () => Dialog, - Disclosure: () => Disclosure, - FocusTrap: () => FocusTrap, - Listbox: () => Listbox, - Menu: () => Menu, - Popover: () => Popover, - Portal: () => Portal, - RadioGroup: () => RadioGroup, - Switch: () => Switch, - Tab: () => Tab, - Transition: () => Transition -}); -module.exports = __toCommonJS(src_exports); - -// src/components/combobox/combobox.tsx -var import_react19 = __toESM(__webpack_require__(/*! react */ "react"), 1); - -// src/hooks/use-computed.ts -var import_react3 = __webpack_require__(/*! react */ "react"); - -// src/hooks/use-iso-morphic-effect.ts -var import_react = __webpack_require__(/*! react */ "react"); - -// src/utils/env.ts -var Env = class { - constructor() { - __publicField(this, "current", this.detect()); - __publicField(this, "handoffState", "pending"); - __publicField(this, "currentId", 0); - } - set(env2) { - if (this.current === env2) - return; - this.handoffState = "pending"; - this.currentId = 0; - this.current = env2; - } - reset() { - this.set(this.detect()); - } - nextId() { - return ++this.currentId; - } - get isServer() { - return this.current === "server"; - } - get isClient() { - return this.current === "client"; - } - detect() { - if (typeof window === "undefined" || typeof document === "undefined") { - return "server"; - } - return "client"; - } - handoff() { - if (this.handoffState === "pending") { - this.handoffState = "complete"; - } - } - get isHandoffComplete() { - return this.handoffState === "complete"; - } -}; -var env = new Env(); - -// src/hooks/use-iso-morphic-effect.ts -var useIsoMorphicEffect = (effect, deps) => { - if (env.isServer) { - (0, import_react.useEffect)(effect, deps); - } else { - (0, import_react.useLayoutEffect)(effect, deps); - } -}; - -// src/hooks/use-latest-value.ts -var import_react2 = __webpack_require__(/*! react */ "react"); -function useLatestValue(value) { - let cache = (0, import_react2.useRef)(value); - useIsoMorphicEffect(() => { - cache.current = value; - }, [value]); - return cache; -} - -// src/hooks/use-computed.ts -function useComputed(cb, dependencies) { - let [value, setValue] = (0, import_react3.useState)(cb); - let cbRef = useLatestValue(cb); - useIsoMorphicEffect(() => setValue(cbRef.current), [cbRef, setValue, ...dependencies]); - return value; -} - -// src/hooks/use-disposables.ts -var import_react4 = __webpack_require__(/*! react */ "react"); - -// src/utils/micro-task.ts -function microTask(cb) { - if (typeof queueMicrotask === "function") { - queueMicrotask(cb); - } else { - Promise.resolve().then(cb).catch( - (e) => setTimeout(() => { - throw e; - }) - ); - } -} - -// src/utils/disposables.ts -function disposables() { - let _disposables = []; - let api = { - addEventListener(element, name, listener, options) { - element.addEventListener(name, listener, options); - return api.add(() => element.removeEventListener(name, listener, options)); - }, - requestAnimationFrame(...args) { - let raf = requestAnimationFrame(...args); - return api.add(() => cancelAnimationFrame(raf)); - }, - nextFrame(...args) { - return api.requestAnimationFrame(() => { - return api.requestAnimationFrame(...args); - }); - }, - setTimeout(...args) { - let timer = setTimeout(...args); - return api.add(() => clearTimeout(timer)); - }, - microTask(...args) { - let task = { current: true }; - microTask(() => { - if (task.current) { - args[0](); - } - }); - return api.add(() => { - task.current = false; - }); - }, - style(node, property, value) { - let previous = node.style.getPropertyValue(property); - Object.assign(node.style, { [property]: value }); - return this.add(() => { - Object.assign(node.style, { [property]: previous }); - }); - }, - group(cb) { - let d = disposables(); - cb(d); - return this.add(() => d.dispose()); - }, - add(cb) { - _disposables.push(cb); - return () => { - let idx = _disposables.indexOf(cb); - if (idx >= 0) { - for (let dispose of _disposables.splice(idx, 1)) { - dispose(); - } - } - }; - }, - dispose() { - for (let dispose of _disposables.splice(0)) { - dispose(); - } - } - }; - return api; -} - -// src/hooks/use-disposables.ts -function useDisposables() { - let [d] = (0, import_react4.useState)(disposables); - (0, import_react4.useEffect)(() => () => d.dispose(), [d]); - return d; -} - -// src/hooks/use-event.ts -var import_react5 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var useEvent = ( - // TODO: Add React.useEvent ?? once the useEvent hook is available - function useEvent2(cb) { - let cache = useLatestValue(cb); - return import_react5.default.useCallback((...args) => cache.current(...args), [cache]); - } -); - -// src/hooks/use-id.ts -var import_react7 = __toESM(__webpack_require__(/*! react */ "react"), 1); - -// src/hooks/use-server-handoff-complete.ts -var import_react6 = __webpack_require__(/*! react */ "react"); -function useServerHandoffComplete() { - let [complete, setComplete] = (0, import_react6.useState)(env.isHandoffComplete); - if (complete && env.isHandoffComplete === false) { - setComplete(false); - } - (0, import_react6.useEffect)(() => { - if (complete === true) - return; - setComplete(true); - }, [complete]); - (0, import_react6.useEffect)(() => env.handoff(), []); - return complete; -} - -// src/hooks/use-id.ts -var _a; -var useId = ( - // Prefer React's `useId` if it's available. - // @ts-expect-error - `useId` doesn't exist in React < 18. - (_a = import_react7.default.useId) != null ? _a : function useId2() { - let ready = useServerHandoffComplete(); - let [id, setId] = import_react7.default.useState(ready ? () => env.nextId() : null); - useIsoMorphicEffect(() => { - if (id === null) - setId(env.nextId()); - }, [id]); - return id != null ? "" + id : void 0; - } -); - -// src/hooks/use-outside-click.ts -var import_react10 = __webpack_require__(/*! react */ "react"); - -// src/utils/match.ts -function match(value, lookup, ...args) { - if (value in lookup) { - let returnValue = lookup[value]; - return typeof returnValue === "function" ? returnValue(...args) : returnValue; - } - let error = new Error( - `Tried to handle "${value}" but there is no handler defined. Only defined handlers are: ${Object.keys( - lookup - ).map((key) => `"${key}"`).join(", ")}.` - ); - if (Error.captureStackTrace) - Error.captureStackTrace(error, match); - throw error; -} - -// src/utils/owner.ts -function getOwnerDocument(element) { - if (env.isServer) - return null; - if (element instanceof Node) - return element.ownerDocument; - if (element == null ? void 0 : element.hasOwnProperty("current")) { - if (element.current instanceof Node) - return element.current.ownerDocument; - } - return document; -} - -// src/utils/focus-management.ts -var focusableSelector = [ - "[contentEditable=true]", - "[tabindex]", - "a[href]", - "area[href]", - "button:not([disabled])", - "iframe", - "input:not([disabled])", - "select:not([disabled])", - "textarea:not([disabled])" -].map( - false ? ( - // TODO: Remove this once JSDOM fixes the issue where an element that is - // "hidden" can be the document.activeElement, because this is not possible - // in real browsers. - 0 - ) : (selector) => `${selector}:not([tabindex='-1'])` -).join(","); -function getFocusableElements(container = document.body) { - if (container == null) - return []; - return Array.from(container.querySelectorAll(focusableSelector)).sort( - // We want to move `tabIndex={0}` to the end of the list, this is what the browser does as well. - (a, z) => Math.sign((a.tabIndex || Number.MAX_SAFE_INTEGER) - (z.tabIndex || Number.MAX_SAFE_INTEGER)) - ); -} -function isFocusableElement(element, mode = 0 /* Strict */) { - var _a3; - if (element === ((_a3 = getOwnerDocument(element)) == null ? void 0 : _a3.body)) - return false; - return match(mode, { - [0 /* Strict */]() { - return element.matches(focusableSelector); - }, - [1 /* Loose */]() { - let next = element; - while (next !== null) { - if (next.matches(focusableSelector)) - return true; - next = next.parentElement; - } - return false; - } - }); -} -function restoreFocusIfNecessary(element) { - let ownerDocument = getOwnerDocument(element); - disposables().nextFrame(() => { - if (ownerDocument && !isFocusableElement(ownerDocument.activeElement, 0 /* Strict */)) { - focusElement(element); - } - }); -} -if (typeof window !== "undefined" && typeof document !== "undefined") { - document.addEventListener( - "keydown", - (event) => { - if (event.metaKey || event.altKey || event.ctrlKey) { - return; - } - document.documentElement.dataset.headlessuiFocusVisible = ""; - }, - true - ); - document.addEventListener( - "click", - (event) => { - if (event.detail === 1 /* Mouse */) { - delete document.documentElement.dataset.headlessuiFocusVisible; - } else if (event.detail === 0 /* Keyboard */) { - document.documentElement.dataset.headlessuiFocusVisible = ""; - } - }, - true - ); -} -function focusElement(element) { - element == null ? void 0 : element.focus({ preventScroll: true }); -} -var selectableSelector = ["textarea", "input"].join(","); -function isSelectableElement(element) { - var _a3, _b; - return (_b = (_a3 = element == null ? void 0 : element.matches) == null ? void 0 : _a3.call(element, selectableSelector)) != null ? _b : false; -} -function sortByDomNode(nodes, resolveKey = (i) => i) { - return nodes.slice().sort((aItem, zItem) => { - let a = resolveKey(aItem); - let z = resolveKey(zItem); - if (a === null || z === null) - return 0; - let position = a.compareDocumentPosition(z); - if (position & Node.DOCUMENT_POSITION_FOLLOWING) - return -1; - if (position & Node.DOCUMENT_POSITION_PRECEDING) - return 1; - return 0; - }); -} -function focusFrom(current, focus) { - return focusIn(getFocusableElements(), focus, { relativeTo: current }); -} -function focusIn(container, focus, { - sorted = true, - relativeTo = null, - skipElements = [] -} = {}) { - let ownerDocument = Array.isArray(container) ? container.length > 0 ? container[0].ownerDocument : document : container.ownerDocument; - let elements = Array.isArray(container) ? sorted ? sortByDomNode(container) : container : getFocusableElements(container); - if (skipElements.length > 0 && elements.length > 1) { - elements = elements.filter((x) => !skipElements.includes(x)); - } - relativeTo = relativeTo != null ? relativeTo : ownerDocument.activeElement; - let direction = (() => { - if (focus & (1 /* First */ | 4 /* Next */)) - return 1 /* Next */; - if (focus & (2 /* Previous */ | 8 /* Last */)) - return -1 /* Previous */; - throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last"); - })(); - let startIndex = (() => { - if (focus & 1 /* First */) - return 0; - if (focus & 2 /* Previous */) - return Math.max(0, elements.indexOf(relativeTo)) - 1; - if (focus & 4 /* Next */) - return Math.max(0, elements.indexOf(relativeTo)) + 1; - if (focus & 8 /* Last */) - return elements.length - 1; - throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last"); - })(); - let focusOptions = focus & 32 /* NoScroll */ ? { preventScroll: true } : {}; - let offset = 0; - let total = elements.length; - let next = void 0; - do { - if (offset >= total || offset + total <= 0) - return 0 /* Error */; - let nextIdx = startIndex + offset; - if (focus & 16 /* WrapAround */) { - nextIdx = (nextIdx + total) % total; - } else { - if (nextIdx < 0) - return 3 /* Underflow */; - if (nextIdx >= total) - return 1 /* Overflow */; - } - next = elements[nextIdx]; - next == null ? void 0 : next.focus(focusOptions); - offset += direction; - } while (next !== ownerDocument.activeElement); - if (focus & (4 /* Next */ | 2 /* Previous */) && isSelectableElement(next)) { - next.select(); - } - return 2 /* Success */; -} - -// src/hooks/use-document-event.ts -var import_react8 = __webpack_require__(/*! react */ "react"); -function useDocumentEvent(type, listener, options) { - let listenerRef = useLatestValue(listener); - (0, import_react8.useEffect)(() => { - function handler(event) { - listenerRef.current(event); - } - document.addEventListener(type, handler, options); - return () => document.removeEventListener(type, handler, options); - }, [type, options]); -} - -// src/hooks/use-window-event.ts -var import_react9 = __webpack_require__(/*! react */ "react"); -function useWindowEvent(type, listener, options) { - let listenerRef = useLatestValue(listener); - (0, import_react9.useEffect)(() => { - function handler(event) { - listenerRef.current(event); - } - window.addEventListener(type, handler, options); - return () => window.removeEventListener(type, handler, options); - }, [type, options]); -} - -// src/hooks/use-outside-click.ts -function useOutsideClick(containers, cb, enabled = true) { - let enabledRef = (0, import_react10.useRef)(false); - (0, import_react10.useEffect)( - false ? 0 : () => { - requestAnimationFrame(() => { - enabledRef.current = enabled; - }); - }, - [enabled] - ); - function handleOutsideClick(event, resolveTarget) { - if (!enabledRef.current) - return; - if (event.defaultPrevented) - return; - let target = resolveTarget(event); - if (target === null) { - return; - } - if (!target.getRootNode().contains(target)) - return; - let _containers = function resolve(containers2) { - if (typeof containers2 === "function") { - return resolve(containers2()); - } - if (Array.isArray(containers2)) { - return containers2; - } - if (containers2 instanceof Set) { - return containers2; - } - return [containers2]; - }(containers); - for (let container of _containers) { - if (container === null) - continue; - let domNode = container instanceof HTMLElement ? container : container.current; - if (domNode == null ? void 0 : domNode.contains(target)) { - return; - } - if (event.composed && event.composedPath().includes(domNode)) { - return; - } - } - if ( - // This check alllows us to know whether or not we clicked on a "focusable" element like a - // button or an input. This is a backwards compatibility check so that you can open a and click on another which should close Menu A and open Menu B. We might - // revisit that so that you will require 2 clicks instead. - !isFocusableElement(target, 1 /* Loose */) && // This could be improved, but the `Combobox.Button` adds tabIndex={-1} to make it - // unfocusable via the keyboard so that tabbing to the next item from the input doesn't - // first go to the button. - target.tabIndex !== -1 - ) { - event.preventDefault(); - } - return cb(event, target); - } - let initialClickTarget = (0, import_react10.useRef)(null); - useDocumentEvent( - "mousedown", - (event) => { - var _a3, _b; - if (enabledRef.current) { - initialClickTarget.current = ((_b = (_a3 = event.composedPath) == null ? void 0 : _a3.call(event)) == null ? void 0 : _b[0]) || event.target; - } - }, - true - ); - useDocumentEvent( - "click", - (event) => { - if (!initialClickTarget.current) { - return; - } - handleOutsideClick(event, () => { - return initialClickTarget.current; - }); - initialClickTarget.current = null; - }, - // We will use the `capture` phase so that layers in between with `event.stopPropagation()` - // don't "cancel" this outside click check. E.g.: A `Menu` inside a `DialogPanel` if the `Menu` - // is open, and you click outside of it in the `DialogPanel` the `Menu` should close. However, - // the `DialogPanel` has a `onClick(e) { e.stopPropagation() }` which would cancel this. - true - ); - useWindowEvent( - "blur", - (event) => handleOutsideClick( - event, - () => window.document.activeElement instanceof HTMLIFrameElement ? window.document.activeElement : null - ), - true - ); -} - -// src/hooks/use-resolve-button-type.ts -var import_react11 = __webpack_require__(/*! react */ "react"); -function resolveType(props) { - var _a3; - if (props.type) - return props.type; - let tag = (_a3 = props.as) != null ? _a3 : "button"; - if (typeof tag === "string" && tag.toLowerCase() === "button") - return "button"; - return void 0; -} -function useResolveButtonType(props, ref) { - let [type, setType] = (0, import_react11.useState)(() => resolveType(props)); - useIsoMorphicEffect(() => { - setType(resolveType(props)); - }, [props.type, props.as]); - useIsoMorphicEffect(() => { - if (type) - return; - if (!ref.current) - return; - if (ref.current instanceof HTMLButtonElement && !ref.current.hasAttribute("type")) { - setType("button"); - } - }, [type, ref]); - return type; -} - -// src/hooks/use-sync-refs.ts -var import_react12 = __webpack_require__(/*! react */ "react"); -var Optional = Symbol(); -function optionalRef(cb, isOptional = true) { - return Object.assign(cb, { [Optional]: isOptional }); -} -function useSyncRefs(...refs) { - let cache = (0, import_react12.useRef)(refs); - (0, import_react12.useEffect)(() => { - cache.current = refs; - }, [refs]); - let syncRefs = useEvent((value) => { - for (let ref of cache.current) { - if (ref == null) - continue; - if (typeof ref === "function") - ref(value); - else - ref.current = value; - } - }); - return refs.every( - (ref) => ref == null || // @ts-expect-error - (ref == null ? void 0 : ref[Optional]) - ) ? void 0 : syncRefs; -} - -// src/hooks/use-tree-walker.ts -var import_react13 = __webpack_require__(/*! react */ "react"); -function useTreeWalker({ - container, - accept, - walk, - enabled = true -}) { - let acceptRef = (0, import_react13.useRef)(accept); - let walkRef = (0, import_react13.useRef)(walk); - (0, import_react13.useEffect)(() => { - acceptRef.current = accept; - walkRef.current = walk; - }, [accept, walk]); - useIsoMorphicEffect(() => { - if (!container) - return; - if (!enabled) - return; - let ownerDocument = getOwnerDocument(container); - if (!ownerDocument) - return; - let accept2 = acceptRef.current; - let walk2 = walkRef.current; - let acceptNode = Object.assign((node) => accept2(node), { acceptNode: accept2 }); - let walker = ownerDocument.createTreeWalker( - container, - NodeFilter.SHOW_ELEMENT, - acceptNode, - // @ts-expect-error This `false` is a simple small fix for older browsers - false - ); - while (walker.nextNode()) - walk2(walker.currentNode); - }, [container, enabled, acceptRef, walkRef]); -} - -// src/utils/calculate-active-index.ts -function assertNever(x) { - throw new Error("Unexpected object: " + x); -} -function calculateActiveIndex(action, resolvers) { - let items = resolvers.resolveItems(); - if (items.length <= 0) - return null; - let currentActiveIndex = resolvers.resolveActiveIndex(); - let activeIndex = currentActiveIndex != null ? currentActiveIndex : -1; - let nextActiveIndex = (() => { - switch (action.focus) { - case 0 /* First */: - return items.findIndex((item) => !resolvers.resolveDisabled(item)); - case 1 /* Previous */: { - let idx = items.slice().reverse().findIndex((item, idx2, all) => { - if (activeIndex !== -1 && all.length - idx2 - 1 >= activeIndex) - return false; - return !resolvers.resolveDisabled(item); - }); - if (idx === -1) - return idx; - return items.length - 1 - idx; - } - case 2 /* Next */: - return items.findIndex((item, idx) => { - if (idx <= activeIndex) - return false; - return !resolvers.resolveDisabled(item); - }); - case 3 /* Last */: { - let idx = items.slice().reverse().findIndex((item) => !resolvers.resolveDisabled(item)); - if (idx === -1) - return idx; - return items.length - 1 - idx; - } - case 4 /* Specific */: - return items.findIndex((item) => resolvers.resolveId(item) === action.id); - case 5 /* Nothing */: - return null; - default: - assertNever(action); - } - })(); - return nextActiveIndex === -1 ? currentActiveIndex : nextActiveIndex; -} - -// src/utils/render.ts -var import_react14 = __webpack_require__(/*! react */ "react"); - -// src/utils/class-names.ts -function classNames(...classes) { - return classes.filter(Boolean).join(" "); -} - -// src/utils/render.ts -function render({ - ourProps, - theirProps, - slot, - defaultTag, - features, - visible = true, - name -}) { - let props = mergeProps(theirProps, ourProps); - if (visible) - return _render(props, slot, defaultTag, name); - let featureFlags = features != null ? features : 0 /* None */; - if (featureFlags & 2 /* Static */) { - let { static: isStatic = false, ...rest } = props; - if (isStatic) - return _render(rest, slot, defaultTag, name); - } - if (featureFlags & 1 /* RenderStrategy */) { - let { unmount = true, ...rest } = props; - let strategy = unmount ? 0 /* Unmount */ : 1 /* Hidden */; - return match(strategy, { - [0 /* Unmount */]() { - return null; - }, - [1 /* Hidden */]() { - return _render( - { ...rest, ...{ hidden: true, style: { display: "none" } } }, - slot, - defaultTag, - name - ); - } - }); - } - return _render(props, slot, defaultTag, name); -} -function _render(props, slot = {}, tag, name) { - let { - as: Component = tag, - children, - refName = "ref", - ...rest - } = omit(props, ["unmount", "static"]); - let refRelatedProps = props.ref !== void 0 ? { [refName]: props.ref } : {}; - let resolvedChildren = typeof children === "function" ? children(slot) : children; - if ("className" in rest && rest.className && typeof rest.className === "function") { - rest.className = rest.className(slot); - } - let dataAttributes = {}; - if (slot) { - let exposeState = false; - let states = []; - for (let [k, v] of Object.entries(slot)) { - if (typeof v === "boolean") { - exposeState = true; - } - if (v === true) { - states.push(k); - } - } - if (exposeState) - dataAttributes[`data-headlessui-state`] = states.join(" "); - } - if (Component === import_react14.Fragment) { - if (Object.keys(compact(rest)).length > 0) { - if (!(0, import_react14.isValidElement)(resolvedChildren) || Array.isArray(resolvedChildren) && resolvedChildren.length > 1) { - throw new Error( - [ - 'Passing props on "Fragment"!', - "", - `The current component <${name} /> is rendering a "Fragment".`, - `However we need to passthrough the following props:`, - Object.keys(rest).map((line) => ` - ${line}`).join("\n"), - "", - "You can apply a few solutions:", - [ - 'Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".', - "Render a single element as the child so that we can forward the props onto that element." - ].map((line) => ` - ${line}`).join("\n") - ].join("\n") - ); - } - let childProps = resolvedChildren.props; - let newClassName = typeof (childProps == null ? void 0 : childProps.className) === "function" ? (...args) => classNames(childProps == null ? void 0 : childProps.className(...args), rest.className) : classNames(childProps == null ? void 0 : childProps.className, rest.className); - let classNameProps = newClassName ? { className: newClassName } : {}; - return (0, import_react14.cloneElement)( - resolvedChildren, - Object.assign( - {}, - // Filter out undefined values so that they don't override the existing values - mergeProps(resolvedChildren.props, compact(omit(rest, ["ref"]))), - dataAttributes, - refRelatedProps, - mergeRefs(resolvedChildren.ref, refRelatedProps.ref), - classNameProps - ) - ); - } - } - return (0, import_react14.createElement)( - Component, - Object.assign( - {}, - omit(rest, ["ref"]), - Component !== import_react14.Fragment && refRelatedProps, - Component !== import_react14.Fragment && dataAttributes - ), - resolvedChildren - ); -} -function mergeRefs(...refs) { - return { - ref: refs.every((ref) => ref == null) ? void 0 : (value) => { - for (let ref of refs) { - if (ref == null) - continue; - if (typeof ref === "function") - ref(value); - else - ref.current = value; - } - } - }; -} -function mergeProps(...listOfProps) { - var _a3; - if (listOfProps.length === 0) - return {}; - if (listOfProps.length === 1) - return listOfProps[0]; - let target = {}; - let eventHandlers = {}; - for (let props of listOfProps) { - for (let prop in props) { - if (prop.startsWith("on") && typeof props[prop] === "function") { - (_a3 = eventHandlers[prop]) != null ? _a3 : eventHandlers[prop] = []; - eventHandlers[prop].push(props[prop]); - } else { - target[prop] = props[prop]; - } - } - } - if (target.disabled || target["aria-disabled"]) { - return Object.assign( - target, - // Set all event listeners that we collected to `undefined`. This is - // important because of the `cloneElement` from above, which merges the - // existing and new props, they don't just override therefore we have to - // explicitly nullify them. - Object.fromEntries(Object.keys(eventHandlers).map((eventName) => [eventName, void 0])) - ); - } - for (let eventName in eventHandlers) { - Object.assign(target, { - [eventName](event, ...args) { - let handlers = eventHandlers[eventName]; - for (let handler of handlers) { - if ((event instanceof Event || (event == null ? void 0 : event.nativeEvent) instanceof Event) && event.defaultPrevented) { - return; - } - handler(event, ...args); - } - } - }); - } - return target; -} -function forwardRefWithAs(component) { - var _a3; - return Object.assign((0, import_react14.forwardRef)(component), { - displayName: (_a3 = component.displayName) != null ? _a3 : component.name - }); -} -function compact(object) { - let clone = Object.assign({}, object); - for (let key in clone) { - if (clone[key] === void 0) - delete clone[key]; - } - return clone; -} -function omit(object, keysToOmit = []) { - let clone = Object.assign({}, object); - for (let key of keysToOmit) { - if (key in clone) - delete clone[key]; - } - return clone; -} - -// src/utils/bugs.ts -function isDisabledReactIssue7711(element) { - let parent = element.parentElement; - let legend = null; - while (parent && !(parent instanceof HTMLFieldSetElement)) { - if (parent instanceof HTMLLegendElement) - legend = parent; - parent = parent.parentElement; - } - let isParentDisabled = (parent == null ? void 0 : parent.getAttribute("disabled")) === ""; - if (isParentDisabled && isFirstLegend(legend)) - return false; - return isParentDisabled; -} -function isFirstLegend(element) { - if (!element) - return false; - let previous = element.previousElementSibling; - while (previous !== null) { - if (previous instanceof HTMLLegendElement) - return false; - previous = previous.previousElementSibling; - } - return true; -} - -// src/utils/form.ts -function objectToFormEntries(source = {}, parentKey = null, entries = []) { - for (let [key, value] of Object.entries(source)) { - append(entries, composeKey(parentKey, key), value); - } - return entries; -} -function composeKey(parent, key) { - return parent ? parent + "[" + key + "]" : key; -} -function append(entries, key, value) { - if (Array.isArray(value)) { - for (let [subkey, subvalue] of value.entries()) { - append(entries, composeKey(key, subkey.toString()), subvalue); - } - } else if (value instanceof Date) { - entries.push([key, value.toISOString()]); - } else if (typeof value === "boolean") { - entries.push([key, value ? "1" : "0"]); - } else if (typeof value === "string") { - entries.push([key, value]); - } else if (typeof value === "number") { - entries.push([key, `${value}`]); - } else if (value === null || value === void 0) { - entries.push([key, ""]); - } else { - objectToFormEntries(value, key, entries); - } -} -function attemptSubmit(element) { - var _a3; - let form = (_a3 = element == null ? void 0 : element.form) != null ? _a3 : element.closest("form"); - if (!form) - return; - for (let element2 of form.elements) { - if (element2.tagName === "INPUT" && element2.type === "submit" || element2.tagName === "BUTTON" && element2.type === "submit" || element2.nodeName === "INPUT" && element2.type === "image") { - element2.click(); - return; - } - } -} - -// src/internal/hidden.tsx -var DEFAULT_VISUALLY_HIDDEN_TAG = "div"; -function VisuallyHidden(props, ref) { - let { features = 1 /* None */, ...theirProps } = props; - let ourProps = { - ref, - "aria-hidden": (features & 2 /* Focusable */) === 2 /* Focusable */ ? true : void 0, - style: { - position: "fixed", - top: 1, - left: 1, - width: 1, - height: 0, - padding: 0, - margin: -1, - overflow: "hidden", - clip: "rect(0, 0, 0, 0)", - whiteSpace: "nowrap", - borderWidth: "0", - ...(features & 4 /* Hidden */) === 4 /* Hidden */ && !((features & 2 /* Focusable */) === 2 /* Focusable */) && { display: "none" } - } - }; - return render({ - ourProps, - theirProps, - slot: {}, - defaultTag: DEFAULT_VISUALLY_HIDDEN_TAG, - name: "Hidden" - }); -} -var Hidden = forwardRefWithAs(VisuallyHidden); - -// src/internal/open-closed.tsx -var import_react15 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var Context = (0, import_react15.createContext)(null); -Context.displayName = "OpenClosedContext"; -function useOpenClosed() { - return (0, import_react15.useContext)(Context); -} -function OpenClosedProvider({ value, children }) { - return /* @__PURE__ */ import_react15.default.createElement(Context.Provider, { value }, children); -} - -// src/hooks/use-controllable.ts -var import_react16 = __webpack_require__(/*! react */ "react"); -function useControllable(controlledValue, onChange, defaultValue) { - let [internalValue, setInternalValue] = (0, import_react16.useState)(defaultValue); - let isControlled = controlledValue !== void 0; - let wasControlled = (0, import_react16.useRef)(isControlled); - let didWarnOnUncontrolledToControlled = (0, import_react16.useRef)(false); - let didWarnOnControlledToUncontrolled = (0, import_react16.useRef)(false); - if (isControlled && !wasControlled.current && !didWarnOnUncontrolledToControlled.current) { - didWarnOnUncontrolledToControlled.current = true; - wasControlled.current = isControlled; - console.error( - "A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen." - ); - } else if (!isControlled && wasControlled.current && !didWarnOnControlledToUncontrolled.current) { - didWarnOnControlledToUncontrolled.current = true; - wasControlled.current = isControlled; - console.error( - "A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen." - ); - } - return [ - isControlled ? controlledValue : internalValue, - useEvent((value) => { - if (isControlled) { - return onChange == null ? void 0 : onChange(value); - } else { - setInternalValue(value); - return onChange == null ? void 0 : onChange(value); - } - }) - ]; -} - -// src/hooks/use-watch.ts -var import_react17 = __webpack_require__(/*! react */ "react"); -function useWatch(cb, dependencies) { - let track = (0, import_react17.useRef)([]); - let action = useEvent(cb); - (0, import_react17.useEffect)(() => { - let oldValues = [...track.current]; - for (let [idx, value] of dependencies.entries()) { - if (track.current[idx] !== value) { - let returnValue = action(dependencies, oldValues); - track.current = dependencies; - return returnValue; - } - } - }, [action, ...dependencies]); -} - -// src/hooks/use-tracked-pointer.ts -var import_react18 = __webpack_require__(/*! react */ "react"); -function eventToPosition(evt) { - return [evt.screenX, evt.screenY]; -} -function useTrackedPointer() { - let lastPos = (0, import_react18.useRef)([-1, -1]); - return { - wasMoved(evt) { - if (false) {} - let newPos = eventToPosition(evt); - if (lastPos.current[0] === newPos[0] && lastPos.current[1] === newPos[1]) { - return false; - } - lastPos.current = newPos; - return true; - }, - update(evt) { - lastPos.current = eventToPosition(evt); - } - }; -} - -// src/utils/platform.ts -function isIOS() { - return ( - // Check if it is an iPhone - /iPhone/gi.test(window.navigator.platform) || // Check if it is an iPad. iPad reports itself as "MacIntel", but we can check if it is a touch - // screen. Let's hope that Apple doesn't release a touch screen Mac (or maybe this would then - // work as expected 🤔). - /Mac/gi.test(window.navigator.platform) && window.navigator.maxTouchPoints > 0 - ); -} -function isAndroid() { - return /Android/gi.test(window.navigator.userAgent); -} -function isMobile() { - return isIOS() || isAndroid(); -} - -// src/components/combobox/combobox.tsx -function adjustOrderedState(state, adjustment = (i) => i) { - let currentActiveOption = state.activeOptionIndex !== null ? state.options[state.activeOptionIndex] : null; - let sortedOptions = sortByDomNode( - adjustment(state.options.slice()), - (option) => option.dataRef.current.domRef.current - ); - let adjustedActiveOptionIndex = currentActiveOption ? sortedOptions.indexOf(currentActiveOption) : null; - if (adjustedActiveOptionIndex === -1) { - adjustedActiveOptionIndex = null; - } - return { - options: sortedOptions, - activeOptionIndex: adjustedActiveOptionIndex - }; -} -var reducers = { - [1 /* CloseCombobox */](state) { - var _a3; - if ((_a3 = state.dataRef.current) == null ? void 0 : _a3.disabled) - return state; - if (state.comboboxState === 1 /* Closed */) - return state; - return { ...state, activeOptionIndex: null, comboboxState: 1 /* Closed */ }; - }, - [0 /* OpenCombobox */](state) { - var _a3; - if ((_a3 = state.dataRef.current) == null ? void 0 : _a3.disabled) - return state; - if (state.comboboxState === 0 /* Open */) - return state; - let activeOptionIndex = state.activeOptionIndex; - if (state.dataRef.current) { - let { isSelected } = state.dataRef.current; - let optionIdx = state.options.findIndex((option) => isSelected(option.dataRef.current.value)); - if (optionIdx !== -1) { - activeOptionIndex = optionIdx; - } - } - return { ...state, comboboxState: 0 /* Open */, activeOptionIndex }; - }, - [2 /* GoToOption */](state, action) { - var _a3, _b, _c, _d; - if ((_a3 = state.dataRef.current) == null ? void 0 : _a3.disabled) - return state; - if (((_b = state.dataRef.current) == null ? void 0 : _b.optionsRef.current) && !((_c = state.dataRef.current) == null ? void 0 : _c.optionsPropsRef.current.static) && state.comboboxState === 1 /* Closed */) { - return state; - } - let adjustedState = adjustOrderedState(state); - if (adjustedState.activeOptionIndex === null) { - let localActiveOptionIndex = adjustedState.options.findIndex( - (option) => !option.dataRef.current.disabled - ); - if (localActiveOptionIndex !== -1) { - adjustedState.activeOptionIndex = localActiveOptionIndex; - } - } - let activeOptionIndex = calculateActiveIndex(action, { - resolveItems: () => adjustedState.options, - resolveActiveIndex: () => adjustedState.activeOptionIndex, - resolveId: (item) => item.id, - resolveDisabled: (item) => item.dataRef.current.disabled - }); - return { - ...state, - ...adjustedState, - activeOptionIndex, - activationTrigger: (_d = action.trigger) != null ? _d : 1 /* Other */ - }; - }, - [3 /* RegisterOption */]: (state, action) => { - var _a3, _b; - let option = { id: action.id, dataRef: action.dataRef }; - let adjustedState = adjustOrderedState(state, (options) => [...options, option]); - if (state.activeOptionIndex === null) { - if ((_a3 = state.dataRef.current) == null ? void 0 : _a3.isSelected(action.dataRef.current.value)) { - adjustedState.activeOptionIndex = adjustedState.options.indexOf(option); - } - } - let nextState = { - ...state, - ...adjustedState, - activationTrigger: 1 /* Other */ - }; - if (((_b = state.dataRef.current) == null ? void 0 : _b.__demoMode) && state.dataRef.current.value === void 0) { - nextState.activeOptionIndex = 0; - } - return nextState; - }, - [4 /* UnregisterOption */]: (state, action) => { - let adjustedState = adjustOrderedState(state, (options) => { - let idx = options.findIndex((a) => a.id === action.id); - if (idx !== -1) - options.splice(idx, 1); - return options; - }); - return { - ...state, - ...adjustedState, - activationTrigger: 1 /* Other */ - }; - }, - [5 /* RegisterLabel */]: (state, action) => { - return { - ...state, - labelId: action.id - }; - } -}; -var ComboboxActionsContext = (0, import_react19.createContext)(null); -ComboboxActionsContext.displayName = "ComboboxActionsContext"; -function useActions(component) { - let context = (0, import_react19.useContext)(ComboboxActionsContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useActions); - throw err; - } - return context; -} -var ComboboxDataContext = (0, import_react19.createContext)(null); -ComboboxDataContext.displayName = "ComboboxDataContext"; -function useData(component) { - let context = (0, import_react19.useContext)(ComboboxDataContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useData); - throw err; - } - return context; -} -function stateReducer(state, action) { - return match(action.type, reducers, state, action); -} -var DEFAULT_COMBOBOX_TAG = import_react19.Fragment; -function ComboboxFn(props, ref) { - let { - value: controlledValue, - defaultValue, - onChange: controlledOnChange, - form: formName, - name, - by = (a, z) => a === z, - disabled = false, - __demoMode = false, - nullable = false, - multiple = false, - ...theirProps - } = props; - let [value = multiple ? [] : void 0, theirOnChange] = useControllable( - controlledValue, - controlledOnChange, - defaultValue - ); - let [state, dispatch] = (0, import_react19.useReducer)(stateReducer, { - dataRef: (0, import_react19.createRef)(), - comboboxState: __demoMode ? 0 /* Open */ : 1 /* Closed */, - options: [], - activeOptionIndex: null, - activationTrigger: 1 /* Other */, - labelId: null - }); - let defaultToFirstOption = (0, import_react19.useRef)(false); - let optionsPropsRef = (0, import_react19.useRef)({ static: false, hold: false }); - let labelRef = (0, import_react19.useRef)(null); - let inputRef = (0, import_react19.useRef)(null); - let buttonRef = (0, import_react19.useRef)(null); - let optionsRef = (0, import_react19.useRef)(null); - let compare = useEvent( - // @ts-expect-error Eventually we'll want to tackle this, but for now this will do. - typeof by === "string" ? (a, z) => { - let property = by; - return (a == null ? void 0 : a[property]) === (z == null ? void 0 : z[property]); - } : by - ); - let isSelected = (0, import_react19.useCallback)( - (compareValue) => match(data.mode, { - [1 /* Multi */]: () => value.some((option) => compare(option, compareValue)), - [0 /* Single */]: () => compare(value, compareValue) - }), - [value] - ); - let data = (0, import_react19.useMemo)( - () => ({ - ...state, - optionsPropsRef, - labelRef, - inputRef, - buttonRef, - optionsRef, - value, - defaultValue, - disabled, - mode: multiple ? 1 /* Multi */ : 0 /* Single */, - get activeOptionIndex() { - if (defaultToFirstOption.current && state.activeOptionIndex === null && state.options.length > 0) { - let localActiveOptionIndex = state.options.findIndex( - (option) => !option.dataRef.current.disabled - ); - if (localActiveOptionIndex !== -1) { - return localActiveOptionIndex; - } - } - return state.activeOptionIndex; - }, - compare, - isSelected, - nullable, - __demoMode - }), - [value, defaultValue, disabled, multiple, nullable, __demoMode, state] - ); - let lastActiveOption = (0, import_react19.useRef)( - data.activeOptionIndex !== null ? data.options[data.activeOptionIndex] : null - ); - (0, import_react19.useEffect)(() => { - let currentActiveOption = data.activeOptionIndex !== null ? data.options[data.activeOptionIndex] : null; - if (lastActiveOption.current !== currentActiveOption) { - lastActiveOption.current = currentActiveOption; - } - }); - useIsoMorphicEffect(() => { - state.dataRef.current = data; - }, [data]); - useOutsideClick( - [data.buttonRef, data.inputRef, data.optionsRef], - () => actions.closeCombobox(), - data.comboboxState === 0 /* Open */ - ); - let slot = (0, import_react19.useMemo)( - () => ({ - open: data.comboboxState === 0 /* Open */, - disabled, - activeIndex: data.activeOptionIndex, - activeOption: data.activeOptionIndex === null ? null : data.options[data.activeOptionIndex].dataRef.current.value, - value - }), - [data, disabled, value] - ); - let selectOption = useEvent((id) => { - let option = data.options.find((item) => item.id === id); - if (!option) - return; - onChange(option.dataRef.current.value); - }); - let selectActiveOption = useEvent(() => { - if (data.activeOptionIndex !== null) { - let { dataRef, id } = data.options[data.activeOptionIndex]; - onChange(dataRef.current.value); - actions.goToOption(4 /* Specific */, id); - } - }); - let openCombobox = useEvent(() => { - dispatch({ type: 0 /* OpenCombobox */ }); - defaultToFirstOption.current = true; - }); - let closeCombobox = useEvent(() => { - dispatch({ type: 1 /* CloseCombobox */ }); - defaultToFirstOption.current = false; - }); - let goToOption = useEvent((focus, id, trigger) => { - defaultToFirstOption.current = false; - if (focus === 4 /* Specific */) { - return dispatch({ type: 2 /* GoToOption */, focus: 4 /* Specific */, id, trigger }); - } - return dispatch({ type: 2 /* GoToOption */, focus, trigger }); - }); - let registerOption = useEvent((id, dataRef) => { - dispatch({ type: 3 /* RegisterOption */, id, dataRef }); - return () => { - var _a3; - if (((_a3 = lastActiveOption.current) == null ? void 0 : _a3.id) === id) { - defaultToFirstOption.current = true; - } - dispatch({ type: 4 /* UnregisterOption */, id }); - }; - }); - let registerLabel = useEvent((id) => { - dispatch({ type: 5 /* RegisterLabel */, id }); - return () => dispatch({ type: 5 /* RegisterLabel */, id: null }); - }); - let onChange = useEvent((value2) => { - return match(data.mode, { - [0 /* Single */]() { - return theirOnChange == null ? void 0 : theirOnChange(value2); - }, - [1 /* Multi */]() { - let copy = data.value.slice(); - let idx = copy.findIndex((item) => compare(item, value2)); - if (idx === -1) { - copy.push(value2); - } else { - copy.splice(idx, 1); - } - return theirOnChange == null ? void 0 : theirOnChange(copy); - } - }); - }); - let actions = (0, import_react19.useMemo)( - () => ({ - onChange, - registerOption, - registerLabel, - goToOption, - closeCombobox, - openCombobox, - selectActiveOption, - selectOption - }), - [] - ); - let ourProps = ref === null ? {} : { ref }; - let form = (0, import_react19.useRef)(null); - let d = useDisposables(); - (0, import_react19.useEffect)(() => { - if (!form.current) - return; - if (defaultValue === void 0) - return; - d.addEventListener(form.current, "reset", () => { - onChange(defaultValue); - }); - }, [ - form, - onChange - /* Explicitly ignoring `defaultValue` */ - ]); - return /* @__PURE__ */ import_react19.default.createElement(ComboboxActionsContext.Provider, { value: actions }, /* @__PURE__ */ import_react19.default.createElement(ComboboxDataContext.Provider, { value: data }, /* @__PURE__ */ import_react19.default.createElement( - OpenClosedProvider, - { - value: match(data.comboboxState, { - [0 /* Open */]: 1 /* Open */, - [1 /* Closed */]: 2 /* Closed */ - }) - }, - name != null && value != null && objectToFormEntries({ [name]: value }).map(([name2, value2], idx) => /* @__PURE__ */ import_react19.default.createElement( - Hidden, - { - features: 4 /* Hidden */, - ref: idx === 0 ? (element) => { - var _a3; - form.current = (_a3 = element == null ? void 0 : element.closest("form")) != null ? _a3 : null; - } : void 0, - ...compact({ - key: name2, - as: "input", - type: "hidden", - hidden: true, - readOnly: true, - form: formName, - name: name2, - value: value2 - }) - } - )), - render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_COMBOBOX_TAG, - name: "Combobox" - }) - ))); -} -var DEFAULT_INPUT_TAG = "input"; -function InputFn(props, ref) { - var _a3, _b, _c, _d; - let internalId = useId(); - let { - id = `headlessui-combobox-input-${internalId}`, - onChange, - displayValue, - // @ts-ignore: We know this MAY NOT exist for a given tag but we only care when it _does_ exist. - type = "text", - ...theirProps - } = props; - let data = useData("Combobox.Input"); - let actions = useActions("Combobox.Input"); - let inputRef = useSyncRefs(data.inputRef, ref); - let isTyping = (0, import_react19.useRef)(false); - let d = useDisposables(); - let currentDisplayValue = function() { - var _a4; - if (typeof displayValue === "function" && data.value !== void 0) { - return (_a4 = displayValue(data.value)) != null ? _a4 : ""; - } else if (typeof data.value === "string") { - return data.value; - } else { - return ""; - } - }(); - useWatch( - ([currentDisplayValue2, state], [oldCurrentDisplayValue, oldState]) => { - if (isTyping.current) - return; - if (!data.inputRef.current) - return; - if (oldState === 0 /* Open */ && state === 1 /* Closed */) { - data.inputRef.current.value = currentDisplayValue2; - } else if (currentDisplayValue2 !== oldCurrentDisplayValue) { - data.inputRef.current.value = currentDisplayValue2; - } - }, - [currentDisplayValue, data.comboboxState] - ); - useWatch( - ([newState], [oldState]) => { - if (newState === 0 /* Open */ && oldState === 1 /* Closed */) { - let input = data.inputRef.current; - if (!input) - return; - let currentValue = input.value; - let { selectionStart, selectionEnd, selectionDirection } = input; - input.value = ""; - input.value = currentValue; - if (selectionDirection !== null) { - input.setSelectionRange(selectionStart, selectionEnd, selectionDirection); - } else { - input.setSelectionRange(selectionStart, selectionEnd); - } - } - }, - [data.comboboxState] - ); - let isComposing = (0, import_react19.useRef)(false); - let composedChangeEvent = (0, import_react19.useRef)(null); - let handleCompositionStart = useEvent(() => { - isComposing.current = true; - }); - let handleCompositionEnd = useEvent(() => { - d.nextFrame(() => { - isComposing.current = false; - if (composedChangeEvent.current) { - actions.openCombobox(); - onChange == null ? void 0 : onChange(composedChangeEvent.current); - composedChangeEvent.current = null; - } - }); - }); - let handleKeyDown = useEvent((event) => { - isTyping.current = true; - switch (event.key) { - case "Backspace" /* Backspace */: - case "Delete" /* Delete */: - if (data.mode !== 0 /* Single */) - return; - if (!data.nullable) - return; - let input = event.currentTarget; - d.requestAnimationFrame(() => { - if (input.value === "") { - actions.onChange(null); - if (data.optionsRef.current) { - data.optionsRef.current.scrollTop = 0; - } - actions.goToOption(5 /* Nothing */); - } - }); - break; - case "Enter" /* Enter */: - isTyping.current = false; - if (data.comboboxState !== 0 /* Open */) - return; - if (isComposing.current) - return; - event.preventDefault(); - event.stopPropagation(); - if (data.activeOptionIndex === null) { - actions.closeCombobox(); - return; - } - actions.selectActiveOption(); - if (data.mode === 0 /* Single */) { - actions.closeCombobox(); - } - break; - case "ArrowDown" /* ArrowDown */: - isTyping.current = false; - event.preventDefault(); - event.stopPropagation(); - return match(data.comboboxState, { - [0 /* Open */]: () => { - actions.goToOption(2 /* Next */); - }, - [1 /* Closed */]: () => { - actions.openCombobox(); - } - }); - case "ArrowUp" /* ArrowUp */: - isTyping.current = false; - event.preventDefault(); - event.stopPropagation(); - return match(data.comboboxState, { - [0 /* Open */]: () => { - actions.goToOption(1 /* Previous */); - }, - [1 /* Closed */]: () => { - actions.openCombobox(); - d.nextFrame(() => { - if (!data.value) { - actions.goToOption(3 /* Last */); - } - }); - } - }); - case "Home" /* Home */: - if (event.shiftKey) { - break; - } - isTyping.current = false; - event.preventDefault(); - event.stopPropagation(); - return actions.goToOption(0 /* First */); - case "PageUp" /* PageUp */: - isTyping.current = false; - event.preventDefault(); - event.stopPropagation(); - return actions.goToOption(0 /* First */); - case "End" /* End */: - if (event.shiftKey) { - break; - } - isTyping.current = false; - event.preventDefault(); - event.stopPropagation(); - return actions.goToOption(3 /* Last */); - case "PageDown" /* PageDown */: - isTyping.current = false; - event.preventDefault(); - event.stopPropagation(); - return actions.goToOption(3 /* Last */); - case "Escape" /* Escape */: - isTyping.current = false; - if (data.comboboxState !== 0 /* Open */) - return; - event.preventDefault(); - if (data.optionsRef.current && !data.optionsPropsRef.current.static) { - event.stopPropagation(); - } - return actions.closeCombobox(); - case "Tab" /* Tab */: - isTyping.current = false; - if (data.comboboxState !== 0 /* Open */) - return; - if (data.mode === 0 /* Single */) - actions.selectActiveOption(); - actions.closeCombobox(); - break; - } - }); - let handleChange = useEvent((event) => { - if (isComposing.current) { - composedChangeEvent.current = event; - return; - } - actions.openCombobox(); - onChange == null ? void 0 : onChange(event); - }); - let handleBlur = useEvent(() => { - isTyping.current = false; - }); - let labelledby = useComputed(() => { - if (!data.labelId) - return void 0; - return [data.labelId].join(" "); - }, [data.labelId]); - let slot = (0, import_react19.useMemo)( - () => ({ open: data.comboboxState === 0 /* Open */, disabled: data.disabled }), - [data] - ); - let ourProps = { - ref: inputRef, - id, - role: "combobox", - type, - "aria-controls": (_a3 = data.optionsRef.current) == null ? void 0 : _a3.id, - "aria-expanded": data.disabled ? void 0 : data.comboboxState === 0 /* Open */, - "aria-activedescendant": data.activeOptionIndex === null ? void 0 : (_b = data.options[data.activeOptionIndex]) == null ? void 0 : _b.id, - "aria-labelledby": labelledby, - "aria-autocomplete": "list", - defaultValue: (_d = (_c = props.defaultValue) != null ? _c : data.defaultValue !== void 0 ? displayValue == null ? void 0 : displayValue(data.defaultValue) : null) != null ? _d : data.defaultValue, - disabled: data.disabled, - onCompositionStart: handleCompositionStart, - onCompositionEnd: handleCompositionEnd, - onKeyDown: handleKeyDown, - onChange: handleChange, - onBlur: handleBlur - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_INPUT_TAG, - name: "Combobox.Input" - }); -} -var DEFAULT_BUTTON_TAG = "button"; -function ButtonFn(props, ref) { - var _a3; - let data = useData("Combobox.Button"); - let actions = useActions("Combobox.Button"); - let buttonRef = useSyncRefs(data.buttonRef, ref); - let internalId = useId(); - let { id = `headlessui-combobox-button-${internalId}`, ...theirProps } = props; - let d = useDisposables(); - let handleKeyDown = useEvent((event) => { - switch (event.key) { - case "ArrowDown" /* ArrowDown */: - event.preventDefault(); - event.stopPropagation(); - if (data.comboboxState === 1 /* Closed */) { - actions.openCombobox(); - } - return d.nextFrame(() => { - var _a4; - return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); - }); - case "ArrowUp" /* ArrowUp */: - event.preventDefault(); - event.stopPropagation(); - if (data.comboboxState === 1 /* Closed */) { - actions.openCombobox(); - d.nextFrame(() => { - if (!data.value) { - actions.goToOption(3 /* Last */); - } - }); - } - return d.nextFrame(() => { - var _a4; - return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); - }); - case "Escape" /* Escape */: - if (data.comboboxState !== 0 /* Open */) - return; - event.preventDefault(); - if (data.optionsRef.current && !data.optionsPropsRef.current.static) { - event.stopPropagation(); - } - actions.closeCombobox(); - return d.nextFrame(() => { - var _a4; - return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); - }); - default: - return; - } - }); - let handleClick = useEvent((event) => { - if (isDisabledReactIssue7711(event.currentTarget)) - return event.preventDefault(); - if (data.comboboxState === 0 /* Open */) { - actions.closeCombobox(); - } else { - event.preventDefault(); - actions.openCombobox(); - } - d.nextFrame(() => { - var _a4; - return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); - }); - }); - let labelledby = useComputed(() => { - if (!data.labelId) - return void 0; - return [data.labelId, id].join(" "); - }, [data.labelId, id]); - let slot = (0, import_react19.useMemo)( - () => ({ - open: data.comboboxState === 0 /* Open */, - disabled: data.disabled, - value: data.value - }), - [data] - ); - let ourProps = { - ref: buttonRef, - id, - type: useResolveButtonType(props, data.buttonRef), - tabIndex: -1, - "aria-haspopup": "listbox", - "aria-controls": (_a3 = data.optionsRef.current) == null ? void 0 : _a3.id, - "aria-expanded": data.disabled ? void 0 : data.comboboxState === 0 /* Open */, - "aria-labelledby": labelledby, - disabled: data.disabled, - onClick: handleClick, - onKeyDown: handleKeyDown - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_BUTTON_TAG, - name: "Combobox.Button" - }); -} -var DEFAULT_LABEL_TAG = "label"; -function LabelFn(props, ref) { - let internalId = useId(); - let { id = `headlessui-combobox-label-${internalId}`, ...theirProps } = props; - let data = useData("Combobox.Label"); - let actions = useActions("Combobox.Label"); - let labelRef = useSyncRefs(data.labelRef, ref); - useIsoMorphicEffect(() => actions.registerLabel(id), [id]); - let handleClick = useEvent(() => { - var _a3; - return (_a3 = data.inputRef.current) == null ? void 0 : _a3.focus({ preventScroll: true }); - }); - let slot = (0, import_react19.useMemo)( - () => ({ open: data.comboboxState === 0 /* Open */, disabled: data.disabled }), - [data] - ); - let ourProps = { ref: labelRef, id, onClick: handleClick }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_LABEL_TAG, - name: "Combobox.Label" - }); -} -var DEFAULT_OPTIONS_TAG = "ul"; -var OptionsRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; -function OptionsFn(props, ref) { - let internalId = useId(); - let { id = `headlessui-combobox-options-${internalId}`, hold = false, ...theirProps } = props; - let data = useData("Combobox.Options"); - let optionsRef = useSyncRefs(data.optionsRef, ref); - let usesOpenClosedState = useOpenClosed(); - let visible = (() => { - if (usesOpenClosedState !== null) { - return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; - } - return data.comboboxState === 0 /* Open */; - })(); - useIsoMorphicEffect(() => { - var _a3; - data.optionsPropsRef.current.static = (_a3 = props.static) != null ? _a3 : false; - }, [data.optionsPropsRef, props.static]); - useIsoMorphicEffect(() => { - data.optionsPropsRef.current.hold = hold; - }, [data.optionsPropsRef, hold]); - useTreeWalker({ - container: data.optionsRef.current, - enabled: data.comboboxState === 0 /* Open */, - accept(node) { - if (node.getAttribute("role") === "option") - return NodeFilter.FILTER_REJECT; - if (node.hasAttribute("role")) - return NodeFilter.FILTER_SKIP; - return NodeFilter.FILTER_ACCEPT; - }, - walk(node) { - node.setAttribute("role", "none"); - } - }); - let labelledby = useComputed( - () => { - var _a3, _b; - return (_b = data.labelId) != null ? _b : (_a3 = data.buttonRef.current) == null ? void 0 : _a3.id; - }, - [data.labelId, data.buttonRef.current] - ); - let slot = (0, import_react19.useMemo)( - () => ({ open: data.comboboxState === 0 /* Open */ }), - [data] - ); - let ourProps = { - "aria-labelledby": labelledby, - role: "listbox", - "aria-multiselectable": data.mode === 1 /* Multi */ ? true : void 0, - id, - ref: optionsRef - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_OPTIONS_TAG, - features: OptionsRenderFeatures, - visible, - name: "Combobox.Options" - }); -} -var DEFAULT_OPTION_TAG = "li"; -function OptionFn(props, ref) { - var _a3, _b; - let internalId = useId(); - let { - id = `headlessui-combobox-option-${internalId}`, - disabled = false, - value, - ...theirProps - } = props; - let data = useData("Combobox.Option"); - let actions = useActions("Combobox.Option"); - let active = data.activeOptionIndex !== null ? data.options[data.activeOptionIndex].id === id : false; - let selected = data.isSelected(value); - let internalOptionRef = (0, import_react19.useRef)(null); - let bag = useLatestValue({ - disabled, - value, - domRef: internalOptionRef, - textValue: (_b = (_a3 = internalOptionRef.current) == null ? void 0 : _a3.textContent) == null ? void 0 : _b.toLowerCase() - }); - let optionRef = useSyncRefs(ref, internalOptionRef); - let select = useEvent(() => actions.selectOption(id)); - useIsoMorphicEffect(() => actions.registerOption(id, bag), [bag, id]); - let enableScrollIntoView = (0, import_react19.useRef)(data.__demoMode ? false : true); - useIsoMorphicEffect(() => { - if (!data.__demoMode) - return; - let d = disposables(); - d.requestAnimationFrame(() => { - enableScrollIntoView.current = true; - }); - return d.dispose; - }, []); - useIsoMorphicEffect(() => { - if (data.comboboxState !== 0 /* Open */) - return; - if (!active) - return; - if (!enableScrollIntoView.current) - return; - if (data.activationTrigger === 0 /* Pointer */) - return; - let d = disposables(); - d.requestAnimationFrame(() => { - var _a4, _b2; - (_b2 = (_a4 = internalOptionRef.current) == null ? void 0 : _a4.scrollIntoView) == null ? void 0 : _b2.call(_a4, { block: "nearest" }); - }); - return d.dispose; - }, [ - internalOptionRef, - active, - data.comboboxState, - data.activationTrigger, - /* We also want to trigger this when the position of the active item changes so that we can re-trigger the scrollIntoView */ - data.activeOptionIndex - ]); - let handleClick = useEvent((event) => { - if (disabled) - return event.preventDefault(); - select(); - if (data.mode === 0 /* Single */) { - actions.closeCombobox(); - } - if (!isMobile()) { - requestAnimationFrame(() => { - var _a4; - return (_a4 = data.inputRef.current) == null ? void 0 : _a4.focus(); - }); - } - }); - let handleFocus = useEvent(() => { - if (disabled) - return actions.goToOption(5 /* Nothing */); - actions.goToOption(4 /* Specific */, id); - }); - let pointer = useTrackedPointer(); - let handleEnter = useEvent((evt) => pointer.update(evt)); - let handleMove = useEvent((evt) => { - if (!pointer.wasMoved(evt)) - return; - if (disabled) - return; - if (active) - return; - actions.goToOption(4 /* Specific */, id, 0 /* Pointer */); - }); - let handleLeave = useEvent((evt) => { - if (!pointer.wasMoved(evt)) - return; - if (disabled) - return; - if (!active) - return; - if (data.optionsPropsRef.current.hold) - return; - actions.goToOption(5 /* Nothing */); - }); - let slot = (0, import_react19.useMemo)( - () => ({ active, selected, disabled }), - [active, selected, disabled] - ); - let ourProps = { - id, - ref: optionRef, - role: "option", - tabIndex: disabled === true ? void 0 : -1, - "aria-disabled": disabled === true ? true : void 0, - // According to the WAI-ARIA best practices, we should use aria-checked for - // multi-select,but Voice-Over disagrees. So we use aria-checked instead for - // both single and multi-select. - "aria-selected": selected, - disabled: void 0, - // Never forward the `disabled` prop - onClick: handleClick, - onFocus: handleFocus, - onPointerEnter: handleEnter, - onMouseEnter: handleEnter, - onPointerMove: handleMove, - onMouseMove: handleMove, - onPointerLeave: handleLeave, - onMouseLeave: handleLeave - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_OPTION_TAG, - name: "Combobox.Option" - }); -} -var ComboboxRoot = forwardRefWithAs(ComboboxFn); -var Button = forwardRefWithAs(ButtonFn); -var Input = forwardRefWithAs(InputFn); -var Label = forwardRefWithAs(LabelFn); -var Options = forwardRefWithAs(OptionsFn); -var Option = forwardRefWithAs(OptionFn); -var Combobox = Object.assign(ComboboxRoot, { Input, Button, Label, Options, Option }); - -// src/components/dialog/dialog.tsx -var import_react31 = __toESM(__webpack_require__(/*! react */ "react"), 1); - -// src/components/focus-trap/focus-trap.tsx -var import_react25 = __toESM(__webpack_require__(/*! react */ "react"), 1); - -// src/hooks/use-tab-direction.ts -var import_react20 = __webpack_require__(/*! react */ "react"); -function useTabDirection() { - let direction = (0, import_react20.useRef)(0 /* Forwards */); - useWindowEvent( - "keydown", - (event) => { - if (event.key === "Tab") { - direction.current = event.shiftKey ? 1 /* Backwards */ : 0 /* Forwards */; - } - }, - true - ); - return direction; -} - -// src/hooks/use-is-mounted.ts -var import_react21 = __webpack_require__(/*! react */ "react"); -function useIsMounted() { - let mounted = (0, import_react21.useRef)(false); - useIsoMorphicEffect(() => { - mounted.current = true; - return () => { - mounted.current = false; - }; - }, []); - return mounted; -} - -// src/hooks/use-owner.ts -var import_react22 = __webpack_require__(/*! react */ "react"); -function useOwnerDocument(...args) { - return (0, import_react22.useMemo)(() => getOwnerDocument(...args), [...args]); -} - -// src/hooks/use-event-listener.ts -var import_react23 = __webpack_require__(/*! react */ "react"); -function useEventListener(element, type, listener, options) { - let listenerRef = useLatestValue(listener); - (0, import_react23.useEffect)(() => { - element = element != null ? element : window; - function handler(event) { - listenerRef.current(event); - } - element.addEventListener(type, handler, options); - return () => element.removeEventListener(type, handler, options); - }, [element, type, options]); -} - -// src/utils/document-ready.ts -function onDocumentReady(cb) { - function check() { - if (document.readyState === "loading") - return; - cb(); - document.removeEventListener("DOMContentLoaded", check); - } - if (typeof window !== "undefined" && typeof document !== "undefined") { - document.addEventListener("DOMContentLoaded", check); - check(); - } -} - -// src/hooks/use-on-unmount.ts -var import_react24 = __webpack_require__(/*! react */ "react"); -function useOnUnmount(cb) { - let stableCb = useEvent(cb); - let trulyUnmounted = (0, import_react24.useRef)(false); - (0, import_react24.useEffect)(() => { - trulyUnmounted.current = false; - return () => { - trulyUnmounted.current = true; - microTask(() => { - if (!trulyUnmounted.current) - return; - stableCb(); - }); - }; - }, [stableCb]); -} - -// src/components/focus-trap/focus-trap.tsx -function resolveContainers(containers) { - if (!containers) - return /* @__PURE__ */ new Set(); - if (typeof containers === "function") - return new Set(containers()); - let all = /* @__PURE__ */ new Set(); - for (let container of containers.current) { - if (container.current instanceof HTMLElement) { - all.add(container.current); - } - } - return all; -} -var DEFAULT_FOCUS_TRAP_TAG = "div"; -var Features3 = /* @__PURE__ */ ((Features4) => { - Features4[Features4["None"] = 1] = "None"; - Features4[Features4["InitialFocus"] = 2] = "InitialFocus"; - Features4[Features4["TabLock"] = 4] = "TabLock"; - Features4[Features4["FocusLock"] = 8] = "FocusLock"; - Features4[Features4["RestoreFocus"] = 16] = "RestoreFocus"; - Features4[Features4["All"] = 30] = "All"; - return Features4; -})(Features3 || {}); -function FocusTrapFn(props, ref) { - let container = (0, import_react25.useRef)(null); - let focusTrapRef = useSyncRefs(container, ref); - let { initialFocus, containers, features = 30 /* All */, ...theirProps } = props; - if (!useServerHandoffComplete()) { - features = 1 /* None */; - } - let ownerDocument = useOwnerDocument(container); - useRestoreFocus({ ownerDocument }, Boolean(features & 16 /* RestoreFocus */)); - let previousActiveElement = useInitialFocus( - { ownerDocument, container, initialFocus }, - Boolean(features & 2 /* InitialFocus */) - ); - useFocusLock( - { ownerDocument, container, containers, previousActiveElement }, - Boolean(features & 8 /* FocusLock */) - ); - let direction = useTabDirection(); - let handleFocus = useEvent((e) => { - let el = container.current; - if (!el) - return; - let wrapper = false ? 0 : (cb) => cb(); - wrapper(() => { - match(direction.current, { - [0 /* Forwards */]: () => { - focusIn(el, 1 /* First */, { skipElements: [e.relatedTarget] }); - }, - [1 /* Backwards */]: () => { - focusIn(el, 8 /* Last */, { skipElements: [e.relatedTarget] }); - } - }); - }); - }); - let d = useDisposables(); - let recentlyUsedTabKey = (0, import_react25.useRef)(false); - let ourProps = { - ref: focusTrapRef, - onKeyDown(e) { - if (e.key == "Tab") { - recentlyUsedTabKey.current = true; - d.requestAnimationFrame(() => { - recentlyUsedTabKey.current = false; - }); - } - }, - onBlur(e) { - let allContainers = resolveContainers(containers); - if (container.current instanceof HTMLElement) - allContainers.add(container.current); - let relatedTarget = e.relatedTarget; - if (!(relatedTarget instanceof HTMLElement)) - return; - if (relatedTarget.dataset.headlessuiFocusGuard === "true") { - return; - } - if (!contains(allContainers, relatedTarget)) { - if (recentlyUsedTabKey.current) { - focusIn( - container.current, - match(direction.current, { - [0 /* Forwards */]: () => 4 /* Next */, - [1 /* Backwards */]: () => 2 /* Previous */ - }) | 16 /* WrapAround */, - { relativeTo: e.target } - ); - } else if (e.target instanceof HTMLElement) { - focusElement(e.target); - } - } - } - }; - return /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, Boolean(features & 4 /* TabLock */) && /* @__PURE__ */ import_react25.default.createElement( - Hidden, - { - as: "button", - type: "button", - "data-headlessui-focus-guard": true, - onFocus: handleFocus, - features: 2 /* Focusable */ - } - ), render({ - ourProps, - theirProps, - defaultTag: DEFAULT_FOCUS_TRAP_TAG, - name: "FocusTrap" - }), Boolean(features & 4 /* TabLock */) && /* @__PURE__ */ import_react25.default.createElement( - Hidden, - { - as: "button", - type: "button", - "data-headlessui-focus-guard": true, - onFocus: handleFocus, - features: 2 /* Focusable */ - } - )); -} -var FocusTrapRoot = forwardRefWithAs(FocusTrapFn); -var FocusTrap = Object.assign(FocusTrapRoot, { - features: Features3 -}); -var history = []; -onDocumentReady(() => { - function handle(e) { - if (!(e.target instanceof HTMLElement)) - return; - if (e.target === document.body) - return; - if (history[0] === e.target) - return; - history.unshift(e.target); - history = history.filter((x) => x != null && x.isConnected); - history.splice(10); - } - window.addEventListener("click", handle, { capture: true }); - window.addEventListener("mousedown", handle, { capture: true }); - window.addEventListener("focus", handle, { capture: true }); - document.body.addEventListener("click", handle, { capture: true }); - document.body.addEventListener("mousedown", handle, { capture: true }); - document.body.addEventListener("focus", handle, { capture: true }); -}); -function useRestoreElement(enabled = true) { - let localHistory = (0, import_react25.useRef)(history.slice()); - useWatch( - ([newEnabled], [oldEnabled]) => { - if (oldEnabled === true && newEnabled === false) { - microTask(() => { - localHistory.current.splice(0); - }); - } - if (oldEnabled === false && newEnabled === true) { - localHistory.current = history.slice(); - } - }, - [enabled, history, localHistory] - ); - return useEvent(() => { - var _a3; - return (_a3 = localHistory.current.find((x) => x != null && x.isConnected)) != null ? _a3 : null; - }); -} -function useRestoreFocus({ ownerDocument }, enabled) { - let getRestoreElement = useRestoreElement(enabled); - useWatch(() => { - if (enabled) - return; - if ((ownerDocument == null ? void 0 : ownerDocument.activeElement) === (ownerDocument == null ? void 0 : ownerDocument.body)) { - focusElement(getRestoreElement()); - } - }, [enabled]); - useOnUnmount(() => { - if (!enabled) - return; - focusElement(getRestoreElement()); - }); -} -function useInitialFocus({ - ownerDocument, - container, - initialFocus -}, enabled) { - let previousActiveElement = (0, import_react25.useRef)(null); - let mounted = useIsMounted(); - useWatch(() => { - if (!enabled) - return; - let containerElement = container.current; - if (!containerElement) - return; - microTask(() => { - if (!mounted.current) { - return; - } - let activeElement = ownerDocument == null ? void 0 : ownerDocument.activeElement; - if (initialFocus == null ? void 0 : initialFocus.current) { - if ((initialFocus == null ? void 0 : initialFocus.current) === activeElement) { - previousActiveElement.current = activeElement; - return; - } - } else if (containerElement.contains(activeElement)) { - previousActiveElement.current = activeElement; - return; - } - if (initialFocus == null ? void 0 : initialFocus.current) { - focusElement(initialFocus.current); - } else { - if (focusIn(containerElement, 1 /* First */) === 0 /* Error */) { - console.warn("There are no focusable elements inside the "); - } - } - previousActiveElement.current = ownerDocument == null ? void 0 : ownerDocument.activeElement; - }); - }, [enabled]); - return previousActiveElement; -} -function useFocusLock({ - ownerDocument, - container, - containers, - previousActiveElement -}, enabled) { - let mounted = useIsMounted(); - useEventListener( - ownerDocument == null ? void 0 : ownerDocument.defaultView, - "focus", - (event) => { - if (!enabled) - return; - if (!mounted.current) - return; - let allContainers = resolveContainers(containers); - if (container.current instanceof HTMLElement) - allContainers.add(container.current); - let previous = previousActiveElement.current; - if (!previous) - return; - let toElement = event.target; - if (toElement && toElement instanceof HTMLElement) { - if (!contains(allContainers, toElement)) { - event.preventDefault(); - event.stopPropagation(); - focusElement(previous); - } else { - previousActiveElement.current = toElement; - focusElement(toElement); - } - } else { - focusElement(previousActiveElement.current); - } - }, - true - ); -} -function contains(containers, element) { - for (let container of containers) { - if (container.contains(element)) - return true; - } - return false; -} - -// src/components/portal/portal.tsx -var import_react27 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var import_react_dom = __webpack_require__(/*! react-dom */ "react-dom"); - -// src/internal/portal-force-root.tsx -var import_react26 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var ForcePortalRootContext = (0, import_react26.createContext)(false); -function usePortalRoot() { - return (0, import_react26.useContext)(ForcePortalRootContext); -} -function ForcePortalRoot(props) { - return /* @__PURE__ */ import_react26.default.createElement(ForcePortalRootContext.Provider, { value: props.force }, props.children); -} - -// src/components/portal/portal.tsx -function usePortalTarget(ref) { - let forceInRoot = usePortalRoot(); - let groupTarget = (0, import_react27.useContext)(PortalGroupContext); - let ownerDocument = useOwnerDocument(ref); - let [target, setTarget] = (0, import_react27.useState)(() => { - if (!forceInRoot && groupTarget !== null) - return null; - if (env.isServer) - return null; - let existingRoot = ownerDocument == null ? void 0 : ownerDocument.getElementById("headlessui-portal-root"); - if (existingRoot) - return existingRoot; - if (ownerDocument === null) - return null; - let root = ownerDocument.createElement("div"); - root.setAttribute("id", "headlessui-portal-root"); - return ownerDocument.body.appendChild(root); - }); - (0, import_react27.useEffect)(() => { - if (target === null) - return; - if (!(ownerDocument == null ? void 0 : ownerDocument.body.contains(target))) { - ownerDocument == null ? void 0 : ownerDocument.body.appendChild(target); - } - }, [target, ownerDocument]); - (0, import_react27.useEffect)(() => { - if (forceInRoot) - return; - if (groupTarget === null) - return; - setTarget(groupTarget.current); - }, [groupTarget, setTarget, forceInRoot]); - return target; -} -var DEFAULT_PORTAL_TAG = import_react27.Fragment; -function PortalFn(props, ref) { - let theirProps = props; - let internalPortalRootRef = (0, import_react27.useRef)(null); - let portalRef = useSyncRefs( - optionalRef((ref2) => { - internalPortalRootRef.current = ref2; - }), - ref - ); - let ownerDocument = useOwnerDocument(internalPortalRootRef); - let target = usePortalTarget(internalPortalRootRef); - let [element] = (0, import_react27.useState)( - () => { - var _a3; - return env.isServer ? null : (_a3 = ownerDocument == null ? void 0 : ownerDocument.createElement("div")) != null ? _a3 : null; - } - ); - let parent = (0, import_react27.useContext)(PortalParentContext); - let ready = useServerHandoffComplete(); - useIsoMorphicEffect(() => { - if (!target || !element) - return; - if (!target.contains(element)) { - element.setAttribute("data-headlessui-portal", ""); - target.appendChild(element); - } - }, [target, element]); - useIsoMorphicEffect(() => { - if (!element) - return; - if (!parent) - return; - return parent.register(element); - }, [parent, element]); - useOnUnmount(() => { - var _a3; - if (!target || !element) - return; - if (element instanceof Node && target.contains(element)) { - target.removeChild(element); - } - if (target.childNodes.length <= 0) { - (_a3 = target.parentElement) == null ? void 0 : _a3.removeChild(target); - } - }); - if (!ready) - return null; - let ourProps = { ref: portalRef }; - return !target || !element ? null : (0, import_react_dom.createPortal)( - render({ - ourProps, - theirProps, - defaultTag: DEFAULT_PORTAL_TAG, - name: "Portal" - }), - element - ); -} -var DEFAULT_GROUP_TAG = import_react27.Fragment; -var PortalGroupContext = (0, import_react27.createContext)(null); -function GroupFn(props, ref) { - let { target, ...theirProps } = props; - let groupRef = useSyncRefs(ref); - let ourProps = { ref: groupRef }; - return /* @__PURE__ */ import_react27.default.createElement(PortalGroupContext.Provider, { value: target }, render({ - ourProps, - theirProps, - defaultTag: DEFAULT_GROUP_TAG, - name: "Popover.Group" - })); -} -var PortalParentContext = (0, import_react27.createContext)(null); -function useNestedPortals() { - let parent = (0, import_react27.useContext)(PortalParentContext); - let portals = (0, import_react27.useRef)([]); - let register = useEvent((portal) => { - portals.current.push(portal); - if (parent) - parent.register(portal); - return () => unregister(portal); - }); - let unregister = useEvent((portal) => { - let idx = portals.current.indexOf(portal); - if (idx !== -1) - portals.current.splice(idx, 1); - if (parent) - parent.unregister(portal); - }); - let api = (0, import_react27.useMemo)( - () => ({ register, unregister, portals }), - [register, unregister, portals] - ); - return [ - portals, - (0, import_react27.useMemo)(() => { - return function PortalWrapper({ children }) { - return /* @__PURE__ */ import_react27.default.createElement(PortalParentContext.Provider, { value: api }, children); - }; - }, [api]) - ]; -} -var PortalRoot = forwardRefWithAs(PortalFn); -var Group = forwardRefWithAs(GroupFn); -var Portal = Object.assign(PortalRoot, { Group }); - -// src/components/description/description.tsx -var import_react28 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var DescriptionContext = (0, import_react28.createContext)(null); -function useDescriptionContext() { - let context = (0, import_react28.useContext)(DescriptionContext); - if (context === null) { - let err = new Error( - "You used a component, but it is not inside a relevant parent." - ); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useDescriptionContext); - throw err; - } - return context; -} -function useDescriptions() { - let [descriptionIds, setDescriptionIds] = (0, import_react28.useState)([]); - return [ - // The actual id's as string or undefined - descriptionIds.length > 0 ? descriptionIds.join(" ") : void 0, - // The provider component - (0, import_react28.useMemo)(() => { - return function DescriptionProvider(props) { - let register = useEvent((value) => { - setDescriptionIds((existing) => [...existing, value]); - return () => setDescriptionIds((existing) => { - let clone = existing.slice(); - let idx = clone.indexOf(value); - if (idx !== -1) - clone.splice(idx, 1); - return clone; - }); - }); - let contextBag = (0, import_react28.useMemo)( - () => ({ register, slot: props.slot, name: props.name, props: props.props }), - [register, props.slot, props.name, props.props] - ); - return /* @__PURE__ */ import_react28.default.createElement(DescriptionContext.Provider, { value: contextBag }, props.children); - }; - }, [setDescriptionIds]) - ]; -} -var DEFAULT_DESCRIPTION_TAG = "p"; -function DescriptionFn(props, ref) { - let internalId = useId(); - let { id = `headlessui-description-${internalId}`, ...theirProps } = props; - let context = useDescriptionContext(); - let descriptionRef = useSyncRefs(ref); - useIsoMorphicEffect(() => context.register(id), [id, context.register]); - let ourProps = { ref: descriptionRef, ...context.props, id }; - return render({ - ourProps, - theirProps, - slot: context.slot || {}, - defaultTag: DEFAULT_DESCRIPTION_TAG, - name: context.name || "Description" - }); -} -var DescriptionRoot = forwardRefWithAs(DescriptionFn); -var Description = Object.assign(DescriptionRoot, { - // -}); - -// src/internal/stack-context.tsx -var import_react29 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var StackContext = (0, import_react29.createContext)(() => { -}); -StackContext.displayName = "StackContext"; -function useStackContext() { - return (0, import_react29.useContext)(StackContext); -} -function StackProvider({ - children, - onUpdate, - type, - element, - enabled -}) { - let parentUpdate = useStackContext(); - let notify = useEvent((...args) => { - onUpdate == null ? void 0 : onUpdate(...args); - parentUpdate(...args); - }); - useIsoMorphicEffect(() => { - let shouldNotify = enabled === void 0 || enabled === true; - shouldNotify && notify(0 /* Add */, type, element); - return () => { - shouldNotify && notify(1 /* Remove */, type, element); - }; - }, [notify, type, element, enabled]); - return /* @__PURE__ */ import_react29.default.createElement(StackContext.Provider, { value: notify }, children); -} - -// src/use-sync-external-store-shim/index.ts -var React11 = __toESM(__webpack_require__(/*! react */ "react"), 1); - -// src/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts -var React10 = __toESM(__webpack_require__(/*! react */ "react"), 1); -function isPolyfill(x, y) { - return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y; -} -var is = typeof Object.is === "function" ? Object.is : isPolyfill; -var { useState: useState8, useEffect: useEffect14, useLayoutEffect: useLayoutEffect2, useDebugValue } = React10; -var didWarnOld18Alpha = false; -var didWarnUncachedGetSnapshot = false; -function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { - if (true) { - if (!didWarnOld18Alpha) { - if ("startTransition" in React10) { - didWarnOld18Alpha = true; - console.error( - "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." - ); - } - } - } - const value = getSnapshot(); - if (true) { - if (!didWarnUncachedGetSnapshot) { - const cachedValue = getSnapshot(); - if (!is(value, cachedValue)) { - console.error("The result of getSnapshot should be cached to avoid an infinite loop"); - didWarnUncachedGetSnapshot = true; - } - } - } - const [{ inst }, forceUpdate] = useState8({ inst: { value, getSnapshot } }); - useLayoutEffect2(() => { - inst.value = value; - inst.getSnapshot = getSnapshot; - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ inst }); - } - }, [subscribe, value, getSnapshot]); - useEffect14(() => { - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ inst }); - } - const handleStoreChange = () => { - if (checkIfSnapshotChanged(inst)) { - forceUpdate({ inst }); - } - }; - return subscribe(handleStoreChange); - }, [subscribe]); - useDebugValue(value); - return value; -} -function checkIfSnapshotChanged(inst) { - const latestGetSnapshot = inst.getSnapshot; - const prevValue = inst.value; - try { - const nextValue = latestGetSnapshot(); - return !is(prevValue, nextValue); - } catch (error) { - return true; - } -} - -// src/use-sync-external-store-shim/useSyncExternalStoreShimServer.ts -function useSyncExternalStore2(subscribe, getSnapshot, getServerSnapshot) { - return getSnapshot(); -} - -// src/use-sync-external-store-shim/index.ts -var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"); -var isServerEnvironment = !canUseDOM; -var shim = isServerEnvironment ? useSyncExternalStore2 : useSyncExternalStore; -var useSyncExternalStore3 = "useSyncExternalStore" in React11 ? ((r) => r.useSyncExternalStore)(React11) : shim; - -// src/hooks/use-store.ts -function useStore(store) { - return useSyncExternalStore3(store.subscribe, store.getSnapshot, store.getSnapshot); -} - -// src/utils/store.ts -function createStore(initial, actions) { - let state = initial(); - let listeners = /* @__PURE__ */ new Set(); - return { - getSnapshot() { - return state; - }, - subscribe(onChange) { - listeners.add(onChange); - return () => listeners.delete(onChange); - }, - dispatch(key, ...args) { - let newState = actions[key].call(state, ...args); - if (newState) { - state = newState; - listeners.forEach((listener) => listener()); - } - } - }; -} - -// src/hooks/document-overflow/adjust-scrollbar-padding.ts -function adjustScrollbarPadding() { - let scrollbarWidthBefore; - return { - before({ doc }) { - var _a3; - let documentElement = doc.documentElement; - let ownerWindow = (_a3 = doc.defaultView) != null ? _a3 : window; - scrollbarWidthBefore = ownerWindow.innerWidth - documentElement.clientWidth; - }, - after({ doc, d }) { - let documentElement = doc.documentElement; - let scrollbarWidthAfter = documentElement.clientWidth - documentElement.offsetWidth; - let scrollbarWidth = scrollbarWidthBefore - scrollbarWidthAfter; - d.style(documentElement, "paddingRight", `${scrollbarWidth}px`); - } - }; -} - -// src/hooks/document-overflow/handle-ios-locking.ts -function handleIOSLocking() { - if (!isIOS()) { - return {}; - } - let scrollPosition; - return { - before() { - scrollPosition = window.pageYOffset; - }, - after({ doc, d, meta }) { - function inAllowedContainer(el) { - return meta.containers.flatMap((resolve) => resolve()).some((container) => container.contains(el)); - } - d.style(doc.body, "marginTop", `-${scrollPosition}px`); - window.scrollTo(0, 0); - let scrollToElement = null; - d.addEventListener( - doc, - "click", - (e) => { - if (!(e.target instanceof HTMLElement)) { - return; - } - try { - let anchor = e.target.closest("a"); - if (!anchor) - return; - let { hash } = new URL(anchor.href); - let el = doc.querySelector(hash); - if (el && !inAllowedContainer(el)) { - scrollToElement = el; - } - } catch (err) { - } - }, - true - ); - d.addEventListener( - doc, - "touchmove", - (e) => { - if (e.target instanceof HTMLElement && !inAllowedContainer(e.target)) { - e.preventDefault(); - } - }, - { passive: false } - ); - d.add(() => { - window.scrollTo(0, window.pageYOffset + scrollPosition); - if (scrollToElement && scrollToElement.isConnected) { - scrollToElement.scrollIntoView({ block: "nearest" }); - scrollToElement = null; - } - }); - } - }; -} - -// src/hooks/document-overflow/prevent-scroll.ts -function preventScroll() { - return { - before({ doc, d }) { - d.style(doc.documentElement, "overflow", "hidden"); - } - }; -} - -// src/hooks/document-overflow/overflow-store.ts -function buildMeta(fns) { - let tmp = {}; - for (let fn of fns) { - Object.assign(tmp, fn(tmp)); - } - return tmp; -} -var overflows = createStore(() => /* @__PURE__ */ new Map(), { - PUSH(doc, meta) { - var _a3; - let entry = (_a3 = this.get(doc)) != null ? _a3 : { - doc, - count: 0, - d: disposables(), - meta: /* @__PURE__ */ new Set() - }; - entry.count++; - entry.meta.add(meta); - this.set(doc, entry); - return this; - }, - POP(doc, meta) { - let entry = this.get(doc); - if (entry) { - entry.count--; - entry.meta.delete(meta); - } - return this; - }, - SCROLL_PREVENT({ doc, d, meta }) { - let ctx = { - doc, - d, - meta: buildMeta(meta) - }; - let steps = [ - handleIOSLocking(), - adjustScrollbarPadding(), - preventScroll() - ]; - steps.forEach(({ before }) => before == null ? void 0 : before(ctx)); - steps.forEach(({ after }) => after == null ? void 0 : after(ctx)); - }, - SCROLL_ALLOW({ d }) { - d.dispose(); - }, - TEARDOWN({ doc }) { - this.delete(doc); - } -}); -overflows.subscribe(() => { - let docs = overflows.getSnapshot(); - let styles = /* @__PURE__ */ new Map(); - for (let [doc] of docs) { - styles.set(doc, doc.documentElement.style.overflow); - } - for (let entry of docs.values()) { - let isHidden = styles.get(entry.doc) === "hidden"; - let isLocked = entry.count !== 0; - let willChange = isLocked && !isHidden || !isLocked && isHidden; - if (willChange) { - overflows.dispatch(entry.count > 0 ? "SCROLL_PREVENT" : "SCROLL_ALLOW", entry); - } - if (entry.count === 0) { - overflows.dispatch("TEARDOWN", entry); - } - } -}); - -// src/hooks/document-overflow/use-document-overflow.ts -function useDocumentOverflowLockedEffect(doc, shouldBeLocked, meta) { - let store = useStore(overflows); - let entry = doc ? store.get(doc) : void 0; - let locked = entry ? entry.count > 0 : false; - useIsoMorphicEffect(() => { - if (!doc || !shouldBeLocked) { - return; - } - overflows.dispatch("PUSH", doc, meta); - return () => overflows.dispatch("POP", doc, meta); - }, [shouldBeLocked, doc]); - return locked; -} - -// src/hooks/use-inert.tsx -var originals = /* @__PURE__ */ new Map(); -var counts = /* @__PURE__ */ new Map(); -function useInert(node, enabled = true) { - useIsoMorphicEffect(() => { - var _a3; - if (!enabled) - return; - let element = typeof node === "function" ? node() : node.current; - if (!element) - return; - function cleanup() { - var _a4; - if (!element) - return; - let count2 = (_a4 = counts.get(element)) != null ? _a4 : 1; - if (count2 === 1) - counts.delete(element); - else - counts.set(element, count2 - 1); - if (count2 !== 1) - return; - let original = originals.get(element); - if (!original) - return; - if (original["aria-hidden"] === null) - element.removeAttribute("aria-hidden"); - else - element.setAttribute("aria-hidden", original["aria-hidden"]); - element.inert = original.inert; - originals.delete(element); - } - let count = (_a3 = counts.get(element)) != null ? _a3 : 0; - counts.set(element, count + 1); - if (count !== 0) - return cleanup; - originals.set(element, { - "aria-hidden": element.getAttribute("aria-hidden"), - inert: element.inert - }); - element.setAttribute("aria-hidden", "true"); - element.inert = true; - return cleanup; - }, [node, enabled]); -} - -// src/hooks/use-root-containers.tsx -var import_react30 = __toESM(__webpack_require__(/*! react */ "react"), 1); -function useRootContainers({ - defaultContainers = [], - portals -} = {}) { - let mainTreeNodeRef = (0, import_react30.useRef)(null); - let ownerDocument = useOwnerDocument(mainTreeNodeRef); - let resolveContainers2 = useEvent(() => { - var _a3; - let containers = []; - for (let container of defaultContainers) { - if (container === null) - continue; - if (container instanceof HTMLElement) { - containers.push(container); - } else if ("current" in container && container.current instanceof HTMLElement) { - containers.push(container.current); - } - } - if (portals == null ? void 0 : portals.current) { - for (let portal of portals.current) { - containers.push(portal); - } - } - for (let container of (_a3 = ownerDocument == null ? void 0 : ownerDocument.querySelectorAll("html > *, body > *")) != null ? _a3 : []) { - if (container === document.body) - continue; - if (container === document.head) - continue; - if (!(container instanceof HTMLElement)) - continue; - if (container.id === "headlessui-portal-root") - continue; - if (container.contains(mainTreeNodeRef.current)) - continue; - if (containers.some((defaultContainer) => container.contains(defaultContainer))) - continue; - containers.push(container); - } - return containers; - }); - return { - resolveContainers: resolveContainers2, - contains: useEvent( - (element) => resolveContainers2().some((container) => container.contains(element)) - ), - mainTreeNodeRef, - MainTreeNode: (0, import_react30.useMemo)(() => { - return function MainTreeNode() { - return /* @__PURE__ */ import_react30.default.createElement(Hidden, { features: 4 /* Hidden */, ref: mainTreeNodeRef }); - }; - }, [mainTreeNodeRef]) - }; -} - -// src/components/dialog/dialog.tsx -var reducers2 = { - [0 /* SetTitleId */](state, action) { - if (state.titleId === action.id) - return state; - return { ...state, titleId: action.id }; - } -}; -var DialogContext = (0, import_react31.createContext)(null); -DialogContext.displayName = "DialogContext"; -function useDialogContext(component) { - let context = (0, import_react31.useContext)(DialogContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useDialogContext); - throw err; - } - return context; -} -function useScrollLock(ownerDocument, enabled, resolveAllowedContainers = () => [document.body]) { - useDocumentOverflowLockedEffect(ownerDocument, enabled, (meta) => { - var _a3; - return { - containers: [...(_a3 = meta.containers) != null ? _a3 : [], resolveAllowedContainers] - }; - }); -} -function stateReducer2(state, action) { - return match(action.type, reducers2, state, action); -} -var DEFAULT_DIALOG_TAG = "div"; -var DialogRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; -function DialogFn(props, ref) { - var _a3; - let internalId = useId(); - let { - id = `headlessui-dialog-${internalId}`, - open, - onClose, - initialFocus, - __demoMode = false, - ...theirProps - } = props; - let [nestedDialogCount, setNestedDialogCount] = (0, import_react31.useState)(0); - let usesOpenClosedState = useOpenClosed(); - if (open === void 0 && usesOpenClosedState !== null) { - open = (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; - } - let internalDialogRef = (0, import_react31.useRef)(null); - let dialogRef = useSyncRefs(internalDialogRef, ref); - let ownerDocument = useOwnerDocument(internalDialogRef); - let hasOpen = props.hasOwnProperty("open") || usesOpenClosedState !== null; - let hasOnClose = props.hasOwnProperty("onClose"); - if (!hasOpen && !hasOnClose) { - throw new Error( - `You have to provide an \`open\` and an \`onClose\` prop to the \`Dialog\` component.` - ); - } - if (!hasOpen) { - throw new Error( - `You provided an \`onClose\` prop to the \`Dialog\`, but forgot an \`open\` prop.` - ); - } - if (!hasOnClose) { - throw new Error( - `You provided an \`open\` prop to the \`Dialog\`, but forgot an \`onClose\` prop.` - ); - } - if (typeof open !== "boolean") { - throw new Error( - `You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${open}` - ); - } - if (typeof onClose !== "function") { - throw new Error( - `You provided an \`onClose\` prop to the \`Dialog\`, but the value is not a function. Received: ${onClose}` - ); - } - let dialogState = open ? 0 /* Open */ : 1 /* Closed */; - let [state, dispatch] = (0, import_react31.useReducer)(stateReducer2, { - titleId: null, - descriptionId: null, - panelRef: (0, import_react31.createRef)() - }); - let close = useEvent(() => onClose(false)); - let setTitleId = useEvent((id2) => dispatch({ type: 0 /* SetTitleId */, id: id2 })); - let ready = useServerHandoffComplete(); - let enabled = ready ? __demoMode ? false : dialogState === 0 /* Open */ : false; - let hasNestedDialogs = nestedDialogCount > 1; - let hasParentDialog = (0, import_react31.useContext)(DialogContext) !== null; - let [portals, PortalWrapper] = useNestedPortals(); - let { - resolveContainers: resolveRootContainers, - mainTreeNodeRef, - MainTreeNode - } = useRootContainers({ - portals, - defaultContainers: [(_a3 = state.panelRef.current) != null ? _a3 : internalDialogRef.current] - }); - let position = !hasNestedDialogs ? "leaf" : "parent"; - let isClosing = usesOpenClosedState !== null ? (usesOpenClosedState & 4 /* Closing */) === 4 /* Closing */ : false; - let inertOthersEnabled = (() => { - if (hasParentDialog) - return false; - if (isClosing) - return false; - return enabled; - })(); - let resolveRootOfMainTreeNode = (0, import_react31.useCallback)(() => { - var _a4, _b; - return (_b = Array.from((_a4 = ownerDocument == null ? void 0 : ownerDocument.querySelectorAll("body > *")) != null ? _a4 : []).find((root) => { - if (root.id === "headlessui-portal-root") - return false; - return root.contains(mainTreeNodeRef.current) && root instanceof HTMLElement; - })) != null ? _b : null; - }, [mainTreeNodeRef]); - useInert(resolveRootOfMainTreeNode, inertOthersEnabled); - let inertParentDialogs = (() => { - if (hasNestedDialogs) - return true; - return enabled; - })(); - let resolveRootOfParentDialog = (0, import_react31.useCallback)(() => { - var _a4, _b; - return (_b = Array.from((_a4 = ownerDocument == null ? void 0 : ownerDocument.querySelectorAll("[data-headlessui-portal]")) != null ? _a4 : []).find( - (root) => root.contains(mainTreeNodeRef.current) && root instanceof HTMLElement - )) != null ? _b : null; - }, [mainTreeNodeRef]); - useInert(resolveRootOfParentDialog, inertParentDialogs); - let outsideClickEnabled = (() => { - if (!enabled) - return false; - if (hasNestedDialogs) - return false; - return true; - })(); - useOutsideClick(resolveRootContainers, close, outsideClickEnabled); - let escapeToCloseEnabled = (() => { - if (hasNestedDialogs) - return false; - if (dialogState !== 0 /* Open */) - return false; - return true; - })(); - useEventListener(ownerDocument == null ? void 0 : ownerDocument.defaultView, "keydown", (event) => { - if (!escapeToCloseEnabled) - return; - if (event.defaultPrevented) - return; - if (event.key !== "Escape" /* Escape */) - return; - event.preventDefault(); - event.stopPropagation(); - close(); - }); - let scrollLockEnabled = (() => { - if (isClosing) - return false; - if (dialogState !== 0 /* Open */) - return false; - if (hasParentDialog) - return false; - return true; - })(); - useScrollLock(ownerDocument, scrollLockEnabled, resolveRootContainers); - (0, import_react31.useEffect)(() => { - if (dialogState !== 0 /* Open */) - return; - if (!internalDialogRef.current) - return; - let observer = new ResizeObserver((entries) => { - for (let entry of entries) { - let rect = entry.target.getBoundingClientRect(); - if (rect.x === 0 && rect.y === 0 && rect.width === 0 && rect.height === 0) { - close(); - } - } - }); - observer.observe(internalDialogRef.current); - return () => observer.disconnect(); - }, [dialogState, internalDialogRef, close]); - let [describedby, DescriptionProvider] = useDescriptions(); - let contextBag = (0, import_react31.useMemo)( - () => [{ dialogState, close, setTitleId }, state], - [dialogState, state, close, setTitleId] - ); - let slot = (0, import_react31.useMemo)( - () => ({ open: dialogState === 0 /* Open */ }), - [dialogState] - ); - let ourProps = { - ref: dialogRef, - id, - role: "dialog", - "aria-modal": dialogState === 0 /* Open */ ? true : void 0, - "aria-labelledby": state.titleId, - "aria-describedby": describedby - }; - return /* @__PURE__ */ import_react31.default.createElement( - StackProvider, - { - type: "Dialog", - enabled: dialogState === 0 /* Open */, - element: internalDialogRef, - onUpdate: useEvent((message, type) => { - if (type !== "Dialog") - return; - match(message, { - [0 /* Add */]: () => setNestedDialogCount((count) => count + 1), - [1 /* Remove */]: () => setNestedDialogCount((count) => count - 1) - }); - }) - }, - /* @__PURE__ */ import_react31.default.createElement(ForcePortalRoot, { force: true }, /* @__PURE__ */ import_react31.default.createElement(Portal, null, /* @__PURE__ */ import_react31.default.createElement(DialogContext.Provider, { value: contextBag }, /* @__PURE__ */ import_react31.default.createElement(Portal.Group, { target: internalDialogRef }, /* @__PURE__ */ import_react31.default.createElement(ForcePortalRoot, { force: false }, /* @__PURE__ */ import_react31.default.createElement(DescriptionProvider, { slot, name: "Dialog.Description" }, /* @__PURE__ */ import_react31.default.createElement( - FocusTrap, - { - initialFocus, - containers: resolveRootContainers, - features: enabled ? match(position, { - parent: FocusTrap.features.RestoreFocus, - leaf: FocusTrap.features.All & ~FocusTrap.features.FocusLock - }) : FocusTrap.features.None - }, - /* @__PURE__ */ import_react31.default.createElement(PortalWrapper, null, render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_DIALOG_TAG, - features: DialogRenderFeatures, - visible: dialogState === 0 /* Open */, - name: "Dialog" - })) - ))))))), - /* @__PURE__ */ import_react31.default.createElement(MainTreeNode, null) - ); -} -var DEFAULT_OVERLAY_TAG = "div"; -function OverlayFn(props, ref) { - let internalId = useId(); - let { id = `headlessui-dialog-overlay-${internalId}`, ...theirProps } = props; - let [{ dialogState, close }] = useDialogContext("Dialog.Overlay"); - let overlayRef = useSyncRefs(ref); - let handleClick = useEvent((event) => { - if (event.target !== event.currentTarget) - return; - if (isDisabledReactIssue7711(event.currentTarget)) - return event.preventDefault(); - event.preventDefault(); - event.stopPropagation(); - close(); - }); - let slot = (0, import_react31.useMemo)( - () => ({ open: dialogState === 0 /* Open */ }), - [dialogState] - ); - let ourProps = { - ref: overlayRef, - id, - "aria-hidden": true, - onClick: handleClick - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_OVERLAY_TAG, - name: "Dialog.Overlay" - }); -} -var DEFAULT_BACKDROP_TAG = "div"; -function BackdropFn(props, ref) { - let internalId = useId(); - let { id = `headlessui-dialog-backdrop-${internalId}`, ...theirProps } = props; - let [{ dialogState }, state] = useDialogContext("Dialog.Backdrop"); - let backdropRef = useSyncRefs(ref); - (0, import_react31.useEffect)(() => { - if (state.panelRef.current === null) { - throw new Error( - `A component is being used, but a component is missing.` - ); - } - }, [state.panelRef]); - let slot = (0, import_react31.useMemo)( - () => ({ open: dialogState === 0 /* Open */ }), - [dialogState] - ); - let ourProps = { - ref: backdropRef, - id, - "aria-hidden": true - }; - return /* @__PURE__ */ import_react31.default.createElement(ForcePortalRoot, { force: true }, /* @__PURE__ */ import_react31.default.createElement(Portal, null, render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_BACKDROP_TAG, - name: "Dialog.Backdrop" - }))); -} -var DEFAULT_PANEL_TAG = "div"; -function PanelFn(props, ref) { - let internalId = useId(); - let { id = `headlessui-dialog-panel-${internalId}`, ...theirProps } = props; - let [{ dialogState }, state] = useDialogContext("Dialog.Panel"); - let panelRef = useSyncRefs(ref, state.panelRef); - let slot = (0, import_react31.useMemo)( - () => ({ open: dialogState === 0 /* Open */ }), - [dialogState] - ); - let handleClick = useEvent((event) => { - event.stopPropagation(); - }); - let ourProps = { - ref: panelRef, - id, - onClick: handleClick - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_PANEL_TAG, - name: "Dialog.Panel" - }); -} -var DEFAULT_TITLE_TAG = "h2"; -function TitleFn(props, ref) { - let internalId = useId(); - let { id = `headlessui-dialog-title-${internalId}`, ...theirProps } = props; - let [{ dialogState, setTitleId }] = useDialogContext("Dialog.Title"); - let titleRef = useSyncRefs(ref); - (0, import_react31.useEffect)(() => { - setTitleId(id); - return () => setTitleId(null); - }, [id, setTitleId]); - let slot = (0, import_react31.useMemo)( - () => ({ open: dialogState === 0 /* Open */ }), - [dialogState] - ); - let ourProps = { ref: titleRef, id }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_TITLE_TAG, - name: "Dialog.Title" - }); -} -var DialogRoot = forwardRefWithAs(DialogFn); -var Backdrop = forwardRefWithAs(BackdropFn); -var Panel = forwardRefWithAs(PanelFn); -var Overlay = forwardRefWithAs(OverlayFn); -var Title = forwardRefWithAs(TitleFn); -var Dialog = Object.assign(DialogRoot, { - Backdrop, - Panel, - Overlay, - Title, - Description -}); - -// src/components/disclosure/disclosure.tsx -var import_react33 = __toESM(__webpack_require__(/*! react */ "react"), 1); - -// src/utils/start-transition.ts -var import_react32 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var _a2; -var startTransition = ( - // Prefer React's `startTransition` if it's available. - // @ts-expect-error - `startTransition` doesn't exist in React < 18. - (_a2 = import_react32.default.startTransition) != null ? _a2 : function startTransition2(cb) { - cb(); - } -); - -// src/components/disclosure/disclosure.tsx -var reducers3 = { - [0 /* ToggleDisclosure */]: (state) => ({ - ...state, - disclosureState: match(state.disclosureState, { - [0 /* Open */]: 1 /* Closed */, - [1 /* Closed */]: 0 /* Open */ - }) - }), - [1 /* CloseDisclosure */]: (state) => { - if (state.disclosureState === 1 /* Closed */) - return state; - return { ...state, disclosureState: 1 /* Closed */ }; - }, - [4 /* LinkPanel */](state) { - if (state.linkedPanel === true) - return state; - return { ...state, linkedPanel: true }; - }, - [5 /* UnlinkPanel */](state) { - if (state.linkedPanel === false) - return state; - return { ...state, linkedPanel: false }; - }, - [2 /* SetButtonId */](state, action) { - if (state.buttonId === action.buttonId) - return state; - return { ...state, buttonId: action.buttonId }; - }, - [3 /* SetPanelId */](state, action) { - if (state.panelId === action.panelId) - return state; - return { ...state, panelId: action.panelId }; - } -}; -var DisclosureContext = (0, import_react33.createContext)(null); -DisclosureContext.displayName = "DisclosureContext"; -function useDisclosureContext(component) { - let context = (0, import_react33.useContext)(DisclosureContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useDisclosureContext); - throw err; - } - return context; -} -var DisclosureAPIContext = (0, import_react33.createContext)(null); -DisclosureAPIContext.displayName = "DisclosureAPIContext"; -function useDisclosureAPIContext(component) { - let context = (0, import_react33.useContext)(DisclosureAPIContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useDisclosureAPIContext); - throw err; - } - return context; -} -var DisclosurePanelContext = (0, import_react33.createContext)(null); -DisclosurePanelContext.displayName = "DisclosurePanelContext"; -function useDisclosurePanelContext() { - return (0, import_react33.useContext)(DisclosurePanelContext); -} -function stateReducer3(state, action) { - return match(action.type, reducers3, state, action); -} -var DEFAULT_DISCLOSURE_TAG = import_react33.Fragment; -function DisclosureFn(props, ref) { - let { defaultOpen = false, ...theirProps } = props; - let internalDisclosureRef = (0, import_react33.useRef)(null); - let disclosureRef = useSyncRefs( - ref, - optionalRef( - (ref2) => { - internalDisclosureRef.current = ref2; - }, - props.as === void 0 || // @ts-expect-error The `as` prop _can_ be a Fragment - props.as === import_react33.Fragment - ) - ); - let panelRef = (0, import_react33.useRef)(null); - let buttonRef = (0, import_react33.useRef)(null); - let reducerBag = (0, import_react33.useReducer)(stateReducer3, { - disclosureState: defaultOpen ? 0 /* Open */ : 1 /* Closed */, - linkedPanel: false, - buttonRef, - panelRef, - buttonId: null, - panelId: null - }); - let [{ disclosureState, buttonId }, dispatch] = reducerBag; - let close = useEvent((focusableElement) => { - dispatch({ type: 1 /* CloseDisclosure */ }); - let ownerDocument = getOwnerDocument(internalDisclosureRef); - if (!ownerDocument) - return; - if (!buttonId) - return; - let restoreElement = (() => { - if (!focusableElement) - return ownerDocument.getElementById(buttonId); - if (focusableElement instanceof HTMLElement) - return focusableElement; - if (focusableElement.current instanceof HTMLElement) - return focusableElement.current; - return ownerDocument.getElementById(buttonId); - })(); - restoreElement == null ? void 0 : restoreElement.focus(); - }); - let api = (0, import_react33.useMemo)(() => ({ close }), [close]); - let slot = (0, import_react33.useMemo)( - () => ({ open: disclosureState === 0 /* Open */, close }), - [disclosureState, close] - ); - let ourProps = { - ref: disclosureRef - }; - return /* @__PURE__ */ import_react33.default.createElement(DisclosureContext.Provider, { value: reducerBag }, /* @__PURE__ */ import_react33.default.createElement(DisclosureAPIContext.Provider, { value: api }, /* @__PURE__ */ import_react33.default.createElement( - OpenClosedProvider, - { - value: match(disclosureState, { - [0 /* Open */]: 1 /* Open */, - [1 /* Closed */]: 2 /* Closed */ - }) - }, - render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_DISCLOSURE_TAG, - name: "Disclosure" - }) - ))); -} -var DEFAULT_BUTTON_TAG2 = "button"; -function ButtonFn2(props, ref) { - let internalId = useId(); - let { id = `headlessui-disclosure-button-${internalId}`, ...theirProps } = props; - let [state, dispatch] = useDisclosureContext("Disclosure.Button"); - let panelContext = useDisclosurePanelContext(); - let isWithinPanel = panelContext === null ? false : panelContext === state.panelId; - let internalButtonRef = (0, import_react33.useRef)(null); - let buttonRef = useSyncRefs(internalButtonRef, ref, !isWithinPanel ? state.buttonRef : null); - (0, import_react33.useEffect)(() => { - if (isWithinPanel) - return; - dispatch({ type: 2 /* SetButtonId */, buttonId: id }); - return () => { - dispatch({ type: 2 /* SetButtonId */, buttonId: null }); - }; - }, [id, dispatch, isWithinPanel]); - let handleKeyDown = useEvent((event) => { - var _a3; - if (isWithinPanel) { - if (state.disclosureState === 1 /* Closed */) - return; - switch (event.key) { - case " " /* Space */: - case "Enter" /* Enter */: - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 0 /* ToggleDisclosure */ }); - (_a3 = state.buttonRef.current) == null ? void 0 : _a3.focus(); - break; - } - } else { - switch (event.key) { - case " " /* Space */: - case "Enter" /* Enter */: - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 0 /* ToggleDisclosure */ }); - break; - } - } - }); - let handleKeyUp = useEvent((event) => { - switch (event.key) { - case " " /* Space */: - event.preventDefault(); - break; - } - }); - let handleClick = useEvent((event) => { - var _a3; - if (isDisabledReactIssue7711(event.currentTarget)) - return; - if (props.disabled) - return; - if (isWithinPanel) { - dispatch({ type: 0 /* ToggleDisclosure */ }); - (_a3 = state.buttonRef.current) == null ? void 0 : _a3.focus(); - } else { - dispatch({ type: 0 /* ToggleDisclosure */ }); - } - }); - let slot = (0, import_react33.useMemo)( - () => ({ open: state.disclosureState === 0 /* Open */ }), - [state] - ); - let type = useResolveButtonType(props, internalButtonRef); - let ourProps = isWithinPanel ? { ref: buttonRef, type, onKeyDown: handleKeyDown, onClick: handleClick } : { - ref: buttonRef, - id, - type, - "aria-expanded": props.disabled ? void 0 : state.disclosureState === 0 /* Open */, - "aria-controls": state.linkedPanel ? state.panelId : void 0, - onKeyDown: handleKeyDown, - onKeyUp: handleKeyUp, - onClick: handleClick - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_BUTTON_TAG2, - name: "Disclosure.Button" - }); -} -var DEFAULT_PANEL_TAG2 = "div"; -var PanelRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; -function PanelFn2(props, ref) { - let internalId = useId(); - let { id = `headlessui-disclosure-panel-${internalId}`, ...theirProps } = props; - let [state, dispatch] = useDisclosureContext("Disclosure.Panel"); - let { close } = useDisclosureAPIContext("Disclosure.Panel"); - let panelRef = useSyncRefs(ref, state.panelRef, (el) => { - startTransition(() => dispatch({ type: el ? 4 /* LinkPanel */ : 5 /* UnlinkPanel */ })); - }); - (0, import_react33.useEffect)(() => { - dispatch({ type: 3 /* SetPanelId */, panelId: id }); - return () => { - dispatch({ type: 3 /* SetPanelId */, panelId: null }); - }; - }, [id, dispatch]); - let usesOpenClosedState = useOpenClosed(); - let visible = (() => { - if (usesOpenClosedState !== null) { - return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; - } - return state.disclosureState === 0 /* Open */; - })(); - let slot = (0, import_react33.useMemo)( - () => ({ open: state.disclosureState === 0 /* Open */, close }), - [state, close] - ); - let ourProps = { - ref: panelRef, - id - }; - return /* @__PURE__ */ import_react33.default.createElement(DisclosurePanelContext.Provider, { value: state.panelId }, render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_PANEL_TAG2, - features: PanelRenderFeatures, - visible, - name: "Disclosure.Panel" - })); -} -var DisclosureRoot = forwardRefWithAs(DisclosureFn); -var Button2 = forwardRefWithAs(ButtonFn2); -var Panel2 = forwardRefWithAs(PanelFn2); -var Disclosure = Object.assign(DisclosureRoot, { Button: Button2, Panel: Panel2 }); - -// src/components/listbox/listbox.tsx -var import_react35 = __toESM(__webpack_require__(/*! react */ "react"), 1); - -// src/hooks/use-text-value.ts -var import_react34 = __webpack_require__(/*! react */ "react"); - -// src/utils/get-text-value.ts -var emojiRegex = /([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g; -function getTextContents(element) { - var _a3, _b; - let currentInnerText = (_a3 = element.innerText) != null ? _a3 : ""; - let copy = element.cloneNode(true); - if (!(copy instanceof HTMLElement)) { - return currentInnerText; - } - let dropped = false; - for (let child of copy.querySelectorAll('[hidden],[aria-hidden],[role="img"]')) { - child.remove(); - dropped = true; - } - let value = dropped ? (_b = copy.innerText) != null ? _b : "" : currentInnerText; - if (emojiRegex.test(value)) { - value = value.replace(emojiRegex, ""); - } - return value; -} -function getTextValue(element) { - let label = element.getAttribute("aria-label"); - if (typeof label === "string") - return label.trim(); - let labelledby = element.getAttribute("aria-labelledby"); - if (labelledby) { - let labels = labelledby.split(" ").map((labelledby2) => { - let labelEl = document.getElementById(labelledby2); - if (labelEl) { - let label2 = labelEl.getAttribute("aria-label"); - if (typeof label2 === "string") - return label2.trim(); - return getTextContents(labelEl).trim(); - } - return null; - }).filter(Boolean); - if (labels.length > 0) - return labels.join(", "); - } - return getTextContents(element).trim(); -} - -// src/hooks/use-text-value.ts -function useTextValue(element) { - let cacheKey = (0, import_react34.useRef)(""); - let cacheValue = (0, import_react34.useRef)(""); - return useEvent(() => { - let el = element.current; - if (!el) - return ""; - let currentKey = el.innerText; - if (cacheKey.current === currentKey) { - return cacheValue.current; - } - let value = getTextValue(el).trim().toLowerCase(); - cacheKey.current = currentKey; - cacheValue.current = value; - return value; - }); -} - -// src/components/listbox/listbox.tsx -function adjustOrderedState2(state, adjustment = (i) => i) { - let currentActiveOption = state.activeOptionIndex !== null ? state.options[state.activeOptionIndex] : null; - let sortedOptions = sortByDomNode( - adjustment(state.options.slice()), - (option) => option.dataRef.current.domRef.current - ); - let adjustedActiveOptionIndex = currentActiveOption ? sortedOptions.indexOf(currentActiveOption) : null; - if (adjustedActiveOptionIndex === -1) { - adjustedActiveOptionIndex = null; - } - return { - options: sortedOptions, - activeOptionIndex: adjustedActiveOptionIndex - }; -} -var reducers4 = { - [1 /* CloseListbox */](state) { - if (state.dataRef.current.disabled) - return state; - if (state.listboxState === 1 /* Closed */) - return state; - return { ...state, activeOptionIndex: null, listboxState: 1 /* Closed */ }; - }, - [0 /* OpenListbox */](state) { - if (state.dataRef.current.disabled) - return state; - if (state.listboxState === 0 /* Open */) - return state; - let activeOptionIndex = state.activeOptionIndex; - let { isSelected } = state.dataRef.current; - let optionIdx = state.options.findIndex((option) => isSelected(option.dataRef.current.value)); - if (optionIdx !== -1) { - activeOptionIndex = optionIdx; - } - return { ...state, listboxState: 0 /* Open */, activeOptionIndex }; - }, - [2 /* GoToOption */](state, action) { - var _a3; - if (state.dataRef.current.disabled) - return state; - if (state.listboxState === 1 /* Closed */) - return state; - let adjustedState = adjustOrderedState2(state); - let activeOptionIndex = calculateActiveIndex(action, { - resolveItems: () => adjustedState.options, - resolveActiveIndex: () => adjustedState.activeOptionIndex, - resolveId: (option) => option.id, - resolveDisabled: (option) => option.dataRef.current.disabled - }); - return { - ...state, - ...adjustedState, - searchQuery: "", - activeOptionIndex, - activationTrigger: (_a3 = action.trigger) != null ? _a3 : 1 /* Other */ - }; - }, - [3 /* Search */]: (state, action) => { - if (state.dataRef.current.disabled) - return state; - if (state.listboxState === 1 /* Closed */) - return state; - let wasAlreadySearching = state.searchQuery !== ""; - let offset = wasAlreadySearching ? 0 : 1; - let searchQuery = state.searchQuery + action.value.toLowerCase(); - let reOrderedOptions = state.activeOptionIndex !== null ? state.options.slice(state.activeOptionIndex + offset).concat(state.options.slice(0, state.activeOptionIndex + offset)) : state.options; - let matchingOption = reOrderedOptions.find( - (option) => { - var _a3; - return !option.dataRef.current.disabled && ((_a3 = option.dataRef.current.textValue) == null ? void 0 : _a3.startsWith(searchQuery)); - } - ); - let matchIdx = matchingOption ? state.options.indexOf(matchingOption) : -1; - if (matchIdx === -1 || matchIdx === state.activeOptionIndex) - return { ...state, searchQuery }; - return { - ...state, - searchQuery, - activeOptionIndex: matchIdx, - activationTrigger: 1 /* Other */ - }; - }, - [4 /* ClearSearch */](state) { - if (state.dataRef.current.disabled) - return state; - if (state.listboxState === 1 /* Closed */) - return state; - if (state.searchQuery === "") - return state; - return { ...state, searchQuery: "" }; - }, - [5 /* RegisterOption */]: (state, action) => { - let option = { id: action.id, dataRef: action.dataRef }; - let adjustedState = adjustOrderedState2(state, (options) => [...options, option]); - if (state.activeOptionIndex === null) { - if (state.dataRef.current.isSelected(action.dataRef.current.value)) { - adjustedState.activeOptionIndex = adjustedState.options.indexOf(option); - } - } - return { ...state, ...adjustedState }; - }, - [6 /* UnregisterOption */]: (state, action) => { - let adjustedState = adjustOrderedState2(state, (options) => { - let idx = options.findIndex((a) => a.id === action.id); - if (idx !== -1) - options.splice(idx, 1); - return options; - }); - return { - ...state, - ...adjustedState, - activationTrigger: 1 /* Other */ - }; - }, - [7 /* RegisterLabel */]: (state, action) => { - return { - ...state, - labelId: action.id - }; - } -}; -var ListboxActionsContext = (0, import_react35.createContext)(null); -ListboxActionsContext.displayName = "ListboxActionsContext"; -function useActions2(component) { - let context = (0, import_react35.useContext)(ListboxActionsContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useActions2); - throw err; - } - return context; -} -var ListboxDataContext = (0, import_react35.createContext)(null); -ListboxDataContext.displayName = "ListboxDataContext"; -function useData2(component) { - let context = (0, import_react35.useContext)(ListboxDataContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useData2); - throw err; - } - return context; -} -function stateReducer4(state, action) { - return match(action.type, reducers4, state, action); -} -var DEFAULT_LISTBOX_TAG = import_react35.Fragment; -function ListboxFn(props, ref) { - let { - value: controlledValue, - defaultValue, - form: formName, - name, - onChange: controlledOnChange, - by = (a, z) => a === z, - disabled = false, - horizontal = false, - multiple = false, - ...theirProps - } = props; - const orientation = horizontal ? "horizontal" : "vertical"; - let listboxRef = useSyncRefs(ref); - let [value = multiple ? [] : void 0, theirOnChange] = useControllable( - controlledValue, - controlledOnChange, - defaultValue - ); - let [state, dispatch] = (0, import_react35.useReducer)(stateReducer4, { - dataRef: (0, import_react35.createRef)(), - listboxState: 1 /* Closed */, - options: [], - searchQuery: "", - labelId: null, - activeOptionIndex: null, - activationTrigger: 1 /* Other */ - }); - let optionsPropsRef = (0, import_react35.useRef)({ static: false, hold: false }); - let labelRef = (0, import_react35.useRef)(null); - let buttonRef = (0, import_react35.useRef)(null); - let optionsRef = (0, import_react35.useRef)(null); - let compare = useEvent( - typeof by === "string" ? (a, z) => { - let property = by; - return (a == null ? void 0 : a[property]) === (z == null ? void 0 : z[property]); - } : by - ); - let isSelected = (0, import_react35.useCallback)( - (compareValue) => match(data.mode, { - [1 /* Multi */]: () => value.some((option) => compare(option, compareValue)), - [0 /* Single */]: () => compare(value, compareValue) - }), - [value] - ); - let data = (0, import_react35.useMemo)( - () => ({ - ...state, - value, - disabled, - mode: multiple ? 1 /* Multi */ : 0 /* Single */, - orientation, - compare, - isSelected, - optionsPropsRef, - labelRef, - buttonRef, - optionsRef - }), - [value, disabled, multiple, state] - ); - useIsoMorphicEffect(() => { - state.dataRef.current = data; - }, [data]); - useOutsideClick( - [data.buttonRef, data.optionsRef], - (event, target) => { - var _a3; - dispatch({ type: 1 /* CloseListbox */ }); - if (!isFocusableElement(target, 1 /* Loose */)) { - event.preventDefault(); - (_a3 = data.buttonRef.current) == null ? void 0 : _a3.focus(); - } - }, - data.listboxState === 0 /* Open */ - ); - let slot = (0, import_react35.useMemo)( - () => ({ open: data.listboxState === 0 /* Open */, disabled, value }), - [data, disabled, value] - ); - let selectOption = useEvent((id) => { - let option = data.options.find((item) => item.id === id); - if (!option) - return; - onChange(option.dataRef.current.value); - }); - let selectActiveOption = useEvent(() => { - if (data.activeOptionIndex !== null) { - let { dataRef, id } = data.options[data.activeOptionIndex]; - onChange(dataRef.current.value); - dispatch({ type: 2 /* GoToOption */, focus: 4 /* Specific */, id }); - } - }); - let openListbox = useEvent(() => dispatch({ type: 0 /* OpenListbox */ })); - let closeListbox = useEvent(() => dispatch({ type: 1 /* CloseListbox */ })); - let goToOption = useEvent((focus, id, trigger) => { - if (focus === 4 /* Specific */) { - return dispatch({ type: 2 /* GoToOption */, focus: 4 /* Specific */, id, trigger }); - } - return dispatch({ type: 2 /* GoToOption */, focus, trigger }); - }); - let registerOption = useEvent((id, dataRef) => { - dispatch({ type: 5 /* RegisterOption */, id, dataRef }); - return () => dispatch({ type: 6 /* UnregisterOption */, id }); - }); - let registerLabel = useEvent((id) => { - dispatch({ type: 7 /* RegisterLabel */, id }); - return () => dispatch({ type: 7 /* RegisterLabel */, id: null }); - }); - let onChange = useEvent((value2) => { - return match(data.mode, { - [0 /* Single */]() { - return theirOnChange == null ? void 0 : theirOnChange(value2); - }, - [1 /* Multi */]() { - let copy = data.value.slice(); - let idx = copy.findIndex((item) => compare(item, value2)); - if (idx === -1) { - copy.push(value2); - } else { - copy.splice(idx, 1); - } - return theirOnChange == null ? void 0 : theirOnChange(copy); - } - }); - }); - let search = useEvent((value2) => dispatch({ type: 3 /* Search */, value: value2 })); - let clearSearch = useEvent(() => dispatch({ type: 4 /* ClearSearch */ })); - let actions = (0, import_react35.useMemo)( - () => ({ - onChange, - registerOption, - registerLabel, - goToOption, - closeListbox, - openListbox, - selectActiveOption, - selectOption, - search, - clearSearch - }), - [] - ); - let ourProps = { ref: listboxRef }; - let form = (0, import_react35.useRef)(null); - let d = useDisposables(); - (0, import_react35.useEffect)(() => { - if (!form.current) - return; - if (defaultValue === void 0) - return; - d.addEventListener(form.current, "reset", () => { - onChange(defaultValue); - }); - }, [ - form, - onChange - /* Explicitly ignoring `defaultValue` */ - ]); - return /* @__PURE__ */ import_react35.default.createElement(ListboxActionsContext.Provider, { value: actions }, /* @__PURE__ */ import_react35.default.createElement(ListboxDataContext.Provider, { value: data }, /* @__PURE__ */ import_react35.default.createElement( - OpenClosedProvider, - { - value: match(data.listboxState, { - [0 /* Open */]: 1 /* Open */, - [1 /* Closed */]: 2 /* Closed */ - }) - }, - name != null && value != null && objectToFormEntries({ [name]: value }).map(([name2, value2], idx) => /* @__PURE__ */ import_react35.default.createElement( - Hidden, - { - features: 4 /* Hidden */, - ref: idx === 0 ? (element) => { - var _a3; - form.current = (_a3 = element == null ? void 0 : element.closest("form")) != null ? _a3 : null; - } : void 0, - ...compact({ - key: name2, - as: "input", - type: "hidden", - hidden: true, - readOnly: true, - form: formName, - name: name2, - value: value2 - }) - } - )), - render({ ourProps, theirProps, slot, defaultTag: DEFAULT_LISTBOX_TAG, name: "Listbox" }) - ))); -} -var DEFAULT_BUTTON_TAG3 = "button"; -function ButtonFn3(props, ref) { - var _a3; - let internalId = useId(); - let { id = `headlessui-listbox-button-${internalId}`, ...theirProps } = props; - let data = useData2("Listbox.Button"); - let actions = useActions2("Listbox.Button"); - let buttonRef = useSyncRefs(data.buttonRef, ref); - let d = useDisposables(); - let handleKeyDown = useEvent((event) => { - switch (event.key) { - case " " /* Space */: - case "Enter" /* Enter */: - case "ArrowDown" /* ArrowDown */: - event.preventDefault(); - actions.openListbox(); - d.nextFrame(() => { - if (!data.value) - actions.goToOption(0 /* First */); - }); - break; - case "ArrowUp" /* ArrowUp */: - event.preventDefault(); - actions.openListbox(); - d.nextFrame(() => { - if (!data.value) - actions.goToOption(3 /* Last */); - }); - break; - } - }); - let handleKeyUp = useEvent((event) => { - switch (event.key) { - case " " /* Space */: - event.preventDefault(); - break; - } - }); - let handleClick = useEvent((event) => { - if (isDisabledReactIssue7711(event.currentTarget)) - return event.preventDefault(); - if (data.listboxState === 0 /* Open */) { - actions.closeListbox(); - d.nextFrame(() => { - var _a4; - return (_a4 = data.buttonRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); - }); - } else { - event.preventDefault(); - actions.openListbox(); - } - }); - let labelledby = useComputed(() => { - if (!data.labelId) - return void 0; - return [data.labelId, id].join(" "); - }, [data.labelId, id]); - let slot = (0, import_react35.useMemo)( - () => ({ - open: data.listboxState === 0 /* Open */, - disabled: data.disabled, - value: data.value - }), - [data] - ); - let ourProps = { - ref: buttonRef, - id, - type: useResolveButtonType(props, data.buttonRef), - "aria-haspopup": "listbox", - "aria-controls": (_a3 = data.optionsRef.current) == null ? void 0 : _a3.id, - "aria-expanded": data.disabled ? void 0 : data.listboxState === 0 /* Open */, - "aria-labelledby": labelledby, - disabled: data.disabled, - onKeyDown: handleKeyDown, - onKeyUp: handleKeyUp, - onClick: handleClick - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_BUTTON_TAG3, - name: "Listbox.Button" - }); -} -var DEFAULT_LABEL_TAG2 = "label"; -function LabelFn2(props, ref) { - let internalId = useId(); - let { id = `headlessui-listbox-label-${internalId}`, ...theirProps } = props; - let data = useData2("Listbox.Label"); - let actions = useActions2("Listbox.Label"); - let labelRef = useSyncRefs(data.labelRef, ref); - useIsoMorphicEffect(() => actions.registerLabel(id), [id]); - let handleClick = useEvent(() => { - var _a3; - return (_a3 = data.buttonRef.current) == null ? void 0 : _a3.focus({ preventScroll: true }); - }); - let slot = (0, import_react35.useMemo)( - () => ({ open: data.listboxState === 0 /* Open */, disabled: data.disabled }), - [data] - ); - let ourProps = { ref: labelRef, id, onClick: handleClick }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_LABEL_TAG2, - name: "Listbox.Label" - }); -} -var DEFAULT_OPTIONS_TAG2 = "ul"; -var OptionsRenderFeatures2 = 1 /* RenderStrategy */ | 2 /* Static */; -function OptionsFn2(props, ref) { - var _a3; - let internalId = useId(); - let { id = `headlessui-listbox-options-${internalId}`, ...theirProps } = props; - let data = useData2("Listbox.Options"); - let actions = useActions2("Listbox.Options"); - let optionsRef = useSyncRefs(data.optionsRef, ref); - let d = useDisposables(); - let searchDisposables = useDisposables(); - let usesOpenClosedState = useOpenClosed(); - let visible = (() => { - if (usesOpenClosedState !== null) { - return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; - } - return data.listboxState === 0 /* Open */; - })(); - (0, import_react35.useEffect)(() => { - var _a4; - let container = data.optionsRef.current; - if (!container) - return; - if (data.listboxState !== 0 /* Open */) - return; - if (container === ((_a4 = getOwnerDocument(container)) == null ? void 0 : _a4.activeElement)) - return; - container.focus({ preventScroll: true }); - }, [data.listboxState, data.optionsRef]); - let handleKeyDown = useEvent((event) => { - searchDisposables.dispose(); - switch (event.key) { - case " " /* Space */: - if (data.searchQuery !== "") { - event.preventDefault(); - event.stopPropagation(); - return actions.search(event.key); - } - case "Enter" /* Enter */: - event.preventDefault(); - event.stopPropagation(); - if (data.activeOptionIndex !== null) { - let { dataRef } = data.options[data.activeOptionIndex]; - actions.onChange(dataRef.current.value); - } - if (data.mode === 0 /* Single */) { - actions.closeListbox(); - disposables().nextFrame(() => { - var _a4; - return (_a4 = data.buttonRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); - }); - } - break; - case match(data.orientation, { vertical: "ArrowDown" /* ArrowDown */, horizontal: "ArrowRight" /* ArrowRight */ }): - event.preventDefault(); - event.stopPropagation(); - return actions.goToOption(2 /* Next */); - case match(data.orientation, { vertical: "ArrowUp" /* ArrowUp */, horizontal: "ArrowLeft" /* ArrowLeft */ }): - event.preventDefault(); - event.stopPropagation(); - return actions.goToOption(1 /* Previous */); - case "Home" /* Home */: - case "PageUp" /* PageUp */: - event.preventDefault(); - event.stopPropagation(); - return actions.goToOption(0 /* First */); - case "End" /* End */: - case "PageDown" /* PageDown */: - event.preventDefault(); - event.stopPropagation(); - return actions.goToOption(3 /* Last */); - case "Escape" /* Escape */: - event.preventDefault(); - event.stopPropagation(); - actions.closeListbox(); - return d.nextFrame(() => { - var _a4; - return (_a4 = data.buttonRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); - }); - case "Tab" /* Tab */: - event.preventDefault(); - event.stopPropagation(); - break; - default: - if (event.key.length === 1) { - actions.search(event.key); - searchDisposables.setTimeout(() => actions.clearSearch(), 350); - } - break; - } - }); - let labelledby = useComputed( - () => { - var _a4, _b, _c; - return (_c = (_a4 = data.labelRef.current) == null ? void 0 : _a4.id) != null ? _c : (_b = data.buttonRef.current) == null ? void 0 : _b.id; - }, - [data.labelRef.current, data.buttonRef.current] - ); - let slot = (0, import_react35.useMemo)( - () => ({ open: data.listboxState === 0 /* Open */ }), - [data] - ); - let ourProps = { - "aria-activedescendant": data.activeOptionIndex === null ? void 0 : (_a3 = data.options[data.activeOptionIndex]) == null ? void 0 : _a3.id, - "aria-multiselectable": data.mode === 1 /* Multi */ ? true : void 0, - "aria-labelledby": labelledby, - "aria-orientation": data.orientation, - id, - onKeyDown: handleKeyDown, - role: "listbox", - tabIndex: 0, - ref: optionsRef - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_OPTIONS_TAG2, - features: OptionsRenderFeatures2, - visible, - name: "Listbox.Options" - }); -} -var DEFAULT_OPTION_TAG2 = "li"; -function OptionFn2(props, ref) { - let internalId = useId(); - let { - id = `headlessui-listbox-option-${internalId}`, - disabled = false, - value, - ...theirProps - } = props; - let data = useData2("Listbox.Option"); - let actions = useActions2("Listbox.Option"); - let active = data.activeOptionIndex !== null ? data.options[data.activeOptionIndex].id === id : false; - let selected = data.isSelected(value); - let internalOptionRef = (0, import_react35.useRef)(null); - let getTextValue2 = useTextValue(internalOptionRef); - let bag = useLatestValue({ - disabled, - value, - domRef: internalOptionRef, - get textValue() { - return getTextValue2(); - } - }); - let optionRef = useSyncRefs(ref, internalOptionRef); - useIsoMorphicEffect(() => { - if (data.listboxState !== 0 /* Open */) - return; - if (!active) - return; - if (data.activationTrigger === 0 /* Pointer */) - return; - let d = disposables(); - d.requestAnimationFrame(() => { - var _a3, _b; - (_b = (_a3 = internalOptionRef.current) == null ? void 0 : _a3.scrollIntoView) == null ? void 0 : _b.call(_a3, { block: "nearest" }); - }); - return d.dispose; - }, [ - internalOptionRef, - active, - data.listboxState, - data.activationTrigger, - /* We also want to trigger this when the position of the active item changes so that we can re-trigger the scrollIntoView */ - data.activeOptionIndex - ]); - useIsoMorphicEffect(() => actions.registerOption(id, bag), [bag, id]); - let handleClick = useEvent((event) => { - if (disabled) - return event.preventDefault(); - actions.onChange(value); - if (data.mode === 0 /* Single */) { - actions.closeListbox(); - disposables().nextFrame(() => { - var _a3; - return (_a3 = data.buttonRef.current) == null ? void 0 : _a3.focus({ preventScroll: true }); - }); - } - }); - let handleFocus = useEvent(() => { - if (disabled) - return actions.goToOption(5 /* Nothing */); - actions.goToOption(4 /* Specific */, id); - }); - let pointer = useTrackedPointer(); - let handleEnter = useEvent((evt) => pointer.update(evt)); - let handleMove = useEvent((evt) => { - if (!pointer.wasMoved(evt)) - return; - if (disabled) - return; - if (active) - return; - actions.goToOption(4 /* Specific */, id, 0 /* Pointer */); - }); - let handleLeave = useEvent((evt) => { - if (!pointer.wasMoved(evt)) - return; - if (disabled) - return; - if (!active) - return; - actions.goToOption(5 /* Nothing */); - }); - let slot = (0, import_react35.useMemo)( - () => ({ active, selected, disabled }), - [active, selected, disabled] - ); - let ourProps = { - id, - ref: optionRef, - role: "option", - tabIndex: disabled === true ? void 0 : -1, - "aria-disabled": disabled === true ? true : void 0, - // According to the WAI-ARIA best practices, we should use aria-checked for - // multi-select,but Voice-Over disagrees. So we use aria-checked instead for - // both single and multi-select. - "aria-selected": selected, - disabled: void 0, - // Never forward the `disabled` prop - onClick: handleClick, - onFocus: handleFocus, - onPointerEnter: handleEnter, - onMouseEnter: handleEnter, - onPointerMove: handleMove, - onMouseMove: handleMove, - onPointerLeave: handleLeave, - onMouseLeave: handleLeave - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_OPTION_TAG2, - name: "Listbox.Option" - }); -} -var ListboxRoot = forwardRefWithAs(ListboxFn); -var Button3 = forwardRefWithAs(ButtonFn3); -var Label2 = forwardRefWithAs(LabelFn2); -var Options2 = forwardRefWithAs(OptionsFn2); -var Option2 = forwardRefWithAs(OptionFn2); -var Listbox = Object.assign(ListboxRoot, { Button: Button3, Label: Label2, Options: Options2, Option: Option2 }); - -// src/components/menu/menu.tsx -var import_react36 = __toESM(__webpack_require__(/*! react */ "react"), 1); -function adjustOrderedState3(state, adjustment = (i) => i) { - let currentActiveItem = state.activeItemIndex !== null ? state.items[state.activeItemIndex] : null; - let sortedItems = sortByDomNode( - adjustment(state.items.slice()), - (item) => item.dataRef.current.domRef.current - ); - let adjustedActiveItemIndex = currentActiveItem ? sortedItems.indexOf(currentActiveItem) : null; - if (adjustedActiveItemIndex === -1) { - adjustedActiveItemIndex = null; - } - return { - items: sortedItems, - activeItemIndex: adjustedActiveItemIndex - }; -} -var reducers5 = { - [1 /* CloseMenu */](state) { - if (state.menuState === 1 /* Closed */) - return state; - return { ...state, activeItemIndex: null, menuState: 1 /* Closed */ }; - }, - [0 /* OpenMenu */](state) { - if (state.menuState === 0 /* Open */) - return state; - return { - ...state, - /* We can turn off demo mode once we re-open the `Menu` */ - __demoMode: false, - menuState: 0 /* Open */ - }; - }, - [2 /* GoToItem */]: (state, action) => { - var _a3; - let adjustedState = adjustOrderedState3(state); - let activeItemIndex = calculateActiveIndex(action, { - resolveItems: () => adjustedState.items, - resolveActiveIndex: () => adjustedState.activeItemIndex, - resolveId: (item) => item.id, - resolveDisabled: (item) => item.dataRef.current.disabled - }); - return { - ...state, - ...adjustedState, - searchQuery: "", - activeItemIndex, - activationTrigger: (_a3 = action.trigger) != null ? _a3 : 1 /* Other */ - }; - }, - [3 /* Search */]: (state, action) => { - let wasAlreadySearching = state.searchQuery !== ""; - let offset = wasAlreadySearching ? 0 : 1; - let searchQuery = state.searchQuery + action.value.toLowerCase(); - let reOrderedItems = state.activeItemIndex !== null ? state.items.slice(state.activeItemIndex + offset).concat(state.items.slice(0, state.activeItemIndex + offset)) : state.items; - let matchingItem = reOrderedItems.find( - (item) => { - var _a3; - return ((_a3 = item.dataRef.current.textValue) == null ? void 0 : _a3.startsWith(searchQuery)) && !item.dataRef.current.disabled; - } - ); - let matchIdx = matchingItem ? state.items.indexOf(matchingItem) : -1; - if (matchIdx === -1 || matchIdx === state.activeItemIndex) - return { ...state, searchQuery }; - return { - ...state, - searchQuery, - activeItemIndex: matchIdx, - activationTrigger: 1 /* Other */ - }; - }, - [4 /* ClearSearch */](state) { - if (state.searchQuery === "") - return state; - return { ...state, searchQuery: "", searchActiveItemIndex: null }; - }, - [5 /* RegisterItem */]: (state, action) => { - let adjustedState = adjustOrderedState3(state, (items) => [ - ...items, - { id: action.id, dataRef: action.dataRef } - ]); - return { ...state, ...adjustedState }; - }, - [6 /* UnregisterItem */]: (state, action) => { - let adjustedState = adjustOrderedState3(state, (items) => { - let idx = items.findIndex((a) => a.id === action.id); - if (idx !== -1) - items.splice(idx, 1); - return items; - }); - return { - ...state, - ...adjustedState, - activationTrigger: 1 /* Other */ - }; - } -}; -var MenuContext = (0, import_react36.createContext)(null); -MenuContext.displayName = "MenuContext"; -function useMenuContext(component) { - let context = (0, import_react36.useContext)(MenuContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, useMenuContext); - throw err; - } - return context; -} -function stateReducer5(state, action) { - return match(action.type, reducers5, state, action); -} -var DEFAULT_MENU_TAG = import_react36.Fragment; -function MenuFn(props, ref) { - let { __demoMode = false, ...theirProps } = props; - let reducerBag = (0, import_react36.useReducer)(stateReducer5, { - __demoMode, - menuState: __demoMode ? 0 /* Open */ : 1 /* Closed */, - buttonRef: (0, import_react36.createRef)(), - itemsRef: (0, import_react36.createRef)(), - items: [], - searchQuery: "", - activeItemIndex: null, - activationTrigger: 1 /* Other */ - }); - let [{ menuState, itemsRef, buttonRef }, dispatch] = reducerBag; - let menuRef = useSyncRefs(ref); - useOutsideClick( - [buttonRef, itemsRef], - (event, target) => { - var _a3; - dispatch({ type: 1 /* CloseMenu */ }); - if (!isFocusableElement(target, 1 /* Loose */)) { - event.preventDefault(); - (_a3 = buttonRef.current) == null ? void 0 : _a3.focus(); - } - }, - menuState === 0 /* Open */ - ); - let close = useEvent(() => { - dispatch({ type: 1 /* CloseMenu */ }); - }); - let slot = (0, import_react36.useMemo)( - () => ({ open: menuState === 0 /* Open */, close }), - [menuState, close] - ); - let ourProps = { ref: menuRef }; - return /* @__PURE__ */ import_react36.default.createElement(MenuContext.Provider, { value: reducerBag }, /* @__PURE__ */ import_react36.default.createElement( - OpenClosedProvider, - { - value: match(menuState, { - [0 /* Open */]: 1 /* Open */, - [1 /* Closed */]: 2 /* Closed */ - }) - }, - render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_MENU_TAG, - name: "Menu" - }) - )); -} -var DEFAULT_BUTTON_TAG4 = "button"; -function ButtonFn4(props, ref) { - var _a3; - let internalId = useId(); - let { id = `headlessui-menu-button-${internalId}`, ...theirProps } = props; - let [state, dispatch] = useMenuContext("Menu.Button"); - let buttonRef = useSyncRefs(state.buttonRef, ref); - let d = useDisposables(); - let handleKeyDown = useEvent((event) => { - switch (event.key) { - case " " /* Space */: - case "Enter" /* Enter */: - case "ArrowDown" /* ArrowDown */: - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 0 /* OpenMenu */ }); - d.nextFrame(() => dispatch({ type: 2 /* GoToItem */, focus: 0 /* First */ })); - break; - case "ArrowUp" /* ArrowUp */: - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 0 /* OpenMenu */ }); - d.nextFrame(() => dispatch({ type: 2 /* GoToItem */, focus: 3 /* Last */ })); - break; - } - }); - let handleKeyUp = useEvent((event) => { - switch (event.key) { - case " " /* Space */: - event.preventDefault(); - break; - } - }); - let handleClick = useEvent((event) => { - if (isDisabledReactIssue7711(event.currentTarget)) - return event.preventDefault(); - if (props.disabled) - return; - if (state.menuState === 0 /* Open */) { - dispatch({ type: 1 /* CloseMenu */ }); - d.nextFrame(() => { - var _a4; - return (_a4 = state.buttonRef.current) == null ? void 0 : _a4.focus({ preventScroll: true }); - }); - } else { - event.preventDefault(); - dispatch({ type: 0 /* OpenMenu */ }); - } - }); - let slot = (0, import_react36.useMemo)( - () => ({ open: state.menuState === 0 /* Open */ }), - [state] - ); - let ourProps = { - ref: buttonRef, - id, - type: useResolveButtonType(props, state.buttonRef), - "aria-haspopup": "menu", - "aria-controls": (_a3 = state.itemsRef.current) == null ? void 0 : _a3.id, - "aria-expanded": props.disabled ? void 0 : state.menuState === 0 /* Open */, - onKeyDown: handleKeyDown, - onKeyUp: handleKeyUp, - onClick: handleClick - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_BUTTON_TAG4, - name: "Menu.Button" - }); -} -var DEFAULT_ITEMS_TAG = "div"; -var ItemsRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; -function ItemsFn(props, ref) { - var _a3, _b; - let internalId = useId(); - let { id = `headlessui-menu-items-${internalId}`, ...theirProps } = props; - let [state, dispatch] = useMenuContext("Menu.Items"); - let itemsRef = useSyncRefs(state.itemsRef, ref); - let ownerDocument = useOwnerDocument(state.itemsRef); - let searchDisposables = useDisposables(); - let usesOpenClosedState = useOpenClosed(); - let visible = (() => { - if (usesOpenClosedState !== null) { - return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; - } - return state.menuState === 0 /* Open */; - })(); - (0, import_react36.useEffect)(() => { - let container = state.itemsRef.current; - if (!container) - return; - if (state.menuState !== 0 /* Open */) - return; - if (container === (ownerDocument == null ? void 0 : ownerDocument.activeElement)) - return; - container.focus({ preventScroll: true }); - }, [state.menuState, state.itemsRef, ownerDocument]); - useTreeWalker({ - container: state.itemsRef.current, - enabled: state.menuState === 0 /* Open */, - accept(node) { - if (node.getAttribute("role") === "menuitem") - return NodeFilter.FILTER_REJECT; - if (node.hasAttribute("role")) - return NodeFilter.FILTER_SKIP; - return NodeFilter.FILTER_ACCEPT; - }, - walk(node) { - node.setAttribute("role", "none"); - } - }); - let handleKeyDown = useEvent((event) => { - var _a4, _b2; - searchDisposables.dispose(); - switch (event.key) { - case " " /* Space */: - if (state.searchQuery !== "") { - event.preventDefault(); - event.stopPropagation(); - return dispatch({ type: 3 /* Search */, value: event.key }); - } - case "Enter" /* Enter */: - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 1 /* CloseMenu */ }); - if (state.activeItemIndex !== null) { - let { dataRef } = state.items[state.activeItemIndex]; - (_b2 = (_a4 = dataRef.current) == null ? void 0 : _a4.domRef.current) == null ? void 0 : _b2.click(); - } - restoreFocusIfNecessary(state.buttonRef.current); - break; - case "ArrowDown" /* ArrowDown */: - event.preventDefault(); - event.stopPropagation(); - return dispatch({ type: 2 /* GoToItem */, focus: 2 /* Next */ }); - case "ArrowUp" /* ArrowUp */: - event.preventDefault(); - event.stopPropagation(); - return dispatch({ type: 2 /* GoToItem */, focus: 1 /* Previous */ }); - case "Home" /* Home */: - case "PageUp" /* PageUp */: - event.preventDefault(); - event.stopPropagation(); - return dispatch({ type: 2 /* GoToItem */, focus: 0 /* First */ }); - case "End" /* End */: - case "PageDown" /* PageDown */: - event.preventDefault(); - event.stopPropagation(); - return dispatch({ type: 2 /* GoToItem */, focus: 3 /* Last */ }); - case "Escape" /* Escape */: - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 1 /* CloseMenu */ }); - disposables().nextFrame(() => { - var _a5; - return (_a5 = state.buttonRef.current) == null ? void 0 : _a5.focus({ preventScroll: true }); - }); - break; - case "Tab" /* Tab */: - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 1 /* CloseMenu */ }); - disposables().nextFrame(() => { - focusFrom( - state.buttonRef.current, - event.shiftKey ? 2 /* Previous */ : 4 /* Next */ - ); - }); - break; - default: - if (event.key.length === 1) { - dispatch({ type: 3 /* Search */, value: event.key }); - searchDisposables.setTimeout(() => dispatch({ type: 4 /* ClearSearch */ }), 350); - } - break; - } - }); - let handleKeyUp = useEvent((event) => { - switch (event.key) { - case " " /* Space */: - event.preventDefault(); - break; - } - }); - let slot = (0, import_react36.useMemo)( - () => ({ open: state.menuState === 0 /* Open */ }), - [state] - ); - let ourProps = { - "aria-activedescendant": state.activeItemIndex === null ? void 0 : (_a3 = state.items[state.activeItemIndex]) == null ? void 0 : _a3.id, - "aria-labelledby": (_b = state.buttonRef.current) == null ? void 0 : _b.id, - id, - onKeyDown: handleKeyDown, - onKeyUp: handleKeyUp, - role: "menu", - tabIndex: 0, - ref: itemsRef - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_ITEMS_TAG, - features: ItemsRenderFeatures, - visible, - name: "Menu.Items" - }); -} -var DEFAULT_ITEM_TAG = import_react36.Fragment; -function ItemFn(props, ref) { - let internalId = useId(); - let { id = `headlessui-menu-item-${internalId}`, disabled = false, ...theirProps } = props; - let [state, dispatch] = useMenuContext("Menu.Item"); - let active = state.activeItemIndex !== null ? state.items[state.activeItemIndex].id === id : false; - let internalItemRef = (0, import_react36.useRef)(null); - let itemRef = useSyncRefs(ref, internalItemRef); - useIsoMorphicEffect(() => { - if (state.__demoMode) - return; - if (state.menuState !== 0 /* Open */) - return; - if (!active) - return; - if (state.activationTrigger === 0 /* Pointer */) - return; - let d = disposables(); - d.requestAnimationFrame(() => { - var _a3, _b; - (_b = (_a3 = internalItemRef.current) == null ? void 0 : _a3.scrollIntoView) == null ? void 0 : _b.call(_a3, { block: "nearest" }); - }); - return d.dispose; - }, [ - state.__demoMode, - internalItemRef, - active, - state.menuState, - state.activationTrigger, - /* We also want to trigger this when the position of the active item changes so that we can re-trigger the scrollIntoView */ - state.activeItemIndex - ]); - let getTextValue2 = useTextValue(internalItemRef); - let bag = (0, import_react36.useRef)({ - disabled, - domRef: internalItemRef, - get textValue() { - return getTextValue2(); - } - }); - useIsoMorphicEffect(() => { - bag.current.disabled = disabled; - }, [bag, disabled]); - useIsoMorphicEffect(() => { - dispatch({ type: 5 /* RegisterItem */, id, dataRef: bag }); - return () => dispatch({ type: 6 /* UnregisterItem */, id }); - }, [bag, id]); - let close = useEvent(() => { - dispatch({ type: 1 /* CloseMenu */ }); - }); - let handleClick = useEvent((event) => { - if (disabled) - return event.preventDefault(); - dispatch({ type: 1 /* CloseMenu */ }); - restoreFocusIfNecessary(state.buttonRef.current); - }); - let handleFocus = useEvent(() => { - if (disabled) - return dispatch({ type: 2 /* GoToItem */, focus: 5 /* Nothing */ }); - dispatch({ type: 2 /* GoToItem */, focus: 4 /* Specific */, id }); - }); - let pointer = useTrackedPointer(); - let handleEnter = useEvent((evt) => pointer.update(evt)); - let handleMove = useEvent((evt) => { - if (!pointer.wasMoved(evt)) - return; - if (disabled) - return; - if (active) - return; - dispatch({ - type: 2 /* GoToItem */, - focus: 4 /* Specific */, - id, - trigger: 0 /* Pointer */ - }); - }); - let handleLeave = useEvent((evt) => { - if (!pointer.wasMoved(evt)) - return; - if (disabled) - return; - if (!active) - return; - dispatch({ type: 2 /* GoToItem */, focus: 5 /* Nothing */ }); - }); - let slot = (0, import_react36.useMemo)( - () => ({ active, disabled, close }), - [active, disabled, close] - ); - let ourProps = { - id, - ref: itemRef, - role: "menuitem", - tabIndex: disabled === true ? void 0 : -1, - "aria-disabled": disabled === true ? true : void 0, - disabled: void 0, - // Never forward the `disabled` prop - onClick: handleClick, - onFocus: handleFocus, - onPointerEnter: handleEnter, - onMouseEnter: handleEnter, - onPointerMove: handleMove, - onMouseMove: handleMove, - onPointerLeave: handleLeave, - onMouseLeave: handleLeave - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_ITEM_TAG, - name: "Menu.Item" - }); -} -var MenuRoot = forwardRefWithAs(MenuFn); -var Button4 = forwardRefWithAs(ButtonFn4); -var Items = forwardRefWithAs(ItemsFn); -var Item = forwardRefWithAs(ItemFn); -var Menu = Object.assign(MenuRoot, { Button: Button4, Items, Item }); - -// src/components/popover/popover.tsx -var import_react37 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var reducers6 = { - [0 /* TogglePopover */]: (state) => { - let nextState = { - ...state, - popoverState: match(state.popoverState, { - [0 /* Open */]: 1 /* Closed */, - [1 /* Closed */]: 0 /* Open */ - }) - }; - if (nextState.popoverState === 0 /* Open */) { - nextState.__demoMode = false; - } - return nextState; - }, - [1 /* ClosePopover */](state) { - if (state.popoverState === 1 /* Closed */) - return state; - return { ...state, popoverState: 1 /* Closed */ }; - }, - [2 /* SetButton */](state, action) { - if (state.button === action.button) - return state; - return { ...state, button: action.button }; - }, - [3 /* SetButtonId */](state, action) { - if (state.buttonId === action.buttonId) - return state; - return { ...state, buttonId: action.buttonId }; - }, - [4 /* SetPanel */](state, action) { - if (state.panel === action.panel) - return state; - return { ...state, panel: action.panel }; - }, - [5 /* SetPanelId */](state, action) { - if (state.panelId === action.panelId) - return state; - return { ...state, panelId: action.panelId }; - } -}; -var PopoverContext = (0, import_react37.createContext)(null); -PopoverContext.displayName = "PopoverContext"; -function usePopoverContext(component) { - let context = (0, import_react37.useContext)(PopoverContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, usePopoverContext); - throw err; - } - return context; -} -var PopoverAPIContext = (0, import_react37.createContext)(null); -PopoverAPIContext.displayName = "PopoverAPIContext"; -function usePopoverAPIContext(component) { - let context = (0, import_react37.useContext)(PopoverAPIContext); - if (context === null) { - let err = new Error(`<${component} /> is missing a parent component.`); - if (Error.captureStackTrace) - Error.captureStackTrace(err, usePopoverAPIContext); - throw err; - } - return context; -} -var PopoverGroupContext = (0, import_react37.createContext)(null); -PopoverGroupContext.displayName = "PopoverGroupContext"; -function usePopoverGroupContext() { - return (0, import_react37.useContext)(PopoverGroupContext); -} -var PopoverPanelContext = (0, import_react37.createContext)(null); -PopoverPanelContext.displayName = "PopoverPanelContext"; -function usePopoverPanelContext() { - return (0, import_react37.useContext)(PopoverPanelContext); -} -function stateReducer6(state, action) { - return match(action.type, reducers6, state, action); -} -var DEFAULT_POPOVER_TAG = "div"; -function PopoverFn(props, ref) { - var _a3; - let { __demoMode = false, ...theirProps } = props; - let internalPopoverRef = (0, import_react37.useRef)(null); - let popoverRef = useSyncRefs( - ref, - optionalRef((ref2) => { - internalPopoverRef.current = ref2; - }) - ); - let buttons = (0, import_react37.useRef)([]); - let reducerBag = (0, import_react37.useReducer)(stateReducer6, { - __demoMode, - popoverState: __demoMode ? 0 /* Open */ : 1 /* Closed */, - buttons, - button: null, - buttonId: null, - panel: null, - panelId: null, - beforePanelSentinel: (0, import_react37.createRef)(), - afterPanelSentinel: (0, import_react37.createRef)() - }); - let [ - { popoverState, button, buttonId, panel, panelId, beforePanelSentinel, afterPanelSentinel }, - dispatch - ] = reducerBag; - let ownerDocument = useOwnerDocument((_a3 = internalPopoverRef.current) != null ? _a3 : button); - let isPortalled = (0, import_react37.useMemo)(() => { - if (!button) - return false; - if (!panel) - return false; - for (let root2 of document.querySelectorAll("body > *")) { - if (Number(root2 == null ? void 0 : root2.contains(button)) ^ Number(root2 == null ? void 0 : root2.contains(panel))) { - return true; - } - } - let elements = getFocusableElements(); - let buttonIdx = elements.indexOf(button); - let beforeIdx = (buttonIdx + elements.length - 1) % elements.length; - let afterIdx = (buttonIdx + 1) % elements.length; - let beforeElement = elements[beforeIdx]; - let afterElement = elements[afterIdx]; - if (!panel.contains(beforeElement) && !panel.contains(afterElement)) { - return true; - } - return false; - }, [button, panel]); - let buttonIdRef = useLatestValue(buttonId); - let panelIdRef = useLatestValue(panelId); - let registerBag = (0, import_react37.useMemo)( - () => ({ - buttonId: buttonIdRef, - panelId: panelIdRef, - close: () => dispatch({ type: 1 /* ClosePopover */ }) - }), - [buttonIdRef, panelIdRef, dispatch] - ); - let groupContext = usePopoverGroupContext(); - let registerPopover = groupContext == null ? void 0 : groupContext.registerPopover; - let isFocusWithinPopoverGroup = useEvent(() => { - var _a4; - return (_a4 = groupContext == null ? void 0 : groupContext.isFocusWithinPopoverGroup()) != null ? _a4 : (ownerDocument == null ? void 0 : ownerDocument.activeElement) && ((button == null ? void 0 : button.contains(ownerDocument.activeElement)) || (panel == null ? void 0 : panel.contains(ownerDocument.activeElement))); - }); - (0, import_react37.useEffect)(() => registerPopover == null ? void 0 : registerPopover(registerBag), [registerPopover, registerBag]); - let [portals, PortalWrapper] = useNestedPortals(); - let root = useRootContainers({ - portals, - defaultContainers: [button, panel] - }); - useEventListener( - ownerDocument == null ? void 0 : ownerDocument.defaultView, - "focus", - (event) => { - var _a4, _b, _c, _d; - if (event.target === window) - return; - if (!(event.target instanceof HTMLElement)) - return; - if (popoverState !== 0 /* Open */) - return; - if (isFocusWithinPopoverGroup()) - return; - if (!button) - return; - if (!panel) - return; - if (root.contains(event.target)) - return; - if ((_b = (_a4 = beforePanelSentinel.current) == null ? void 0 : _a4.contains) == null ? void 0 : _b.call(_a4, event.target)) - return; - if ((_d = (_c = afterPanelSentinel.current) == null ? void 0 : _c.contains) == null ? void 0 : _d.call(_c, event.target)) - return; - dispatch({ type: 1 /* ClosePopover */ }); - }, - true - ); - useOutsideClick( - root.resolveContainers, - (event, target) => { - dispatch({ type: 1 /* ClosePopover */ }); - if (!isFocusableElement(target, 1 /* Loose */)) { - event.preventDefault(); - button == null ? void 0 : button.focus(); - } - }, - popoverState === 0 /* Open */ - ); - let close = useEvent( - (focusableElement) => { - dispatch({ type: 1 /* ClosePopover */ }); - let restoreElement = (() => { - if (!focusableElement) - return button; - if (focusableElement instanceof HTMLElement) - return focusableElement; - if ("current" in focusableElement && focusableElement.current instanceof HTMLElement) - return focusableElement.current; - return button; - })(); - restoreElement == null ? void 0 : restoreElement.focus(); - } - ); - let api = (0, import_react37.useMemo)( - () => ({ close, isPortalled }), - [close, isPortalled] - ); - let slot = (0, import_react37.useMemo)( - () => ({ open: popoverState === 0 /* Open */, close }), - [popoverState, close] - ); - let ourProps = { ref: popoverRef }; - return /* @__PURE__ */ import_react37.default.createElement(PopoverPanelContext.Provider, { value: null }, /* @__PURE__ */ import_react37.default.createElement(PopoverContext.Provider, { value: reducerBag }, /* @__PURE__ */ import_react37.default.createElement(PopoverAPIContext.Provider, { value: api }, /* @__PURE__ */ import_react37.default.createElement( - OpenClosedProvider, - { - value: match(popoverState, { - [0 /* Open */]: 1 /* Open */, - [1 /* Closed */]: 2 /* Closed */ - }) - }, - /* @__PURE__ */ import_react37.default.createElement(PortalWrapper, null, render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_POPOVER_TAG, - name: "Popover" - }), /* @__PURE__ */ import_react37.default.createElement(root.MainTreeNode, null)) - )))); -} -var DEFAULT_BUTTON_TAG5 = "button"; -function ButtonFn5(props, ref) { - let internalId = useId(); - let { id = `headlessui-popover-button-${internalId}`, ...theirProps } = props; - let [state, dispatch] = usePopoverContext("Popover.Button"); - let { isPortalled } = usePopoverAPIContext("Popover.Button"); - let internalButtonRef = (0, import_react37.useRef)(null); - let sentinelId = `headlessui-focus-sentinel-${useId()}`; - let groupContext = usePopoverGroupContext(); - let closeOthers = groupContext == null ? void 0 : groupContext.closeOthers; - let panelContext = usePopoverPanelContext(); - let isWithinPanel = panelContext !== null; - (0, import_react37.useEffect)(() => { - if (isWithinPanel) - return; - dispatch({ type: 3 /* SetButtonId */, buttonId: id }); - return () => { - dispatch({ type: 3 /* SetButtonId */, buttonId: null }); - }; - }, [isWithinPanel, id, dispatch]); - let [uniqueIdentifier] = (0, import_react37.useState)(() => Symbol()); - let buttonRef = useSyncRefs( - internalButtonRef, - ref, - isWithinPanel ? null : (button) => { - if (button) { - state.buttons.current.push(uniqueIdentifier); - } else { - let idx = state.buttons.current.indexOf(uniqueIdentifier); - if (idx !== -1) - state.buttons.current.splice(idx, 1); - } - if (state.buttons.current.length > 1) { - console.warn( - "You are already using a but only 1 is supported." - ); - } - button && dispatch({ type: 2 /* SetButton */, button }); - } - ); - let withinPanelButtonRef = useSyncRefs(internalButtonRef, ref); - let ownerDocument = useOwnerDocument(internalButtonRef); - let handleKeyDown = useEvent((event) => { - var _a3, _b, _c; - if (isWithinPanel) { - if (state.popoverState === 1 /* Closed */) - return; - switch (event.key) { - case " " /* Space */: - case "Enter" /* Enter */: - event.preventDefault(); - (_b = (_a3 = event.target).click) == null ? void 0 : _b.call(_a3); - dispatch({ type: 1 /* ClosePopover */ }); - (_c = state.button) == null ? void 0 : _c.focus(); - break; - } - } else { - switch (event.key) { - case " " /* Space */: - case "Enter" /* Enter */: - event.preventDefault(); - event.stopPropagation(); - if (state.popoverState === 1 /* Closed */) - closeOthers == null ? void 0 : closeOthers(state.buttonId); - dispatch({ type: 0 /* TogglePopover */ }); - break; - case "Escape" /* Escape */: - if (state.popoverState !== 0 /* Open */) - return closeOthers == null ? void 0 : closeOthers(state.buttonId); - if (!internalButtonRef.current) - return; - if ((ownerDocument == null ? void 0 : ownerDocument.activeElement) && !internalButtonRef.current.contains(ownerDocument.activeElement)) { - return; - } - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 1 /* ClosePopover */ }); - break; - } - } - }); - let handleKeyUp = useEvent((event) => { - if (isWithinPanel) - return; - if (event.key === " " /* Space */) { - event.preventDefault(); - } - }); - let handleClick = useEvent((event) => { - var _a3, _b; - if (isDisabledReactIssue7711(event.currentTarget)) - return; - if (props.disabled) - return; - if (isWithinPanel) { - dispatch({ type: 1 /* ClosePopover */ }); - (_a3 = state.button) == null ? void 0 : _a3.focus(); - } else { - event.preventDefault(); - event.stopPropagation(); - if (state.popoverState === 1 /* Closed */) - closeOthers == null ? void 0 : closeOthers(state.buttonId); - dispatch({ type: 0 /* TogglePopover */ }); - (_b = state.button) == null ? void 0 : _b.focus(); - } - }); - let handleMouseDown = useEvent((event) => { - event.preventDefault(); - event.stopPropagation(); - }); - let visible = state.popoverState === 0 /* Open */; - let slot = (0, import_react37.useMemo)(() => ({ open: visible }), [visible]); - let type = useResolveButtonType(props, internalButtonRef); - let ourProps = isWithinPanel ? { - ref: withinPanelButtonRef, - type, - onKeyDown: handleKeyDown, - onClick: handleClick - } : { - ref: buttonRef, - id: state.buttonId, - type, - "aria-expanded": props.disabled ? void 0 : state.popoverState === 0 /* Open */, - "aria-controls": state.panel ? state.panelId : void 0, - onKeyDown: handleKeyDown, - onKeyUp: handleKeyUp, - onClick: handleClick, - onMouseDown: handleMouseDown - }; - let direction = useTabDirection(); - let handleFocus = useEvent(() => { - let el = state.panel; - if (!el) - return; - function run() { - let result = match(direction.current, { - [0 /* Forwards */]: () => focusIn(el, 1 /* First */), - [1 /* Backwards */]: () => focusIn(el, 8 /* Last */) - }); - if (result === 0 /* Error */) { - focusIn( - getFocusableElements().filter((el2) => el2.dataset.headlessuiFocusGuard !== "true"), - match(direction.current, { - [0 /* Forwards */]: 4 /* Next */, - [1 /* Backwards */]: 2 /* Previous */ - }), - { relativeTo: state.button } - ); - } - } - if (false) {} else { - run(); - } - }); - return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_BUTTON_TAG5, - name: "Popover.Button" - }), visible && !isWithinPanel && isPortalled && /* @__PURE__ */ import_react37.default.createElement( - Hidden, - { - id: sentinelId, - features: 2 /* Focusable */, - "data-headlessui-focus-guard": true, - as: "button", - type: "button", - onFocus: handleFocus - } - )); -} -var DEFAULT_OVERLAY_TAG2 = "div"; -var OverlayRenderFeatures = 1 /* RenderStrategy */ | 2 /* Static */; -function OverlayFn2(props, ref) { - let internalId = useId(); - let { id = `headlessui-popover-overlay-${internalId}`, ...theirProps } = props; - let [{ popoverState }, dispatch] = usePopoverContext("Popover.Overlay"); - let overlayRef = useSyncRefs(ref); - let usesOpenClosedState = useOpenClosed(); - let visible = (() => { - if (usesOpenClosedState !== null) { - return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; - } - return popoverState === 0 /* Open */; - })(); - let handleClick = useEvent((event) => { - if (isDisabledReactIssue7711(event.currentTarget)) - return event.preventDefault(); - dispatch({ type: 1 /* ClosePopover */ }); - }); - let slot = (0, import_react37.useMemo)( - () => ({ open: popoverState === 0 /* Open */ }), - [popoverState] - ); - let ourProps = { - ref: overlayRef, - id, - "aria-hidden": true, - onClick: handleClick - }; - return render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_OVERLAY_TAG2, - features: OverlayRenderFeatures, - visible, - name: "Popover.Overlay" - }); -} -var DEFAULT_PANEL_TAG3 = "div"; -var PanelRenderFeatures2 = 1 /* RenderStrategy */ | 2 /* Static */; -function PanelFn3(props, ref) { - let internalId = useId(); - let { id = `headlessui-popover-panel-${internalId}`, focus = false, ...theirProps } = props; - let [state, dispatch] = usePopoverContext("Popover.Panel"); - let { close, isPortalled } = usePopoverAPIContext("Popover.Panel"); - let beforePanelSentinelId = `headlessui-focus-sentinel-before-${useId()}`; - let afterPanelSentinelId = `headlessui-focus-sentinel-after-${useId()}`; - let internalPanelRef = (0, import_react37.useRef)(null); - let panelRef = useSyncRefs(internalPanelRef, ref, (panel) => { - dispatch({ type: 4 /* SetPanel */, panel }); - }); - let ownerDocument = useOwnerDocument(internalPanelRef); - useIsoMorphicEffect(() => { - dispatch({ type: 5 /* SetPanelId */, panelId: id }); - return () => { - dispatch({ type: 5 /* SetPanelId */, panelId: null }); - }; - }, [id, dispatch]); - let usesOpenClosedState = useOpenClosed(); - let visible = (() => { - if (usesOpenClosedState !== null) { - return (usesOpenClosedState & 1 /* Open */) === 1 /* Open */; - } - return state.popoverState === 0 /* Open */; - })(); - let handleKeyDown = useEvent((event) => { - var _a3; - switch (event.key) { - case "Escape" /* Escape */: - if (state.popoverState !== 0 /* Open */) - return; - if (!internalPanelRef.current) - return; - if ((ownerDocument == null ? void 0 : ownerDocument.activeElement) && !internalPanelRef.current.contains(ownerDocument.activeElement)) { - return; - } - event.preventDefault(); - event.stopPropagation(); - dispatch({ type: 1 /* ClosePopover */ }); - (_a3 = state.button) == null ? void 0 : _a3.focus(); - break; - } - }); - (0, import_react37.useEffect)(() => { - var _a3; - if (props.static) - return; - if (state.popoverState === 1 /* Closed */ && ((_a3 = props.unmount) != null ? _a3 : true)) { - dispatch({ type: 4 /* SetPanel */, panel: null }); - } - }, [state.popoverState, props.unmount, props.static, dispatch]); - (0, import_react37.useEffect)(() => { - if (state.__demoMode) - return; - if (!focus) - return; - if (state.popoverState !== 0 /* Open */) - return; - if (!internalPanelRef.current) - return; - let activeElement = ownerDocument == null ? void 0 : ownerDocument.activeElement; - if (internalPanelRef.current.contains(activeElement)) - return; - focusIn(internalPanelRef.current, 1 /* First */); - }, [state.__demoMode, focus, internalPanelRef, state.popoverState]); - let slot = (0, import_react37.useMemo)( - () => ({ open: state.popoverState === 0 /* Open */, close }), - [state, close] - ); - let ourProps = { - ref: panelRef, - id, - onKeyDown: handleKeyDown, - onBlur: focus && state.popoverState === 0 /* Open */ ? (event) => { - var _a3, _b, _c, _d, _e; - let el = event.relatedTarget; - if (!el) - return; - if (!internalPanelRef.current) - return; - if ((_a3 = internalPanelRef.current) == null ? void 0 : _a3.contains(el)) - return; - dispatch({ type: 1 /* ClosePopover */ }); - if (((_c = (_b = state.beforePanelSentinel.current) == null ? void 0 : _b.contains) == null ? void 0 : _c.call(_b, el)) || ((_e = (_d = state.afterPanelSentinel.current) == null ? void 0 : _d.contains) == null ? void 0 : _e.call(_d, el))) { - el.focus({ preventScroll: true }); - } - } : void 0, - tabIndex: -1 - }; - let direction = useTabDirection(); - let handleBeforeFocus = useEvent(() => { - let el = internalPanelRef.current; - if (!el) - return; - function run() { - match(direction.current, { - [0 /* Forwards */]: () => { - var _a3; - let result = focusIn(el, 1 /* First */); - if (result === 0 /* Error */) { - (_a3 = state.afterPanelSentinel.current) == null ? void 0 : _a3.focus(); - } - }, - [1 /* Backwards */]: () => { - var _a3; - (_a3 = state.button) == null ? void 0 : _a3.focus({ preventScroll: true }); - } - }); - } - if (false) {} else { - run(); - } - }); - let handleAfterFocus = useEvent(() => { - let el = internalPanelRef.current; - if (!el) - return; - function run() { - match(direction.current, { - [0 /* Forwards */]: () => { - var _a3; - if (!state.button) - return; - let elements = getFocusableElements(); - let idx = elements.indexOf(state.button); - let before = elements.slice(0, idx + 1); - let after = elements.slice(idx + 1); - let combined = [...after, ...before]; - for (let element of combined.slice()) { - if (element.dataset.headlessuiFocusGuard === "true" || ((_a3 = state.panel) == null ? void 0 : _a3.contains(element))) { - let idx2 = combined.indexOf(element); - if (idx2 !== -1) - combined.splice(idx2, 1); - } - } - focusIn(combined, 1 /* First */, { sorted: false }); - }, - [1 /* Backwards */]: () => { - var _a3; - let result = focusIn(el, 2 /* Previous */); - if (result === 0 /* Error */) { - (_a3 = state.button) == null ? void 0 : _a3.focus(); - } - } - }); - } - if (false) {} else { - run(); - } - }); - return /* @__PURE__ */ import_react37.default.createElement(PopoverPanelContext.Provider, { value: id }, visible && isPortalled && /* @__PURE__ */ import_react37.default.createElement( - Hidden, - { - id: beforePanelSentinelId, - ref: state.beforePanelSentinel, - features: 2 /* Focusable */, - "data-headlessui-focus-guard": true, - as: "button", - type: "button", - onFocus: handleBeforeFocus - } - ), render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_PANEL_TAG3, - features: PanelRenderFeatures2, - visible, - name: "Popover.Panel" - }), visible && isPortalled && /* @__PURE__ */ import_react37.default.createElement( - Hidden, - { - id: afterPanelSentinelId, - ref: state.afterPanelSentinel, - features: 2 /* Focusable */, - "data-headlessui-focus-guard": true, - as: "button", - type: "button", - onFocus: handleAfterFocus - } - )); -} -var DEFAULT_GROUP_TAG2 = "div"; -function GroupFn2(props, ref) { - let internalGroupRef = (0, import_react37.useRef)(null); - let groupRef = useSyncRefs(internalGroupRef, ref); - let [popovers, setPopovers] = (0, import_react37.useState)([]); - let unregisterPopover = useEvent((registerbag) => { - setPopovers((existing) => { - let idx = existing.indexOf(registerbag); - if (idx !== -1) { - let clone = existing.slice(); - clone.splice(idx, 1); - return clone; - } - return existing; - }); - }); - let registerPopover = useEvent((registerbag) => { - setPopovers((existing) => [...existing, registerbag]); - return () => unregisterPopover(registerbag); - }); - let isFocusWithinPopoverGroup = useEvent(() => { - var _a3; - let ownerDocument = getOwnerDocument(internalGroupRef); - if (!ownerDocument) - return false; - let element = ownerDocument.activeElement; - if ((_a3 = internalGroupRef.current) == null ? void 0 : _a3.contains(element)) - return true; - return popovers.some((bag) => { - var _a4, _b; - return ((_a4 = ownerDocument.getElementById(bag.buttonId.current)) == null ? void 0 : _a4.contains(element)) || ((_b = ownerDocument.getElementById(bag.panelId.current)) == null ? void 0 : _b.contains(element)); - }); - }); - let closeOthers = useEvent((buttonId) => { - for (let popover of popovers) { - if (popover.buttonId.current !== buttonId) - popover.close(); - } - }); - let contextBag = (0, import_react37.useMemo)( - () => ({ - registerPopover, - unregisterPopover, - isFocusWithinPopoverGroup, - closeOthers - }), - [registerPopover, unregisterPopover, isFocusWithinPopoverGroup, closeOthers] - ); - let slot = (0, import_react37.useMemo)(() => ({}), []); - let theirProps = props; - let ourProps = { ref: groupRef }; - return /* @__PURE__ */ import_react37.default.createElement(PopoverGroupContext.Provider, { value: contextBag }, render({ - ourProps, - theirProps, - slot, - defaultTag: DEFAULT_GROUP_TAG2, - name: "Popover.Group" - })); -} -var PopoverRoot = forwardRefWithAs(PopoverFn); -var Button5 = forwardRefWithAs(ButtonFn5); -var Overlay2 = forwardRefWithAs(OverlayFn2); -var Panel3 = forwardRefWithAs(PanelFn3); -var Group2 = forwardRefWithAs(GroupFn2); -var Popover = Object.assign(PopoverRoot, { Button: Button5, Overlay: Overlay2, Panel: Panel3, Group: Group2 }); - -// src/components/radio-group/radio-group.tsx -var import_react40 = __toESM(__webpack_require__(/*! react */ "react"), 1); - -// src/hooks/use-flags.ts -var import_react38 = __webpack_require__(/*! react */ "react"); -function useFlags(initialFlags = 0) { - let [flags, setFlags] = (0, import_react38.useState)(initialFlags); - let mounted = useIsMounted(); - let addFlag = (0, import_react38.useCallback)( - (flag) => { - if (!mounted.current) - return; - setFlags((flags2) => flags2 | flag); - }, - [flags, mounted] - ); - let hasFlag = (0, import_react38.useCallback)((flag) => Boolean(flags & flag), [flags]); - let removeFlag = (0, import_react38.useCallback)( - (flag) => { - if (!mounted.current) - return; - setFlags((flags2) => flags2 & ~flag); - }, - [setFlags, mounted] - ); - let toggleFlag = (0, import_react38.useCallback)( - (flag) => { - if (!mounted.current) - return; - setFlags((flags2) => flags2 ^ flag); - }, - [setFlags] - ); - return { flags, addFlag, hasFlag, removeFlag, toggleFlag }; -} - -// src/components/label/label.tsx -var import_react39 = __toESM(__webpack_require__(/*! react */ "react"), 1); -var LabelContext = (0, import_react39.createContext)( - null -); -function useLabelContext() { - let context = (0, import_react39.useContext)(LabelContext); - if (context === null) { - let err = new Error("You used a
- {% if perms.extras.view_objectchange %} + {% if perms.core.view_objectchange %}
diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index 38dc0347f36..b74d4b5f667 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -63,9 +63,9 @@

{% trans "Device" %}

{% if object.latitude and object.longitude %} {% if config.MAPS_URL %} -
- - {% trans "Map It" %} + {% endif %} diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index 38b74061242..bf73b53869a 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -95,9 +95,9 @@

{% trans "Site" %}

{% if object.latitude and object.longitude %} {% if config.MAPS_URL %} -
- - {% trans "Map It" %} + {% endif %} diff --git a/netbox/templates/extras/dashboard/widgets/objectlist.html b/netbox/templates/extras/dashboard/widgets/objectlist.html index d543cd4c384..42a1f4e3497 100644 --- a/netbox/templates/extras/dashboard/widgets/objectlist.html +++ b/netbox/templates/extras/dashboard/widgets/objectlist.html @@ -1,6 +1,6 @@ {% load i18n %} {% if htmx_url and has_permission %} -
+
{% elif htmx_url %}
{% trans "No permission to view this content" %}. diff --git a/netbox/templates/home.html b/netbox/templates/home.html index 121f84fafd8..b0cefdbeb3b 100644 --- a/netbox/templates/home.html +++ b/netbox/templates/home.html @@ -28,7 +28,7 @@

{% trans "New Release Available" %}

{% block page %} {# Render the user's customized dashboard #} -
+
{% for widget in dashboard %} {% include 'extras/dashboard/widget.html' %} {% endfor %} diff --git a/netbox/templates/users/user.html b/netbox/templates/users/user.html index a36a6d8b7de..967cc0537fb 100644 --- a/netbox/templates/users/user.html +++ b/netbox/templates/users/user.html @@ -71,7 +71,7 @@

{% trans "Assigned Permissions" %}

- {% if perms.extras.view_objectchange %} + {% if perms.core.view_objectchange %}
diff --git a/netbox/translations/cs/LC_MESSAGES/django.mo b/netbox/translations/cs/LC_MESSAGES/django.mo index 90b294dd370..f7fa7581949 100644 Binary files a/netbox/translations/cs/LC_MESSAGES/django.mo and b/netbox/translations/cs/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/cs/LC_MESSAGES/django.po b/netbox/translations/cs/LC_MESSAGES/django.po index 98f94931192..f47711368d2 100644 --- a/netbox/translations/cs/LC_MESSAGES/django.po +++ b/netbox/translations/cs/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Czech (https://app.transifex.com/netbox-community/teams/178115/cs/)\n" @@ -28,16 +28,17 @@ msgstr "" msgid "Key" msgstr "Klíč" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Zapisování povoleno" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -49,11 +50,11 @@ msgstr "Vytvořeno" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Platnost vyprší" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Naposledy použitý" @@ -63,45 +64,45 @@ msgstr "Naposledy použitý" msgid "Allowed IPs" msgstr "Povolené IP adresy" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Přihlášen jako {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Odhlásili jste se." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Vaše preference byly aktualizovány." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "Uživatelské pověření ověřené LDAP nelze v NetBoxu změnit." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Vaše heslo bylo úspěšně změněno." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Plánované" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Zajišťování" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -110,9 +111,9 @@ msgstr "Zajišťování" msgid "Active" msgstr "Aktivní" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Vypnuto" @@ -125,98 +126,116 @@ msgstr "Zrušení přidělování" msgid "Decommissioned" msgstr "Vyřazeno z provozu" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Primární" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Sekundární" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Terciární" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Neaktivní" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Region (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Region (zkratka)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Skupina stránek (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Skupina stránek (slimák)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -228,172 +247,197 @@ msgstr "Skupina stránek (slimák)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Stránky" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Místo (slimák)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Poskytovatel (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Poskytovatel (slimák)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Účet poskytovatele (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Účet poskytovatele (účet)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Síť poskytovatele (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Typ okruhu (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Typ okruhu (URL zkratka)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Stránky (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Zakončení A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Vyhledávání" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Okruh" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Síť poskytovatele (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Obvod (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Obvod (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Skupina obvodů (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Skupina obvodů (slimák)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -406,16 +450,17 @@ msgstr "ASN" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -425,8 +470,9 @@ msgstr "ASN" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -479,26 +525,28 @@ msgstr "ASN" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Popis" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -510,22 +558,22 @@ msgstr "Popis" msgid "Provider" msgstr "Poskytovatel" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "ID služby" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -536,33 +584,33 @@ msgstr "ID služby" msgid "Color" msgstr "Barva" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -575,9 +623,9 @@ msgstr "Barva" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -593,52 +641,52 @@ msgstr "Barva" msgid "Type" msgstr "Typ" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Účet poskytovatele" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -647,7 +695,7 @@ msgstr "Účet poskytovatele" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -655,7 +703,7 @@ msgstr "Účet poskytovatele" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -665,45 +713,49 @@ msgstr "Účet poskytovatele" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Stav" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -715,7 +767,7 @@ msgstr "Stav" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -738,36 +790,37 @@ msgstr "Stav" msgid "Tenant" msgstr "Nájemce" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Datum instalace" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Datum ukončení" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Rychlost odevzdání (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Parametry služby" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -777,37 +830,37 @@ msgstr "Parametry služby" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Nájem" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Síť poskytovatele" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Rychlost portu (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Odchozí rychlost (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Označit jako zapojené" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -815,46 +868,60 @@ msgstr "Označit jako zapojené" msgid "Circuit Termination" msgstr "Zakončení okruhu" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Podrobnosti o zakončení" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Priorita" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Přiřazený poskytovatel" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Přiřazený účet poskytovatele" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Typ okruhu" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Provozní stav" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -862,7 +929,7 @@ msgstr "Provozní stav" msgid "Assigned tenant" msgstr "Přidělený nájemce" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -870,44 +937,44 @@ msgstr "Přidělený nájemce" msgid "Termination" msgstr "Zakončení" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Síť poskytovatele" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -916,13 +983,13 @@ msgstr "Síť poskytovatele" msgid "Location" msgstr "Lokace" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -931,22 +998,22 @@ msgstr "Lokace" msgid "Contacts" msgstr "Kontakty" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -959,17 +1026,17 @@ msgstr "Kontakty" msgid "Region" msgstr "Region" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -977,179 +1044,262 @@ msgstr "Region" msgid "Site group" msgstr "Skupina stránek" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Atributy" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Účet" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Strana termínu" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Přiřazení" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Skupina" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Skupina okruhů" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "barva" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "typ obvodu" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "typy obvodů" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "ID obvodu" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "Jedinečné ID obvodu" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "stav" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "nainstalován" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "ukončí" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "rychlost odevzdání (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Závazná sazba" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "okruh" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "okruhy" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "skupina obvodů" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "skupiny obvodů" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "přednost" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Přiřazení skupiny obvodů" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Přiřazení skupin obvodů" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "zakončení" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "rychlost portu (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Rychlost fyzického obvodu" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "rychlost proti proudu (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Rychlost proti proudu, pokud se liší od rychlosti portu" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "ID křížového připojení" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID místního křížového připojení" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "propojovací panel/port(y)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "ID propojovacího panelu a číslo portu/ů" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "popis" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "zakončení okruhu" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "zakončení okruhů" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Zakončení okruhu se musí připojit buď k místu, nebo k síti poskytovatele." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1158,33 +1308,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "jméno" @@ -1193,11 +1344,12 @@ msgid "Full name of the provider" msgstr "Celé jméno poskytovatele" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "slimák" @@ -1233,40 +1385,45 @@ msgstr "síť poskytovatelů" msgid "provider networks" msgstr "sítě poskytovatelů" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1281,7 +1438,7 @@ msgstr "sítě poskytovatelů" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1295,8 +1452,9 @@ msgstr "sítě poskytovatelů" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1336,9 +1494,9 @@ msgstr "sítě poskytovatelů" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1348,56 +1506,57 @@ msgstr "sítě poskytovatelů" msgid "Name" msgstr "Jméno" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Okruhy" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "ID okruhu" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Strana A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Strana Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Míra odevzdání" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1406,6 +1565,12 @@ msgstr "Míra odevzdání" msgid "Comments" msgstr "Komentář" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Úkoly" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Účty" @@ -1428,7 +1593,7 @@ msgstr "Pro obvod nebyla definována žádná zakončení {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Vyměněné zakončení pro obvod {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "Tento uživatel nemá oprávnění synchronizovat tento zdroj dat." @@ -1446,21 +1611,19 @@ msgid "Syncing" msgstr "Synchronizace" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Dokončeno" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Neuspěl" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1472,30 +1635,39 @@ msgstr "Skripty" msgid "Reports" msgstr "Zprávy" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "Čeká" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Naplánováno" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Běh" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Chyba" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "aktualizováno" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Vymazáno" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Dokončeno" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Zahájeno" @@ -1512,11 +1684,13 @@ msgstr "Zastaveno" msgid "Cancelled" msgstr "Zrušeno" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Místní" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1526,8 +1700,8 @@ msgstr "Uživatelské jméno" msgid "Only used for cloning with HTTP(S)" msgstr "Používá se pouze pro klonování pomocí HTTP (S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Heslo" @@ -1549,24 +1723,63 @@ msgstr "ID přístupového klíče AWS" msgid "AWS secret access key" msgstr "Tajný přístupový klíč AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Vytvořený objekt" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Objekt aktualizován" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Objekt odstraněn" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Práce byla zahájena" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Úloha dokončena" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Úloha selhala" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Chyba v úloze" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Zdroj dat (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Zdroj dat (název)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Uživatel (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Uživatelské jméno" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1574,14 +1787,14 @@ msgstr "Zdroj dat (název)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Povoleno" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1594,11 +1807,11 @@ msgstr "Parametry" msgid "Ignore rules" msgstr "Ignorovat pravidla" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1608,76 +1821,99 @@ msgstr "Ignorovat pravidla" msgid "Data Source" msgstr "Zdroj dat" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Soubor" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Zdroj dat" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Stvoření" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Typ objektu" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Vytvořeno po" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Vytvořeno dříve" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Naplánováno po" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Naplánováno dříve" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Začalo po" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Začalo dříve" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Dokončeno po" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Dokončeno dříve" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Uživatel" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Čas" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Po" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Dříve" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Akce" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1707,19 +1943,19 @@ msgstr "" msgid "Rack Elevations" msgstr "Výšky stojanů" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Napájení" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1736,7 +1972,9 @@ msgstr "Bannery" msgid "Pagination" msgstr "Stránkování" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Validace" @@ -1746,7 +1984,7 @@ msgstr "Validace" msgid "User Preferences" msgstr "Uživatelské předvolby" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1769,10 +2007,48 @@ msgstr "Aktuální hodnota: {value}" msgid " (default)" msgstr " (výchozí)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "čas" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "Uživatelské jméno" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "ID požadavku" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "akce" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "údaje před změnou" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "údaje po změně" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "změna objektu" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "změny objektu" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "Protokolování změn není u tohoto typu objektu podporováno ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "vytvořil" @@ -1805,14 +2081,14 @@ msgstr "Aktuální konfigurace" msgid "Config revision #{id}" msgstr "Revize konfigurace #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1820,110 +2096,111 @@ msgstr "Revize konfigurace #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "typ" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "povoleno" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ignorovat pravidla" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Vzory (jeden na řádek) odpovídající soubory, které mají být ignorovány při " "synchronizaci" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "parametry" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "naposledy synchronizováno" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "zdroj dat" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "datové zdroje" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Neznámý typ backendu: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "Synchronizaci nelze spustit; synchronizace již probíhá." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " msgstr "" "Při inicializaci backendu došlo k chybě. Je třeba nainstalovat závislost: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "naposledy aktualizováno" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "cesta" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Cesta k souboru vzhledem ke kořenovému zdroji dat." -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "velikost" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "hash" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "Délka musí být 64 hexadecimálních znaků." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "SHA256 hash dat souboru" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "datový soubor" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "datové soubory" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "záznam automatické synchronizace" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "automatická synchronizace záznamů" @@ -1947,58 +2224,92 @@ msgstr "spravovaný soubor" msgid "managed files" msgstr "spravované soubory" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "naplánováno" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "interval" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Interval opakování (v minutách)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "začal" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "dokončena" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "data" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "chyba" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "ID úlohy" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "práce" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "pracovní místa" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "K tomuto typu objektu nelze přiřadit úlohy ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "Neplatný stav pro ukončení úlohy. Možnosti jsou: {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "enqueue () nelze volat s hodnotami pro schedule_at a instant." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Odstranění brání pravidlo ochrany: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Celé jméno" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objekt" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "ID požadavku" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Je aktivní" @@ -2013,51 +2324,63 @@ msgid "Last updated" msgstr "Naposledy aktualizováno" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Objekt" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Interval" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Verze" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Balíček" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Naposledy aktualizováno" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Minimální verze NetBoxu" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Maximální verze NetBoxu" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Nebyla nalezena žádná data pluginu" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Autor" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "E-mail autora" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Nainstalováno" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Certifikováno" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Nenalezeny žádné pluginy" +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Zveřejněno" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Nainstalovaná verze" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Nejnovější verze" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2071,7 +2394,7 @@ msgstr "Pracovníci" msgid "Host" msgstr "Hostitel" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Přístav" @@ -2119,62 +2442,72 @@ msgstr "PID" msgid "No workers found" msgstr "Nebyli nalezeni žádní pracovníci" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Úloha ve frontě #{id} synchronizovat {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Obnovená revize konfigurace #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Práce {job_id} nenalezeno" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Práce {id} byl vymazán." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Chyba při mazání úlohy {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Práce {id} nenalezeno." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Práce {id} byla znovu zařazena do fronty." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Práce {id} byl zařazen do fronty." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Práce {id} byl zastaven." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Nepodařilo se zastavit úlohu {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Katalog pluginů nelze načíst" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Plugin {name} nenalezeno" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Pozice (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "ID objektu" @@ -2182,8 +2515,8 @@ msgstr "ID objektu" msgid "Staging" msgstr "Inscenace" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Vyřazení z provozu" @@ -2242,27 +2575,39 @@ msgstr "K dispozici" msgid "Deprecated" msgstr "Zastaralé" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Milimetry" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "palce" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Přední dozadu" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Zezadu dopředu" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2278,278 +2623,273 @@ msgstr "palce" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Rodič" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Dítě" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Fronta" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Zadní" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Inscenovaný" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Inventář" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Přední dozadu" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Zezadu dopředu" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Zleva doprava" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Zprava doleva" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Ze strany dozadu" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "pasivní" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Smíšené" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (bez blokování)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (zamykání)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Kalifornský styl" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "Mezinárodní/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Proprietární" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Ostatní" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/Mezinárodní" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Fyzické" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Virtuální" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Bezdrátové" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Virtuální rozhraní" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Most" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Agregační skupina (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (pevný)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modulární)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (propojovací deska)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Buněčný" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Sériový" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Koaxiální" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Stohování" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Poloviční" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Plný" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Přístup" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Označeno" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Označeno (Vše)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "Norma IEEE" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Pasivní 24V (2 páry)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Pasivní 24V (4 páry)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Pasivní 48V (2 páry)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Pasivní 48V (4 páry)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "měď" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Optická vlákna" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Vlákno" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Připojeno" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Kilometry" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Metry" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Centimetry" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Míle" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Stopy" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Kilogramy" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Gramy" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "libry" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Unce" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Primární" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Redundantní" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Jednofázový" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Třífázový" @@ -2563,330 +2903,335 @@ msgstr "Neplatný formát MAC adresy: {value}" msgid "Invalid WWN format: {value}" msgstr "Neplatný formát WWN: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Nadřazená oblast (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Nadřazená oblast (URL zkratka)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Nadřazená skupina webů (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Nadřazená skupina stránek (slimák)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Skupina (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Skupina (slimák)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "AS (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Nadřazené umístění (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Rodičovské umístění (slimák)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Umístění (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Umístění (slimák)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Výrobce (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Výrobce (slimák)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Typ stojanu (slimák)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Typ stojanu (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Role (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Role (slimák)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Stojan (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Uživatel (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Uživatel (jméno)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Výrobce (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Výrobce (slimák)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Výchozí platforma (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Výchozí platforma (slimák)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Má přední obrázek" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Má zadní obrázek" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Má konzolové porty" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Má porty konzolového serveru" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Má napájecí porty" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Má elektrické zásuvky" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Má rozhraní" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Má průchozí porty" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Má pozice pro moduly" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Má pozice pro zařízení" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Má položky inventáře" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Typ zařízení (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Typ modulu (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Napájecí port (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Nadřazená položka inventáře (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Konfigurační šablona (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Typ zařízení (slimák)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Rodičovské zařízení (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Platforma (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Platforma (URL zkratka)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Název lokality (slimák)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Rodičovská zátoka (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "Cluster virtuálních počítačů (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Skupina klastru (slimák)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Skupina clusteru (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Model zařízení (slimák)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Je plná hloubka" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC adresa" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Má primární IP" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Má IP mimo pásmo" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Virtuální podvozek (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Je virtuální člen šasi" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Má kontext virtuálního zařízení" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Model zařízení" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Rozhraní (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Typ modulu (model)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Rozvaděč modulů (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Modulová přihrádka (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Zařízení (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Stojan (název)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Zařízení (název)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Typ zařízení (model)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Role zařízení (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Role zařízení (slimák)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Virtuální šasi (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2895,33 +3240,33 @@ msgstr "Virtuální šasi (ID)" msgid "Virtual Chassis" msgstr "Virtuální šasi" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Modul (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Kabel (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Přiřazená VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "Přiřazené VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2938,121 +3283,125 @@ msgstr "Přiřazené VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Virtuální rozhraní šasi pro zařízení" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Virtuální rozhraní šasi pro zařízení (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Druh rozhraní" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Rodičovské rozhraní (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Přemostěné rozhraní (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "Rozhraní LAG (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Kontext virtuálního zařízení" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Kontext virtuálního zařízení (identifikátor)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Bezdrátová síť LAN" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Bezdrátové spojení" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Pozice nadřazeného modulu (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Instalovaný modul (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Instalované zařízení (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Instalované zařízení (název)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Mistr (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Mistr (jméno)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Nájemce (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Nájemce (slimák)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Neukončený" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Napájecí panel (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3060,13 +3409,13 @@ msgstr "Napájecí panel (ID)" msgid "Tags" msgstr "Značky" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3080,168 +3429,114 @@ msgstr "" "Podporovány jsou alfanumerické rozsahy. (Musí odpovídat počtu vytvořených " "jmen.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Skupina" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Kontaktní jméno" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Kontaktní telefon" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "Kontaktní e-mail" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Časové pásmo" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Role" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Sériové číslo" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Inventární číslo" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Výrobce" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Tvarový faktor" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Šířka" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Výška (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Sestupné jednotky" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Vnější šířka" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Vnější hloubka" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Vnější jednotka" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Hloubka montáže" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3249,31 +3544,127 @@ msgstr "Hloubka montáže" msgid "Weight" msgstr "Hmotnost" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Max. hmotnost" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Jednotka hmotnosti" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Typ stojanu" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Vnější rozměry" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Rozměry" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Číslování" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Role" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Sériové číslo" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Inventární číslo" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Proudění vzduchu" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3283,158 +3674,132 @@ msgstr "Jednotka hmotnosti" msgid "Rack" msgstr "Stojan" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Hardware" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Výrobce" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Výchozí platforma" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Číslo dílu" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Výška U pozic" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Vyloučit z využití" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Proudění vzduchu" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Typ zařízení" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Typ modulu" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Šasi" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "Role virtuálního počítače" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Konfigurační šablona" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Typ zařízení" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Role zařízení" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Nástupiště" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3445,7 +3810,7 @@ msgstr "Nástupiště" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3453,7 +3818,7 @@ msgstr "Nástupiště" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3461,7 +3826,7 @@ msgstr "Nástupiště" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3471,23 +3836,23 @@ msgstr "Nástupiště" msgid "Device" msgstr "Zařízení" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Konfigurace" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Typ modulu" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3496,7 +3861,7 @@ msgstr "Typ modulu" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3505,141 +3870,142 @@ msgstr "Typ modulu" msgid "Label" msgstr "Štítek" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Délka" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Jednotka délky" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Doména" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Napájecí panel" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Zdroj" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fáze" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Napětí" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Proud" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Maximální využití" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Maximální příkon" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Maximální příkon (W)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Přidělený příkon" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Přidělený příkon (W)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Napájecí port" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Napájecí větev" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Pouze správa" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "Režim PoE" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "Typ PoE" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Bezdrátová role" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Modul" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "Agregační skupina" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Kontexty virtuálních zařízení" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Rychlost" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3653,292 +4019,297 @@ msgstr "Rychlost" msgid "Mode" msgstr "Režim" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Skupina VLAN" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "Neznačené VLAN" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Označené VLAN" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Skupina bezdrátových sítí" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Bezdrátové LAN sítě" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Adresování" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Operace" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Související rozhraní" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "Přepínání 802.1Q" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "Pro přiřazení sítí VLAN musí být zadán režim rozhraní" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "Přístupovému rozhraní nelze přiřadit označené sítě VLAN." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Název nadřazené oblasti" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Název nadřazené skupiny webů" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Přiřazená oblast" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Přiřazená skupina" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "dostupné možnosti" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Přiřazené místo" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Rodičovská lokalita" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Místo nenalezeno." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Jméno přiděleného nájemce" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Název přiřazené role" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Výrobce tohoto typu stojanu" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Typ stojanu" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "Nejnižší očíslovaná pozice v regálu" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Šířka kolejnice k kolejnici (v palcích)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Jednotka pro vnější rozměry" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Jednotka pro regálové závaží" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Jméno přiděleného nájemce" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Název přiřazené role" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Směr proudění vzduchu" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Nadřazený web" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Umístění stojanu (pokud existuje)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Jednotky" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Seznam jednotlivých čísel jednotek oddělených čárkami" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Výrobce, který vyrábí tento typ zařízení" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Výchozí platforma pro zařízení tohoto typu (volitelné)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Hmotnost zařízení" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Jednotka pro hmotnost zařízení" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Hmotnost modulu" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Jednotka pro hmotnost modulu" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Omezte přiřazení platformy tomuto výrobci" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Přidělená role" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Výrobce typu zařízení" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Model typu zařízení" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Přiřazená platforma" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Virtuální podvozek" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Klastr" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Virtualizační klastr" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Přiřazené umístění (pokud existuje)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Přiřazený stojan (pokud existuje)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Tvář" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Namontovaná plocha stojanu" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Rodičovské zařízení (pro podřízená zařízení)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Místo pro zařízení" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Místo pro zařízení, ve kterém je toto zařízení nainstalováno (pro podřízená " "zařízení)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Směr proudění vzduchu" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Zařízení, ve kterém je tento modul nainstalován" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Modulová přihrádka" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "Místo modulu, ve kterém je tento modul nainstalován" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Typ modulu" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Replikace komponent" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3946,236 +4317,236 @@ msgstr "" "Automaticky naplnit komponenty přidružené k tomuto typu modulu (ve výchozím " "nastavení povoleno)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Přijměte komponenty" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Přijměte již existující komponenty" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Typ portu" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Rychlost portu v bps" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Typ výstupu" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Místní napájecí port, který napájí tuto zásuvku" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Elektrická fáze (pro třífázové obvody)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Nadřazené rozhraní" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Přemostěné rozhraní" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Zpoždění" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Nadřazené rozhraní LAG" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Vdcs" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "Názvy VDC oddělené čárkami, uzavřené dvojitými uvozovkami. Příklad:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Fyzické médium" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Dvoupodlažní" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Režim Poe" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Typ Poe" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "Provozní režim IEEE 802.1Q (pro rozhraní L2)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Přiřazené VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Rf role" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Bezdrátová role (AP/stanice)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} není přiřazen k zařízení {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Zadní port" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Odpovídající zadní port" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Klasifikace fyzického média" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Nainstalované zařízení" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Dětské zařízení instalované v této pozici" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Dětské zařízení nebylo nalezeno." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Nadřazená položka inventáře" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Typ komponenty" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Typ komponenty" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Název komponenty" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Název komponenty" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Komponenta nebyla nalezena: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Zařízení na straně A" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Název zařízení" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Typ strany A" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Typ ukončení" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Jméno strany A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Název ukončení" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Zařízení na straně B" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Typ strany B" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Název strany B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Stav připojení" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Strana {side_upper}: {device} {termination_object} je již připojeno" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "Zakončení strany {side_upper} nebylo nalezeno: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Hlavní" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Hlavní zařízení" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Název nadřazeného webu" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Nadřazený napájecí panel" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Primární nebo redundantní" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Typ napájení (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Jednofázové nebo třífázové" @@ -4195,7 +4566,7 @@ msgstr "" "Označené VLAN ({vlans}) musí patřit ke stejnému webu jako nadřazené " "zařízení/VM rozhraní, nebo musí být globální" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4203,17 +4574,26 @@ msgstr "" "Nelze nainstalovat modul se zástupnými hodnotami do pozice modulu bez " "definované polohy." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Nelze nainstalovat modul se zástupnými hodnotami do stromu modulu {level} na" +" stromě, ale {tokens} zadané zástupné symboly." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "Nelze adoptovat {model} {name}, protože již patří do modulu" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "{model} pojmenovaný {name} již existuje" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4222,7 +4602,7 @@ msgstr "{model} pojmenovaný {name} již existuje" msgid "Power Panel" msgstr "Napájecí panel" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4232,15 +4612,15 @@ msgstr "Napájecí zdroj" msgid "Side" msgstr "Strana" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Stav zařízení" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Nadřazená oblast" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4248,62 +4628,67 @@ msgstr "Nadřazená oblast" msgid "Parent group" msgstr "Rodičovská skupina" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Zařízení" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Typ stojanu" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Funkce" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Obrázky" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Komponenty" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Role dílčího zařízení" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Model" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Má IP OOB" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Člen virtuálního šasi" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Má kontexty virtuálních zařízení" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Skupina klastru" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Kabelový" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Obsazeno" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4315,43 +4700,43 @@ msgstr "Obsazeno" msgid "Connection" msgstr "Připojení" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Druh" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Pouze správa" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Bezdrátový kanál" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Frekvence kanálu (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Šířka kanálu (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Vysílací výkon (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4361,7 +4746,7 @@ msgstr "Vysílací výkon (dBm)" msgid "Cable" msgstr "Kabel" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "objeveno" @@ -4370,28 +4755,30 @@ msgstr "objeveno" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Člen virtuálního šasi na pozici {vc_position} již existuje." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Kontaktní informace" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Role stojanu" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Řízení zásob" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "URL zkratka" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Vnější rozměry" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Vyberte předdefinovaný typ stojanu nebo nastavte fyzikální vlastnosti níže." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Rozměry" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Řízení zásob" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4399,92 +4786,69 @@ msgstr "" "Seznam číselných ID jednotek oddělený čárkami. Rozsah lze zadat pomocí " "pomlčky." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Rezervace" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "URL zkratka" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Šasi" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Role zařízení" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "Nejnižší číslovaná pozice obsazená zařízením" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "Poloha ve virtuálním podvozku tohoto zařízení je identifikována" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Priorita" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "Priorita zařízení ve virtuálním šasi" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "Automaticky naplnit komponenty přidružené k tomuto typu modulu" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "Maximální délka je 32767 (libovolná jednotka)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Charakteristika" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Šablona portu konzoly" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Šablona portu konzolového serveru" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Šablona předního portu" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Šablona rozhraní" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Šablona elektrické zásuvky" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Šablona napájecího portu" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Šablona zadního portu" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4495,7 +4859,7 @@ msgstr "Šablona zadního portu" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4504,7 +4868,7 @@ msgstr "Šablona zadního portu" msgid "Interface" msgstr "Rozhraní" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4512,14 +4876,14 @@ msgstr "Rozhraní" msgid "Console Port" msgstr "Port konzoly" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Port konzolového serveru" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4530,8 +4894,8 @@ msgstr "Port konzolového serveru" msgid "Front Port" msgstr "Přední port" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4543,36 +4907,36 @@ msgstr "Přední port" msgid "Rear Port" msgstr "Zadní port" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Napájecí port" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Napájecí zásuvka" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Přiřazení komponent" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "InventoryItem lze přiřadit pouze k jedné komponentě." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "Rozhraní LAG" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Podřazené zařízení" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4580,41 +4944,41 @@ msgstr "" "Podřízená zařízení musí být nejprve vytvořena a přiřazena k staveništi a " "stojanu nadřazeného zařízení." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Port konzoly" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Port konzolového serveru" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Přední port" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Napájecí zásuvka" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Položka inventáře" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Role položky inventáře" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "Primární IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "Primární IPv6" @@ -4675,7 +5039,7 @@ msgstr "" "Počet předních portů, které mají být vytvořeny ({frontport_count}), musí " "odpovídat zvolenému počtu pozic zadních portů ({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4699,7 +5063,7 @@ msgstr "Pro prvního člena virtuálnáho šasi musí být specifikována pozice #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "štítek" @@ -4824,135 +5188,135 @@ msgstr "" "Šablona komponenty musí být přiřazena buď k typu zařízení, nebo k typu " "modulu." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "šablona portu konzoly" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "šablony portů konzoly" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "šablona portu konzolového serveru" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "šablony portů konzolového serveru" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "maximální příkon" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "přidělený příkon" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "šablona napájecího portu" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "šablony napájecích portů" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "Přidělený příkon nesmí překročit maximální příkon ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "napájecí větev" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Fáze (pro třífázové napájení)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "šablona elektrické zásuvky" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "šablony zásuvek" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Rodičovský napájecí port ({power_port}) musí patřit ke stejnému typu " "zařízení" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Rodičovský napájecí port ({power_port}) musí patřit ke stejnému typu modulu" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "pouze řízení" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "rozhraní mostu" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "bezdrátová role" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "šablona rozhraní" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "šablony rozhraní" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Rozhraní nemůže být přemostěno samo od sebe." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Rozhraní můstku ({bridge}) musí patřit ke stejnému typu zařízení" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Rozhraní můstku ({bridge}) musí patřit ke stejnému typu modulu" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "pozice zadního portu" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "šablona předního portu" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "šablony předního portu" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Zadní port ({name}) musí patřit ke stejnému typu zařízení" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4961,48 +5325,48 @@ msgstr "" "Neplatná poloha zadního portu ({position}); zadní port {name} má pouze " "{count} pozice" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "pozice" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "šablona zadního portu" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "šablony zadních portů" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "pozice" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Identifikátor, na který se má odkazovat při přejmenování nainstalovaných " "komponent" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "šablona moduární šachty" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "šablony modulárních šachet" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "šablona pozice zařízení" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "šablony rozvaděčů zařízení" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5011,21 +5375,21 @@ msgstr "" "Role dílčího zařízení typu zařízení ({device_type}) musí být nastaveno na " "„rodič“, aby bylo možné povolit pozice zařízení." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "ID součásti" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Identifikátor součásti přiřazený výrobcem" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "šablona položky inventáře" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "šablony položek inventáře" @@ -5167,27 +5531,27 @@ msgstr "Vyplněno vybraným kanálem (pokud je nastaven)" msgid "transmit power (dBm)" msgstr "vysílací výkon (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "bezdrátové sítě LAN" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "neoznačené VLAN" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "označené VLAN" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "rozhraní" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "rozhraní" @@ -5202,7 +5566,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type} rozhraní nelze označit jako připojená." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Rozhraní nemůže být svým vlastním rodičem." @@ -5360,91 +5724,97 @@ msgstr "" "Počet pozic nesmí být menší než počet mapovaných předních portů " "({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "přihrádka modulů" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "pozice modulů" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "Pozice modulu nemůže patřit k modulu nainstalovanému v ní." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "pozice zařízení" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "pozice zařízení" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "Tento typ zařízení ({device_type}) nepodporuje pozice zařízení." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Nelze nainstalovat zařízení do sebe." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." msgstr "" "Nelze nainstalovat určené zařízení; zařízení je již nainstalováno {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "role položky inventáře" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "role položek zásob" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "sériové číslo" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "štítek majetku" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Jedinečná značka použitá k identifikaci této položky" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "objeveny" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Tato položka byla automaticky objevena" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "položka inventáře" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "inventární položky" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Nelze přiřadit sebe jako rodiče." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "Nadřazená položka inventáře nepatří do stejného zařízení." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "Nelze přesunout položku inventáře se závislými podřízenými" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "Nelze přiřadit skladovou položku ke komponentě na jiném zařízení" @@ -5457,6 +5827,7 @@ msgid "manufacturers" msgstr "výrobci" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "modelka" @@ -5472,7 +5843,7 @@ msgstr "číslo dílu" msgid "Discrete part number (optional)" msgstr "Diskrétní číslo dílu (volitelné)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "výška (U)" @@ -5504,7 +5875,8 @@ msgstr "" "Rodičovská zařízení ukládají podřízená zařízení do pozic zařízení. Pokud " "tento typ zařízení není rodičem ani dítětem, ponechte prázdné." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "proud vzduchu" @@ -5550,151 +5922,151 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Typ dětského zařízení musí být 0U." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "typ modulu" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "typy modulů" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Virtuální počítače mohou být přiřazeny k této roli" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "role zařízení" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "role zařízení" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "Volitelně omezit tuto platformu na zařízení určitého výrobce" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "platforma" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "platformy" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "Funkce, kterou toto zařízení slouží" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Sériové číslo podvozku přidělené výrobcem" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Jedinečná značka použitá k identifikaci tohoto zařízení" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "poloha (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "plocha stojanu" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "primární IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "primární IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "IP mimo pásmo" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "Pozice VC" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Virtuální poloha podvozku" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "Priorita VC" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Priorita volby hlavního virtuálního šasi" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "zeměpisná šířka" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Souřadnice GPS v desetinném formátu (xx.rrrrrr)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "zeměpisná délka" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Název zařízení musí být pro každou lokalitu jedinečný." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "zařízení" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "zařízení" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Stojan {rack} nepatří k webu {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Lokace {location} nepatří k webu {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Stojan {rack} nepatří do lokality {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "Nelze vybrat plochu stojanu bez přiřazení stojanu." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "Bez přiřazení stojanu nelze vybrat polohu stojanu." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "Poloha musí být v krocích po 0,5 regálových jednotek." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "Při definování polohy stojanu je nutné zadat plochu stojanu." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "Typ zařízení 0U ({device_type}) nelze přiřadit k poloze stojanu." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5702,7 +6074,7 @@ msgstr "" "Podřízené typy zařízení nelze přiřadit k ploše stojanu. Toto je atribut " "nadřazeného zařízení." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5710,7 +6082,7 @@ msgstr "" "Podřízené typy zařízení nelze přiřadit k poloze stojanu. Toto je atribut " "nadřazeného zařízení." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5719,22 +6091,22 @@ msgstr "" "U{position} je již obsazeno nebo nemá dostatek místa pro umístění tohoto " "typu zařízení: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} Nejedná se o IPv4 adresu." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Zadaná adresa IP ({ip}) není přiřazen k tomuto zařízení." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} Nejedná se o IPv6 adresu." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5743,24 +6115,24 @@ msgstr "" "Přiřazená platforma je omezena na {platform_manufacturer} typy zařízení, ale" " tento typ zařízení patří {devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Přiřazený cluster patří do jiné lokality ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "Zařízení přiřazené k virtuálnímu šasi musí mít definovanou polohu." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "modul" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "moduly" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5768,22 +6140,22 @@ msgid "" msgstr "" "Modul musí být instalován v modulu patřící přiřazenému zařízení ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "doména" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "virtuální podvozek" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "Vybraný master ({master}) není přiřazena k tomuto virtuálnímu podvozku." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5792,39 +6164,39 @@ msgstr "" "Nelze odstranit virtuální šasi {self}. Existují členská rozhraní, která " "tvoří rozhraní LAG napříč podvozky." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identifikátor" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Numerický identifikátor jedinečný pro nadřazené zařízení" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "komentáře" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "kontext virtuálního zařízení" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "kontexty virtuálních zařízení" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} není IPV{family} adresa." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "Primární IP adresa musí patřit k rozhraní na přiřazeném zařízení." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "váha" @@ -5900,94 +6272,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "Napětí nemůže být záporné pro napájení střídavým proudem" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "role stojanu" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "role stojanu" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "ID zařízení" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Lokálně přiřazený identifikátor" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Funkční role" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Jedinečná značka použitá k identifikaci tohoto stojanu" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "Šířka" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Šířka kolejnice k kolejnici" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Výška v regálových jednotkách" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "startovací jednotka" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Startovací jednotka pro regál" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "sestupné jednotky" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Jednotky jsou číslovány shora dolů" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "vnější šířka" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Vnější rozměr stojanu (šířka)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "vnější hloubka" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Vnější rozměr stojanu (hloubka)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "vnější jednotka" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "max. hmotnost" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Maximální nosnost stojanu" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "montážní hloubka" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -5995,28 +6332,75 @@ msgstr "" "Maximální hloubka namontovaného zařízení v milimetrech. U čtyřsloupkových " "regálů se jedná o vzdálenost mezi přední a zadní kolejnicí." -#: netbox/dcim/models/racks.py:221 +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "max. hmotnost" + +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Maximální nosnost stojanu" + +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "tvarový faktor" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "typ stojanu" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "typy stojanů" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "Při nastavování vnější šířky/hloubky musí zadat jednotku" + +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 +msgid "Must specify a unit when setting a maximum weight" +msgstr "Při nastavování maximální hmotnosti musí specifikovat jednotku" + +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "role stojanu" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "role stojanu" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "ID zařízení" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Lokálně přiřazený identifikátor" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Funkční role" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Jedinečná značka použitá k identifikaci tohoto stojanu" + +#: netbox/dcim/models/racks.py:359 msgid "rack" msgstr "nosič" -#: netbox/dcim/models/racks.py:222 +#: netbox/dcim/models/racks.py:360 msgid "racks" msgstr "regály" -#: netbox/dcim/models/racks.py:237 +#: netbox/dcim/models/racks.py:375 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "Přiřazené umístění musí patřit nadřazenému webu ({site})." -#: netbox/dcim/models/racks.py:241 -msgid "Must specify a unit when setting an outer width/depth" -msgstr "Při nastavování vnější šířky/hloubky musí zadat jednotku" - -#: netbox/dcim/models/racks.py:245 -msgid "Must specify a unit when setting a maximum weight" -msgstr "Při nastavování maximální hmotnosti musí specifikovat jednotku" - -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6025,7 +6409,7 @@ msgstr "" "Stojan musí být alespoň {min_height}U vysoký k uložení aktuálně " "nainstalovaných zařízení." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6034,29 +6418,29 @@ msgstr "" "Číslování regálových jednotek musí začínat na {position} nebo méně pro " "umístění aktuálně nainstalovaných zařízení." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "Umístění musí být ze stejného místa, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "jednotky" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "rezervace stojanu" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "rezervace stojanů" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Neplatná jednotka (y) pro {height}U stojan: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Následující jednotky již byly rezervovány: {unit_list}" @@ -6158,11 +6542,11 @@ msgstr "Ukončení A" msgid "Termination B" msgstr "Ukončení B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Zařízení A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Zařízení B" @@ -6197,13 +6581,13 @@ msgid "Reachable" msgstr "Dosažitelný" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Přístroje" @@ -6213,17 +6597,17 @@ msgid "VMs" msgstr "Virtuální stroje" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Konfigurační šablona" @@ -6231,22 +6615,22 @@ msgstr "Konfigurační šablona" msgid "Site Group" msgstr "Skupina stránek" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP adresa" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "IPv4 Adresa" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "Adresa IPv6" @@ -6283,10 +6667,10 @@ msgstr "Napájecí porty" msgid "Power outlets" msgstr "Elektrické zásuvky" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6296,8 +6680,8 @@ msgstr "Elektrické zásuvky" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Rozhraní" @@ -6323,8 +6707,8 @@ msgid "Module Bay" msgstr "Modulová přihrádka" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6333,30 +6717,30 @@ msgstr "Modulová přihrádka" msgid "Inventory Items" msgstr "Inventární položky" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Barva kabelu" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Propojit vrstevníky" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Označit Připojeno" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Maximální tažení (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Přidělené losování (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6365,12 +6749,12 @@ msgstr "Přidělené losování (W)" msgid "IP Addresses" msgstr "IP adresy" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Skupiny FHRP" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6381,52 +6765,52 @@ msgstr "Skupiny FHRP" msgid "Tunnel" msgstr "Tunel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Pouze správa" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Instalovaný modul" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Sériový modul" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Štítek aktiv modulu" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Stav modulu" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Komponenta" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Položky" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Typy zařízení" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Typy modulů" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Platformy" @@ -6445,12 +6829,13 @@ msgid "U Height" msgstr "Výška U" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Instance" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6459,9 +6844,9 @@ msgstr "Instance" msgid "Console Ports" msgstr "Porty konzoly" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6470,9 +6855,9 @@ msgstr "Porty konzoly" msgid "Console Server Ports" msgstr "Porty konzolového serveru" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6481,9 +6866,9 @@ msgstr "Porty konzolového serveru" msgid "Power Ports" msgstr "Napájecí porty" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6492,9 +6877,9 @@ msgstr "Napájecí porty" msgid "Power Outlets" msgstr "Napájecí zásuvky" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6502,9 +6887,9 @@ msgstr "Napájecí zásuvky" msgid "Front Ports" msgstr "Přední porty" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6513,23 +6898,26 @@ msgstr "Přední porty" msgid "Rear Ports" msgstr "Zadní porty" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Pozice pro zařízení" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Modulové pozice" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Napájecí zdroje" @@ -6542,41 +6930,45 @@ msgstr "Maximální využití" msgid "Available Power (VA)" msgstr "Dostupný výkon (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Stojany" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Výška" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Prostor" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Vnější šířka" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Vnější hloubka" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Max. hmotnost" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Prostor" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Stránky" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "Testovací případ musí nastavit peer_termination_type" @@ -6585,77 +6977,77 @@ msgstr "Testovací případ musí nastavit peer_termination_type" msgid "Disconnected {count} {type}" msgstr "Odpojeno {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Rezervace" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Zařízení bez racku" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Kontext konfigurace" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Konfigurace rendrování" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Při vykreslování šablony došlo k chybě: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Virtuální stroje" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Nainstalované zařízení {device} v zátoce {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Odstraněné zařízení {device} od zátoky {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Děti" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Přidán člen {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Nelze odebrat hlavní zařízení {device} z virtuálního podvozku." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Odstraněno {device} z virtuálního šasi {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Neznámý související objekt (y): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "Změna typu vlastních polí není podporována." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "Plánování není pro tento skript povoleno." @@ -6704,7 +7096,7 @@ msgid "Multiple objects" msgstr "Více objektů" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Zakázané" @@ -6739,7 +7131,7 @@ msgstr "Ne" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Odkaz" @@ -6759,65 +7151,56 @@ msgstr "Abecedně (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Abecedně (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "aktualizováno" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Vymazáno" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Informace" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Úspěch" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Varování" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Nebezpečí" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Ladění" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Výchozí" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Porucha" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Hodinová" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 hodin" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Denně" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Týdenní" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 dní" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6825,18 +7208,16 @@ msgstr "30 dní" msgid "Create" msgstr "Vytvořit" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Aktualizovat" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6847,81 +7228,85 @@ msgstr "Aktualizovat" msgid "Delete" msgstr "Odstranit" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Modrý" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Indigo" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Nachový" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Růžový" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Červené" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "oranžový" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Žlutá" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Zelená" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Šedozelená" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Azurová" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Šedá" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Černá" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Bílá" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webový háček" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Skript" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Oznámení" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -6992,59 +7377,59 @@ msgstr "Filtry, které se použijí při počítání počtu objektů" msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "Neplatný formát. Objektové filtry musí být předány jako slovník." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Seznam objektů" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Zobrazí libovolný seznam objektů." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Výchozí počet objektů k zobrazení" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "Neplatný formát. Parametry URL musí být předány jako slovník." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS kanál" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Vložte kanál RSS z externího webu." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "Adresa URL zdroje" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Maximální počet objektů, které se mají zobrazit" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Jak dlouho uložit obsah uložený v mezipaměti (v sekundách)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Záložky" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Zobrazit své osobní záložky" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Neznámý typ akce pro pravidlo události: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Nelze importovat kanál událostí {name} chyba: {error}" @@ -7053,210 +7438,219 @@ msgstr "Nelze importovat kanál událostí {name} chyba: {error}" msgid "Script module (ID)" msgstr "Skriptový modul (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Datový soubor (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Skupina (název)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Typ clusteru" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Typ klastru (slimák)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Skupina nájemců" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Skupina nájemců (slimák)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Značka" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Štítek (slimák)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Má místní kontextová data konfigurace" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Uživatelské jméno" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Název skupiny" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Požadováno" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Musí být jedinečný" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "Uživatelské rozhraní viditelné" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "Upravitelné uživatelské rozhraní" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Je klonovatelný" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Minimální hodnota" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Maximální hodnota" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Ověření regex" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Chování" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Nové okno" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Třída tlačítek" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "Typ MIME" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "přípona souboru" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Jako příloha" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Sdílené" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "Metoda HTTP" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "Adresa URL užitečného zatížení" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "Ověření SSL" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Tajemství" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "Cesta k souboru CA" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Při vytváření" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Typy událostí" -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "Při aktualizaci" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Při smazání" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "Na začátku práce" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "Na konci práce" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Je aktivní" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Typy objektů" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Jeden nebo více přiřazených typů objektů" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Datový typ pole (např. text, celé číslo atd.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Typ objektu" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Typ objektu (pro pole objektu nebo více objektů)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Sada na výběr" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Sada možností (pro výběrová pole)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Zda je uživatelské pole zobrazeno v uživatelském rozhraní" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Zda je vlastní pole upravitelné v uživatelském rozhraní" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "Základní sada předdefinovaných možností k použití (pokud existují)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7264,204 +7658,199 @@ msgstr "" "Uváděný řetězec možností polí oddělených čárkami s volitelnými popisky " "oddělenými dvojtečkou: „výběr:1: první volba, výběra2:druhá volba“" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "třída tlačítek" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "Třída prvního odkazu ve skupině bude použita pro rozevírací tlačítko" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Typ (y) události, které spustí toto pravidlo" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Akční objekt" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Název nebo skript Webhooku jako tečkovaná cesta module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webový háček {name} nenalezeno" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Skript {name} nenalezeno" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Typ přiřazeného objektu" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "Klasifikace vstupu" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Uživatelé" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "Uživatelská jména oddělená čárkami, uzavřená dvojitými uvozovkami" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Skupiny" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Názvy skupin oddělené čárkami, uzavřené dvojitými uvozovkami" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Typ souvisejícího objektu" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Typ pole" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Možnosti" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Údaje" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Datový soubor" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Typy obsahu" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" -msgstr "Typ obsahu HTTP" - -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Události" - -#: netbox/extras/forms/filtersets.py:265 -msgid "Action type" -msgstr "Typ akce" - -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Vytváření objektů" +msgstr "Typ obsahu HTTP" #: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Aktualizace objektů" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Odstranění objektů" +msgid "Event type" +msgstr "Typ události" -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Začíná práce" +#: netbox/extras/forms/filtersets.py:291 +msgid "Action type" +msgstr "Typ akce" #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Ukončení zakázky" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Typ označeného objektu" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Povolený typ objektu" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Regiony" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Skupiny webů" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Lokality" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Typy zařízení" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Role" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Typy klastrů" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Skupiny klastrů" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Klastry" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Skupiny nájemců" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Po" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Dříve" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Čas" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Typ (y) objektu, který má toto vlastní pole" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Akce" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Výchozí hodnota" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "Typ souvisejícího objektu (pouze pro pole objektu/více objektů)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Související filtr objektů" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Zadejte parametry dotazu jako objekt JSON." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Vlastní pole" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Chování" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Hodnoty" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7469,14 +7858,18 @@ msgstr "" "Typ dat uložených v tomto poli. U polí objekt/více objektů vyberte níže " "související typ objektu." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." msgstr "" "Zobrazí se jako text nápovědy pro pole formuláře. Je podporován markdown." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Související objekt" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7484,16 +7877,16 @@ msgstr "" "Zadejte jednu volbu na řádek. Pro každou volbu lze zadat volitelný popisek " "přidáním dvojtečky. Příklad:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Vlastní odkaz" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Šablony" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7502,7 +7895,7 @@ msgstr "" "Kód šablony Jinja2 pro text odkazu. Referovat na objekt jako {example}. " "Odkazy, které se vykreslují jako prázdný text, se nezobrazí." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." @@ -7510,54 +7903,58 @@ msgstr "" "Kód šablony Jinja2 pro adresu URL odkazu. Referovat na objekt jako " "{example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Kód šablony" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Šablona exportu" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Vykreslování" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "Obsah šablony je vyplněn ze vzdáleného zdroje vybraného níže." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Musí zadat místní obsah nebo datový soubor" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Uložený filtr" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "Skupina oznámení určuje alespoň jednoho uživatele nebo skupinu." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "HTTP požadavek" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Volba akce" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Zadejte podmínky do JSON Formát." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7565,55 +7962,33 @@ msgstr "" "Zadejte parametry, které chcete předat akci v JSON Formát." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Pravidlo události" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Podmínky" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Výtvory" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Aktualizace" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Spouštěče" -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Vymazání" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Skupina oznámení" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Provádění pracovních míst" - -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Nájemci" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Přiřazení" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "Data jsou vyplněna ze vzdáleného zdroje vybraného níže." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Musí zadat buď lokální data nebo datový soubor" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Obsah" @@ -7659,47 +8034,25 @@ msgstr "Naplánujte spuštění skriptu na nastavený čas" msgid "Interval at which this script is re-run (in minutes)" msgstr "Interval, ve kterém je tento skript znovu spuštěn (v minutách)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Nebyly nalezeny žádné indexátory!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "čas" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "Uživatelské jméno" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "ID požadavku" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "akce" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "údaje před změnou" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Změny v databázi byly automaticky vráceny." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "údaje po změně" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Skript byl přerušen s chybou: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "změna objektu" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Došlo k výjimce: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "změny objektu" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Změny databáze byly vráceny kvůli chybě." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "Protokolování změn není u tohoto typu objektu podporováno ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Nebyly nalezeny žádné indexátory!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7751,31 +8104,31 @@ msgstr "šablona konfigurace" msgid "config templates" msgstr "konfigurační šablony" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Objekt (objekty), na které se toto pole vztahuje." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Typ dat obsažených v tomto uživatelském poli" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "Typ objektu NetBox, na který se toto pole mapuje (pro objektová pole)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Název interního pole" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Povoleny jsou pouze alfanumerické znaky a podtržítka." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "Dvojité podtržítko není povoleno v názvech vlastních polí." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7783,31 +8136,39 @@ msgstr "" "Název pole zobrazeného uživatelům (pokud není uvedeno, použije se název " "pole)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "název skupiny" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Vlastní pole ve stejné skupině se zobrazí společně" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "požadované" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Je-li hodnota true, je toto pole povinné při vytváření nových objektů nebo " -"úpravách existujícího objektu." +"Toto pole je povinné při vytváření nových objektů nebo při úpravách " +"existujícího objektu." + +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "Musí být unikátní" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "Hodnota tohoto pole musí být jedinečná pro přiřazený objekt" -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "hmotnost vyhledávání" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7815,11 +8176,11 @@ msgstr "" "Vážení pro vyhledávání. Nižší hodnoty jsou považovány za důležitější. Pole s" " váhou vyhledávání nula budou ignorována." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "filtrační logika" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7827,11 +8188,11 @@ msgstr "" "Loose odpovídá libovolné instanci daného řetězce; přesně odpovídá celému " "poli." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "selhání" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7839,35 +8200,43 @@ msgstr "" "Výchozí hodnota pole (musí být hodnota JSON). Zapouzdřit řetězce s dvojitými" " uvozovkami (např. „Foo“)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filtrujte volby výběru objektů pomocí dikt query_params (musí být hodnota " +"JSON). Zapouzdřete řetězce dvojitými uvozovkami (např. „Foo“)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "hmotnost displeje" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "Pole s vyšší hmotností se ve formuláři zobrazují níže." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "minimální hodnota" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Minimální povolená hodnota (pro číselná pole)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "maximální hodnota" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Maximální povolená hodnota (pro číselná pole)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "validační regex" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7878,273 +8247,241 @@ msgstr "" "vynucení shody celého řetězce. Například, ^ [A-Z]{3}$ omezí " "hodnoty na přesně tři velká písmena." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "výběrová sada" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "Určuje, zda se uživatelské pole zobrazí v uživatelském rozhraní" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Určuje, zda lze uživatelskou hodnotu pole upravovat v uživatelském rozhraní" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "je klonovatelný" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Replikujte tuto hodnotu při klonování objektů" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "vlastní pole" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "vlastní pole" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Neplatná výchozí hodnota“{value}„: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "Minimální hodnota může být nastavena pouze pro číselná pole" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "Maximální hodnota může být nastavena pouze pro číselná pole" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Ověření regulárních výrazů je podporováno pouze pro textová pole a pole URL" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "Jedinečnost nelze vynutit u booleovských polí" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Výběrová pole musí specifikovat sadu možností." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Volby lze nastavit pouze na výběrových polích." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Pole objektu musí definovat typ objektu." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} pole nemusí definovat typ objektu." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "Související filtr objektů lze definovat pouze pro pole objektů." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "Filtr musí být definován jako slovník mapující atributy na hodnoty." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Pravda" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Nepravdivé" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "Hodnoty se musí shodovat s tímto regexem: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "Hodnota musí být řetězec." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "Hodnota musí odpovídat regex '{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "Hodnota musí být celé číslo." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "Hodnota musí být alespoň {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "Hodnota nesmí překročit {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "Hodnota musí být desetinná." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "Hodnota musí být pravdivá nebo nepravdivá." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Hodnoty data musí být ve formátu ISO 8601 (RRRR-MM-DD)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Hodnoty data a času musí být ve formátu ISO 8601 (RRRR-MM-DD HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Neplatná volba ({value}) pro volitelnou sadu {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Neplatná volba (y){value}) pro volitelnou sadu {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "Hodnota musí být ID objektu, ne {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "Hodnota musí být seznam ID objektů, ne {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Nalezeno neplatné ID objektu: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Povinné pole nesmí být prázdné." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Základní sada předdefinovaných možností (volitelné)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Volby jsou automaticky seřazeny abecedně" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "vlastní sada výběru polí" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "vlastní sady výběru polí" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Musí definovat základní nebo další možnosti." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "rozložení" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "konfigurace" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "přístrojová deska" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "řídicí panely" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "typy objektů" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Předmět (objekty), na které se toto pravidlo vztahuje." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "na vytvoření" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Spustí se, když je vytvořen odpovídající objekt." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "při aktualizaci" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Spustí se při aktualizaci odpovídajícího objektu." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "při smazání" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Spustí se, když je odstraněn odpovídající objekt." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "na začátku práce" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Spustí se, když je spuštěna úloha pro odpovídající objekt." +msgid "The types of event which will trigger this rule." +msgstr "Typy událostí, které spustí toto pravidlo." -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "na konci práce" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Spustí se, když dojde k ukončení úlohy pro odpovídající objekt." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "podmínky" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Sada podmínek, které určují, zda bude událost generována." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "typ akce" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Další data, která mají být předána objektu akce" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "pravidlo události" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "pravidla události" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Musí být vybrán alespoň jeden typ události: vytvoření, aktualizace, " -"odstranění, zahájení úlohy a/nebo konec úlohy." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8154,7 +8491,7 @@ msgstr "" "webhooku. Zpracování šablony Jinja2 je podporováno ve stejném kontextu jako " "tělo požadavku." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available tady." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "další záhlaví" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8180,11 +8517,11 @@ msgstr "" "Hodnota. Zpracování šablony Jinja2 je podporováno ve stejném kontextu" " jako tělo požadavku (níže)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "šablona těla" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8197,11 +8534,11 @@ msgstr "" "uživatelské jméno, identifikační číslo požadavku, " "a data." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "tajemství" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8211,15 +8548,15 @@ msgstr "" " hlavička obsahující hexový přehled HMAC těla užitečného zatížení s použitím" " tajemství jako klíče. Tajemství není v žádosti předáno." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "Povolit ověření certifikátu SSL. Zakázat s opatrností!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "Cesta k souboru CA" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8227,65 +8564,65 @@ msgstr "" "Specifický soubor certifikátu CA, který se použije pro ověření SSL. Chcete-" "li použít výchozí nastavení systému, ponechte prázdné." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "webový háček" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "webhooky" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "Pokud je ověřování SSL zakázáno, neurčujte soubor certifikátu certifikační " "autority." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Typ objektu (typy), na které se toto spojení vztahuje." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "text odkazu" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Kód šablony Jinja2 pro text odkazu" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL odkazu" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Kód šablony Jinja2 pro URL odkazu" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Odkazy se stejnou skupinou se zobrazí jako rozbalovací nabídka" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "nové okno" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Vynutit otevření odkazu v novém okně" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "vlastní odkaz" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "vlastní odkazy" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Typ (typy) objektu, na které se tato šablona vztahuje." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8293,111 +8630,158 @@ msgstr "" "Kód šablony Jinja2. Seznam exportovaných objektů je předán jako kontextová " "proměnná s názvem queryset." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "Výchozí hodnota text/prostý; znaková sada = utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "přípona souboru" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Rozšíření pro připojení k rendrovanému názvu souboru" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "jako příloha" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Stáhnout soubor jako přílohu" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "šablona exportu" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "exportovat šablony" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "„{name}„je vyhrazené jméno. Zvolte prosím jiné jméno." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Typ objektu (typy), na které se tento filtr vztahuje." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "sdílené" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "uložený filtr" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "uložené filtry" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Parametry filtru musí být uloženy jako slovník argumentů klíčových slov." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "výška obrazu" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "šířka obrazu" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "příloha obrázku" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "obrazové přílohy" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "K tomuto typu objektu nelze přiřadit přílohy obrázků ({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "laskavý" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "zápis do deníku" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "zápisy do deníku" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Žurnálování není pro tento typ objektu podporováno ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "záložka" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "záložky" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "K tomuto typu objektu nelze přiřadit záložky ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "číst" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "událost" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "oznámení" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "oznámení" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Objekty tohoto typu ({type}) nepodporují oznámení." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "skupin" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "uživatelé" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "oznamovací skupina" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "skupiny oznámení" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "předplatné" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "předplatné" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "je spustitelný" @@ -8438,19 +8822,19 @@ msgstr "hodnota uložená v mezipaměti" msgid "cached values" msgstr "hodnoty uložené v mezipaměti" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "větev" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "poboček" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "postupná změna" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "postupné změny" @@ -8474,85 +8858,87 @@ msgstr "označená položka" msgid "tagged items" msgstr "označené položky" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Data skriptu" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Parametry spuštění skriptu" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Změny v databázi byly automaticky vráceny." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Skript byl přerušen s chybou: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Došlo k výjimce: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Změny databáze byly vráceny kvůli chybě." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "Odstranění brání pravidlo ochrany: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Odmítnout" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Typy objektů" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Ověřte jedinečnost" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Viditelné" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Upravitelné" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Typ souvisejícího objektu" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Sada výběru" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Je klonovatelný" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Minimální hodnota" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Maximální hodnota" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Ověření Regex" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "počítat" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Řadit abecedně" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Nové okno" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Jako příloha" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8562,63 +8948,54 @@ msgstr "Jako příloha" msgid "Data File" msgstr "Datový soubor" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Synchronizováno" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Obrázek" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Velikost (bajty)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Číst" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "Ověření SSL" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Začátek úlohy" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Konec úlohy" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Typy událostí" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Role zařízení" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Celé jméno" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "ID požadavku" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Komentáře (krátký)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Linka" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Úroveň" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Zpráva" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Metoda" @@ -8649,37 +9026,37 @@ msgstr "Ověřovací pravidla musí být předána jako slovník" msgid "Custom validation failed for {attribute}: {exception}" msgstr "Vlastní ověření se nezdařilo pro {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Neplatný atribut“{name}„na vyžádání" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Neplatný atribut“{name}„pro {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Váš řídicí panel byl resetován." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Přidán widget: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Aktualizovaný widget: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Odstraněný widget: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Chyba při mazání widgetu: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "Nelze spustit skript: Proces RQ Worker není spuštěn." @@ -8723,10 +9100,6 @@ msgstr "SLAAK" msgid "Loopback" msgstr "Zpětná smyčka" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Sekundární" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8752,19 +9125,19 @@ msgstr "Prostý text" msgid "Invalid IP address format: {address}" msgstr "Neplatný formát IP adresy: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Cíl importu" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Cíl importu (název)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Cíl exportu" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Cíl exportu (název)" @@ -8829,16 +9202,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Předpony, které obsahují tuto předponu nebo IP" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Délka masky" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "Číslo VLAN (1-4094)" @@ -8858,23 +9231,23 @@ msgid "Parent prefix" msgstr "Nadřazená předpona" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Virtuální počítač (název)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Virtuální počítač (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Rozhraní (název)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "Rozhraní virtuálního počítače (název)" @@ -8902,19 +9275,19 @@ msgstr "Služba (ID)" msgid "NAT inside IP address (ID)" msgstr "NAT uvnitř IP adresy (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "IP adresa (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP adresa" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "Primární IPv4 (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "Primární IPv6 (ID)" @@ -8947,17 +9320,17 @@ msgstr "Je vyžadována maska CIDR (např. /24)." msgid "Address pattern" msgstr "Vzor adresy" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Vynutit jedinečný prostor" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Je soukromý" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -8970,20 +9343,20 @@ msgstr "Je soukromý" msgid "RIR" msgstr "ZVRHNOUT" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Datum přidání" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Skupina VLAN" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -8992,49 +9365,49 @@ msgstr "Skupina VLAN" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "WLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Délka předpony" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Je bazén" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Zacházejte jako plně využívané" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "Přiřazení VLAN" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "Název DNS" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "protokolu" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "ID skupiny" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9046,155 +9419,141 @@ msgstr "ID skupiny" msgid "Authentication type" msgstr "Typ autentizace" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Ověřovací klíč" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Autentizace" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "Minimální dětský VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Maximální počet dětí VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Typ rozsahu" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "Rozsahy ID VLAN" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Rozsah" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Stránky a skupina" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Přístavy" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Importovat cíle trasy" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Exportovat cíle trasy" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "Přiřazené RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "Skupina VLAN (pokud existuje)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Nadřazené zařízení přiřazeného rozhraní (pokud existuje)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Virtuální stroj" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "Nadřazený virtuální počítač přiřazeného rozhraní (pokud existuje)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Přiřazené rozhraní" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Je primární" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Nastavte to jako primární IP pro přiřazené zařízení" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Není určeno žádné zařízení ani virtuální počítač; nelze nastavit jako " "primární IP" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "Není určeno žádné rozhraní; nelze nastavit jako primární IP" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Typ autentizace" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Typ rozsahu (aplikace a model)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Minimální podřízený VLAN VID (výchozí: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Maximální podřízený VLAN VID (výchozí: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Přiřazená skupina VLAN" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "Protokol IP" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Vyžadováno, pokud není přiřazeno k virtuálnímu počítači" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Požadováno, pokud není přiřazeno k zařízení" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} není přiřazen k tomuto zařízení/virtuálnímu počítači." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Cíle trasy" @@ -9270,31 +9629,34 @@ msgstr "Přiřazeno k rozhraní" msgid "DNS Name" msgstr "Název DNS" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "ID VLAN" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Minimální VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Obsahuje VLAN ID" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Maximální VID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "ID VLAN" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9364,11 +9726,16 @@ msgstr "Virtuální IP adresa" msgid "Assignment already exists" msgstr "Přiřazení již existuje" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "ID VLAN" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "Dětské sítě VLAN" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9376,33 +9743,33 @@ msgstr "" "Seznam jednoho nebo více čísel portů oddělený čárkami. Rozsah lze zadat " "pomocí pomlčky." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Šablona služby" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Přístav (y)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Servisní služby" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Šablona služby" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Z šablony" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Zvyk" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9441,7 +9808,7 @@ msgstr "ID skupiny" msgid "protocol" msgstr "protokol" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "typ ověřování" @@ -9457,10 +9824,6 @@ msgstr "Skupina FHRP" msgid "FHRP groups" msgstr "Skupiny FHRP" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "přednost" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "Přiřazení skupiny FHRP" @@ -9477,7 +9840,7 @@ msgstr "soukromá" msgid "IP space managed by this RIR is considered private" msgstr "IP prostor spravovaný tímto RIR je považován za soukromý" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR" @@ -9724,22 +10087,6 @@ msgid "" msgstr "" "Služba musí být přidružena buď k zařízení, nebo k virtuálnímu počítači." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "minimální VLAN ID" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Nejnižší přípustné ID dětské VLAN" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "maximální ID VLAN" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Nejvyšší přípustné ID dětské VLAN" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "Skupiny VLAN" @@ -9752,38 +10099,40 @@ msgstr "Nelze nastavit scope_type bez scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Nelze nastavit scope_id bez scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Rozsahy se nemohou překrývat." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" -"Maximální dětský VID musí být větší nebo roven minimálnímu dětskému VID" +"Maximální dětský VID musí být větší nebo roven minimálnímu dětskému VID " +"({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "Konkrétní místo, ke kterému je tato VLAN přiřazena (pokud existuje)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "Skupina VLAN (volitelné)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "Numerické ID VLAN (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Provozní stav této VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "Primární funkce této VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9792,11 +10141,10 @@ msgstr "" "VLAN je přiřazena ke skupině {group} (oblast působnosti: {scope}); nelze " "také přiřadit k webu {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "" -"VID musí být mezi {minimum} a {maximum} pro sítě VLAN ve skupině {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "VID musí být v rozmezí {ranges} pro sítě VLAN ve skupině {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9814,8 +10162,8 @@ msgstr "vynutit jedinečný prostor" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Zabraňte duplicitním předponům/IP adresám v tomto VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF" @@ -9843,8 +10191,8 @@ msgstr "Počet stránek" msgid "Provider Count" msgstr "Počet poskytovatelů" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Agregáty" @@ -9853,21 +10201,21 @@ msgid "Added" msgstr "Přidal" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Předpony" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Využití" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "Rozsahy IP" @@ -9912,7 +10260,11 @@ msgstr "Přiřazený objekt" msgid "Scope Type" msgstr "Typ rozsahu" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "Rozsahy VID" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VIDIO" @@ -9976,11 +10328,11 @@ msgstr "Rozhraní zařízení" msgid "VM Interfaces" msgstr "Rozhraní virtuálních počítačů" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Toto pole nesmí být prázdné." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -9988,21 +10340,34 @@ msgstr "" "Hodnota musí být předána přímo (např. „foo“: 123); nepoužívejte slovník ani " "seznam." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} není platná volba." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Neplatný typ obsahu: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "Neplatná hodnota. Zadejte typ obsahu jako '.„." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "Rozsahy musí být specifikovány ve formuláři (dolní, horní)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Hranice rozsahu musí být definovány jako celá čísla." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} musí implementovat get_view_name ()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Neplatné oprávnění {permission} pro model {model}" @@ -10327,47 +10692,52 @@ msgstr "Odstranit značky" msgid "{class_name} must specify a model class." msgstr "{class_name} musí zadat třídu modelu." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Neznámý název pole '{name}'v datech vlastního pole." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Neplatná hodnota pro vlastní pole '{name}„: {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Vlastní pole '{name}Musí mít jedinečnou hodnotu." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Chybí povinné vlastní pole '{name}„." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Vzdálený zdroj dat" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "datová cesta" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Cesta ke vzdálenému souboru (vzhledem k kořenovému zdroji dat)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "automatická synchronizace povolena" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Povolit automatickou synchronizaci dat při aktualizaci datového souboru" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "datum synchronizováno" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} musí implementovat metodu sync_data ()." @@ -10381,217 +10751,230 @@ msgid "Site Groups" msgstr "Skupiny webů" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Role stojanu" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Nadmořská výška" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Skupiny nájemců" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Skupiny kontaktů" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Kontaktní role" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Kontaktní přiřazení" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Role stojanu" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Nadmořská výška" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Typy stojanů" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Moduly" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Kontexty virtuálních zařízení" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Výrobci" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Komponenty zařízení" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Role položek inventáře" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Spojení" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Kabely" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Bezdrátové spoje" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Připojení rozhraní" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Připojení konzoly" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Napájecí připojení" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Skupiny bezdrátových sítí" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Role síťových rozsahů a VLAN" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "Rozsahy ASN" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "Skupiny VLAN" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Šablony služeb" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Služby" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Tunely" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Skupiny tunelů" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Zakončení tunelů" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPN" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Zakončení" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "Návrhy IKE" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "Zásady IKE" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "Návrhy IPsec" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "Zásady protokolu IPsec" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "Profily IPsec" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Virtualizace" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Virtuální disky" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Typy klastrů" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Skupiny klastrů" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Typy obvodů" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Skupiny obvodů" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Skupinové úkoly" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Ukončení obvodů" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Poskytovatelé" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Účty poskytovatele" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Sítě poskytovatelů" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Napájecí panely" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Konfigurace" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Kontexty konfigurace" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Konfigurační šablony" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Přizpůsobení" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10604,114 +10987,108 @@ msgstr "Přizpůsobení" msgid "Custom Fields" msgstr "Vlastní pole" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Volby uživatelských polí" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Vlastní odkazy" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Exportovat šablony" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Uložené filtry" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Přílohy obrázků" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operace" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Integrace" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Zdroje dat" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Pravidla události" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhooky" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Pracovní místa" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Protokolování" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Skupiny oznámení" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Záznamy deníku" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Protokol změn" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "Administrátor" -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Uživatelé" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Skupiny" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "Tokeny API" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Oprávnění" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Systém" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Pluginy" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Historie konfigurace" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Úkoly na pozadí" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Pluginy" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10741,30 +11118,22 @@ msgid "" msgstr "" "{template_extension} není podtřídou Netbox.Plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"Třída PluginTemplateExtension {template_extension} nedefinuje platný model!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} musí být instancí Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} musí být instancí Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} musí být instancí Netbox.Plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context musí být slovník" @@ -10842,75 +11211,79 @@ msgstr "Po inicializaci nelze do registru přidat úložiště" msgid "Cannot delete stores from registry" msgstr "Nelze odstranit obchody z registru" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "Čeština" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "Dánština" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Němčina" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Angličtina" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "Španělština" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "Francouzština" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "Italština" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Japonština" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Holandština" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Polština" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "Portugalština" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Ruština" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Turečtina" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "Ukrajinština" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "Čínština" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Vybrat vše" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Přepnout vše" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Přepnout rozevírací nabídku" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Chyba" @@ -10962,24 +11335,24 @@ msgstr "Přejmenováno {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Vymazáno {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Seznam změn" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "věstníku" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "Nelze synchronizovat data: Žádný datový soubor není nastaven." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Synchronizovaná data pro {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Synchronizováno {count} {object_type}" @@ -10989,7 +11362,7 @@ msgstr "Synchronizováno {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} musí implementovat get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11025,11 +11398,11 @@ msgstr "Došlo k problému s vaší žádostí. Obraťte se prosím na administr msgid "The complete exception is provided below" msgstr "Úplná výjimka je uvedena níže" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Verze Python" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "Verze NetBox" @@ -11053,14 +11426,26 @@ msgstr "na GitHubu" msgid "Home Page" msgstr "Domovská stránka" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Profil" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Oznámení" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Předplatné" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Předvolby" @@ -11068,7 +11453,7 @@ msgstr "Předvolby" msgid "Change Password" msgstr "Změnit heslo" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11093,7 +11478,7 @@ msgstr "Změnit heslo" msgid "Cancel" msgstr "Zrušit" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11167,7 +11552,7 @@ msgid "Superuser" msgstr "Superuživatel" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Zaměstnanci" @@ -11182,19 +11567,19 @@ msgstr "Přiřazené skupiny" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11215,7 +11600,7 @@ msgstr "Moje tokeny API" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Žeton" @@ -11236,32 +11621,41 @@ msgstr "Přidání žetonu" msgid "Home" msgstr "Domov" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "NetBox motiv" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "NetBox Logo" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Doktoři" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "Dokumentace REST API" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "GraphQL API" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Podpora NetBox Labs" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Zdrojový kód" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Komunita" @@ -11273,6 +11667,11 @@ msgstr "Datum instalace" msgid "Termination Date" msgstr "Datum ukončení" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Přiřadit skupinu" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Ukončení výměnných obvodů" @@ -11290,6 +11689,14 @@ msgstr "Strana" msgid "Z side" msgstr "Strana Z" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Přiřadit obvod" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Přiřazení skupiny obvodů" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Přidat obvod" @@ -11314,7 +11721,7 @@ msgstr "Přidat" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11435,13 +11842,10 @@ msgstr "Nová hodnota" msgid "Changed" msgstr "Změněno" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Naposledy aktualizováno" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Velikost" @@ -11523,25 +11927,118 @@ msgstr "Uživatelské preference" msgid "Job retention" msgstr "Zachování pracovních míst" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Práce" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Vytvořil" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Plánování" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "každá %(interval)s minut" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Změna" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Rozdíl" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Předchozí" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Další" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Vytvořený objekt" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Objekt odstraněn" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Žádné změny" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Data před změnou" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "Upozornění: Porovnání neatomové změny s předchozím záznamem změny" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Údaje po změně" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Zobrazit vše %(count)s Mění" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Změnit uchovávání protokolu" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "dní" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Neurčitý" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Není nainstalován" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Přehled" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Nainstalovat" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Podrobnosti o pluginu" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Souhrn" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Licence" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Historie verzí" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Pokyny k místní instalaci" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11553,8 +12050,8 @@ msgstr "Fronty na pozadí" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11613,7 +12110,7 @@ msgid "Queued Jobs" msgstr "Úlohy ve frontě" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11673,39 +12170,43 @@ msgstr "Export" msgid "System Status" msgstr "Stav systému" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "Vydání NetBox" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Verze Django" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "PostgreSQL verze" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Název databáze" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Velikost databáze" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Nedostupné" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "Pracovníci RQ" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "výchozí fronta" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Systémový čas" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Aktuální konfigurace" @@ -11802,14 +12303,15 @@ msgstr "Není v racku" msgid "GPS Coordinates" msgstr "GPS souřadnice" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Zmapujte" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Mapa" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Značka majetku" @@ -11829,19 +12331,19 @@ msgstr "Řízení" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT pro" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "THE NIGHT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Využití energie" @@ -11869,7 +12371,7 @@ msgid "Leg" msgstr "větev" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Přidat službu" @@ -12130,6 +12632,22 @@ msgstr "Průhledná" msgid "Clear All" msgstr "Vymazat vše" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Hloubka montáže" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Startovací jednotka" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Sestupné jednotky" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Výška stojanu" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Přidat podřízené rozhraní" @@ -12192,8 +12710,8 @@ msgstr "Šířka kanálu" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12283,49 +12801,33 @@ msgstr "Maximální losování" msgid "Allocated Draw" msgstr "Přidělené losování" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Využití prostoru" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "sestupném" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "vzestupně" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Startovací jednotka" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Hloubka montáže" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Hmotnost stojanu" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Maximální hmotnost" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Celková hmotnost" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Obrázky a štítky" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Pouze obrázky" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Pouze štítky" @@ -12338,6 +12840,10 @@ msgstr "Přidat rezervaci" msgid "View List" msgstr "Zobrazit seznam" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Vyberte zobrazení stojanu" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Seřadit podle" @@ -12391,10 +12897,6 @@ msgstr "Čas webu" msgid "Physical Address" msgstr "Fyzická adresa" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Mapa" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Doručovací adresa" @@ -12435,7 +12937,7 @@ msgstr "Přidat nového člena" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Akce" @@ -12604,46 +13106,42 @@ msgid "Group Name" msgstr "Název skupiny" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Musí být jedinečný" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Klonovatelný" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Výchozí hodnota" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Hledat Hmotnost" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Filtrování logiky" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Hmotnost displeje" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Uživatelské rozhraní viditelné" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Upravitelné uživatelské rozhraní" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Ověřovací pravidla" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Minimální hodnota" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Maximální hodnota" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Regulární výraz" @@ -12657,11 +13155,11 @@ msgstr "Třída tlačítek" msgid "Assigned Models" msgstr "Přiřazené modely" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Text odkazu" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "URL odkazu" @@ -12686,6 +13184,14 @@ msgstr "" "Tato změna se týká pouze váš řídicí panel, a nebude mít vliv na " "ostatní uživatele." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "konfigurace widgetu" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Zavřít widget" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Přidání widgetu" @@ -12718,13 +13224,9 @@ msgstr "Při načítání kanálu RSS došlo k problému" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Začátek práce" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Konec úlohy" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Podmínky" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12766,20 +13268,15 @@ msgstr "Výsledky čekají na vyřízení" msgid "Journal Entry" msgstr "Zápis do deníku" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Změnit uchovávání protokolu" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "dní" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Skupina oznámení" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Neurčitý" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Žádné přiřazení" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12793,52 +13290,6 @@ msgstr "Zdrojové kontexty" msgid "New Journal Entry" msgstr "Nová položka deníku" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Změna" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Rozdíl" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Předchozí" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Další" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Vytvořený objekt" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Objekt odstraněn" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Žádné změny" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Data před změnou" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "Upozornění: Porovnání neatomové změny s předchozím záznamem změny" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Údaje po změně" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Zobrazit vše %(count)s Mění" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Zpráva" @@ -12849,7 +13300,7 @@ msgstr "Nemáte oprávnění spouštět skripty" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Spustit skript" @@ -12862,27 +13313,27 @@ msgstr "Chyba při načítání skriptu" msgid "Script no longer exists in the source file." msgstr "Skript již ve zdrojovém souboru neexistuje." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Poslední běh" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Skript již není přítomen ve zdrojovém souboru" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Nikdy" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Spustit znovu" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Nenalezeny žádné skripty" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -12897,6 +13348,14 @@ msgstr "" msgid "Results" msgstr "Výsledky" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Prahová hodnota protokolu" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Vše" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Označené položky" @@ -12929,11 +13388,11 @@ msgstr "Typ obsahu HTTP" msgid "SSL Verification" msgstr "Ověření SSL" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Další záhlaví" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Šablona těla" @@ -13009,6 +13468,10 @@ msgstr "Možnosti pole" msgid "Accessor" msgstr "Přídavný" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "volby" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Hodnota importu" @@ -13174,6 +13637,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "V důsledku této akce budou odstraněny následující objekty." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "před" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Žádná nepřečtená oznámení" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Všechna oznámení" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Vybrat" @@ -13241,15 +13716,23 @@ msgstr "Rychlé vyhledávání" msgid "Saved filter" msgstr "Uložený filtr" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Jasné objednávání" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Centrum nápovědy" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Správce Django" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Odhlásit se" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Přihlásit se" @@ -13297,10 +13780,6 @@ msgstr "Hromadné vytváření" msgid "Create Group" msgstr "Vytvořit skupinu" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Přiřadit skupinu" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "Virtuální IP" @@ -13434,10 +13913,6 @@ msgstr "Přidání předpony" msgid "Add VLAN" msgstr "Přidat VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "Povolené videa" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Rozlišovač tras" @@ -13446,20 +13921,16 @@ msgstr "Rozlišovač tras" msgid "Unique IP Space" msgstr "Unikátní IP prostor" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "NetBox logo" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Chyby" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Přihlásit se" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Nebo" @@ -13536,11 +14007,6 @@ msgstr "Název" msgid "Phone" msgstr "Telefon" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Úkoly" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13580,7 +14046,7 @@ msgstr "Přiřazená oprávnění" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Povolení" @@ -13602,23 +14068,21 @@ msgid "Allocated Resources" msgstr "Přidělené zdroje" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Virtuální procesory" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Paměť" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Místo na disku" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13659,7 +14123,7 @@ msgid "Cluster Group" msgstr "Skupina klastru" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Typ clusteru" @@ -13668,13 +14132,13 @@ msgstr "Typ clusteru" msgid "Virtual Disk" msgstr "Virtuální disk" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Zdroje" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Přidat virtuální disk" @@ -13856,13 +14320,12 @@ msgstr "Přidat skupinu bezdrátové sítě LAN" msgid "Link Properties" msgstr "Vlastnosti odkazu" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Terciární" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Neaktivní" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Vzdálenost" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14027,13 +14490,13 @@ msgstr "Kontakt Odkaz" msgid "Contact Description" msgstr "Kontakt Popis" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Povolení (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Skupina (název)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Skupina oznámení (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14055,27 +14518,27 @@ msgstr "Stav superuživatele" msgid "If no key is provided, one will be generated automatically." msgstr "Pokud není zadán žádný klíč, bude vygenerován automaticky." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Je personál" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Je Superuser" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Může zobrazit" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Může přidat" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Může se změnit" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Může smazat" @@ -14168,45 +14631,45 @@ msgstr "povolení" msgid "permissions" msgstr "oprávnění" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "uživatelské preference" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Klíč '{path}'je listový uzel; nelze přiřadit nové klíče" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "Klíč '{path}'je slovník; nelze přiřadit jinou hodnotu než slovník" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "vyprší" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "naposledy použitý" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "klíč" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "zapisování povoleno" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "Povolit vytváření, aktualizace/odstranění operací pomocí tohoto klíče" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "povolené adresy IP" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14214,11 +14677,11 @@ msgstr "" "Povolené sítě IPv4/IPv6, ze kterých lze token použít. Ponechte prázdné bez " "omezení. Příklad: „10.1.1.0/24, 192.168.10.16/32, 2001: DB 8:1: :/64“" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "žeton" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "žetony" @@ -14226,18 +14689,10 @@ msgstr "žetony" msgid "group" msgstr "skupina" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "skupin" - #: netbox/users/models/users.py:92 msgid "user" msgstr "uživatel" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "uživatelé" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Uživatel s tímto uživatelským jménem již existuje." @@ -14373,7 +14828,7 @@ msgstr "" "Neplatná data YAML. Údaje musí být ve formě více dokumentů nebo jednoho " "dokumentu obsahujícího seznam slovníků." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14382,6 +14837,22 @@ msgstr "" "Neplatný seznam ({value}). Musí být číselné a rozsahy musí být ve vzestupném" " pořadí." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Určete jeden nebo více číselných rozsahů oddělených čárkami. Příklad: " +"1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Neplatné rozsahy ({value}). Musí to být rozsah celých čísel ve vzestupném " +"pořadí." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14544,6 +15015,26 @@ msgid "Missing required value for static query param: '{static_params}'" msgstr "" "Chybí požadovaná hodnota pro parametr statického dotazu: '{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Heslo musí obsahovat alespoň jednu číslici." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Heslo musí obsahovat alespoň jedno velké písmeno." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Heslo musí obsahovat alespoň jedno malé písmeno." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Vaše heslo musí obsahovat alespoň jednu číslici, jedno velké písmeno a jedno" +" malé písmeno." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14600,6 +15091,14 @@ msgstr "Přidat šablonu exportu" msgid "Import" msgstr "Importovat" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Odhlásit" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Přihlásit" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Kopírovat do schránky" @@ -14640,15 +15139,11 @@ msgstr "Hledat NetBox" msgid "Open selector" msgstr "Otevřít selektor" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Žádné přiřazení" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Napsat" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Test musí definovat csv_update_data." @@ -14657,18 +15152,18 @@ msgstr "Test musí definovat csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} Není platným regulárním výrazem." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" "{self.__class__.__name__} musí implementovat get_required_permissions ()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} musí implementovat get_required_permissions ()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14691,7 +15186,7 @@ msgid "Cluster type (ID)" msgstr "Typ clusteru (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Klastr (ID)" @@ -14709,7 +15204,7 @@ msgid "Disk (GB)" msgstr "Disk (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Velikost (GB)" @@ -14729,6 +15224,10 @@ msgstr "Přiřazený cluster" msgid "Assigned device within cluster" msgstr "Přiřazené zařízení v rámci clusteru" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Sériové číslo" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14752,6 +15251,7 @@ msgid "Disk size is managed via the attachment of virtual disks." msgstr "Velikost disku je spravována připojením virtuálních disků." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Disk" @@ -14793,43 +15293,43 @@ msgid "memory (MB)" msgstr "Paměť (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "disk (GB)" +msgid "disk (MB)" +msgstr "disk (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Název virtuálního počítače musí být jedinečný pro každý cluster." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "virtuální stroj" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "virtuální stroje" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "Virtuální počítač musí být přiřazen k webu a/nebo clusteru." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "Vybraný cluster ({cluster}) není přiřazen k tomuto webu ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "Při přiřazování hostitelského zařízení je nutné zadat cluster." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "" "Vybrané zařízení ({device}) není přiřazen k tomuto clusteru ({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -14838,17 +15338,17 @@ msgstr "" "Zadaná velikost disku ({size}) musí odpovídat souhrnné velikosti přiřazených" " virtuálních disků ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "Musí to být IPV{family} adresa. ({ip} je IPV{version} adresa.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "Zadaná adresa IP ({ip}) není přiřazen k tomuto virtuálnímu počítači." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -14857,7 +15357,7 @@ msgstr "" "Vybrané nadřazené rozhraní ({parent}) patří k jinému virtuálnímu počítači " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -14866,7 +15366,7 @@ msgstr "" "Vybrané rozhraní můstku ({bridge}) patří k jinému virtuálnímu počítači " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -14875,24 +15375,24 @@ msgstr "" "Neznačená VLAN ({untagged_vlan}) musí patřit ke stejnému webu jako nadřazený" " virtuální stroj rozhraní, nebo musí být globální." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "velikost (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "velikost (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "virtuální disk" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "virtuální disky" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Přidal {count} zařízení do clusteru {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Odstraněno {count} zařízení z clusteru {cluster}" @@ -15006,32 +15506,32 @@ msgid "Outside IP (ID)" msgstr "Vnější IP (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "Zásady IKE (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "Zásady IKE (název)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "Zásady IPsec (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "Zásada IPsec (název)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (slimák)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "Rozhraní virtuálního počítače (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (název)" @@ -15204,7 +15704,7 @@ msgstr "verze" msgid "proposals" msgstr "návrhy" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "předsdílený klíč" @@ -15386,17 +15886,24 @@ msgstr "Podnikové WPA" msgid "Authentication cipher" msgstr "Ověřovací šifra" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Jednotka vzdálenosti" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "Přemostěná VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Rozhraní A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Rozhraní B" @@ -15404,39 +15911,51 @@ msgstr "Rozhraní B" msgid "Side B" msgstr "Strana B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "ověřovací šifra" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "skupina bezdrátových sítí LAN" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "skupiny bezdrátových sítí LAN" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "bezdrátová síť LAN" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "rozhraní A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "rozhraní B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "vzdálenost" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "jednotka vzdálenosti" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "bezdrátové spojení" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "bezdrátové spoje" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "Při nastavování bezdrátové vzdálenosti je nutné zadat jednotku" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} není bezdrátové rozhraní." diff --git a/netbox/translations/da/LC_MESSAGES/django.mo b/netbox/translations/da/LC_MESSAGES/django.mo index e20e8c28a48..3164f50af68 100644 Binary files a/netbox/translations/da/LC_MESSAGES/django.mo and b/netbox/translations/da/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/da/LC_MESSAGES/django.po b/netbox/translations/da/LC_MESSAGES/django.po index e61feef6438..12bd7ff9879 100644 --- a/netbox/translations/da/LC_MESSAGES/django.po +++ b/netbox/translations/da/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Danish (https://app.transifex.com/netbox-community/teams/178115/da/)\n" @@ -30,16 +30,17 @@ msgstr "" msgid "Key" msgstr "Nøgle" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Skriv aktiveret" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -51,11 +52,11 @@ msgstr "Oprettet" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Udløber" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Sidst brugt" @@ -65,45 +66,45 @@ msgstr "Sidst brugt" msgid "Allowed IPs" msgstr "Tilladte IP'er" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Logget ind som {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Du er logget ud." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Dine præferencer er blevet opdateret." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "LDAP-godkendte brugeroplysninger kan ikke ændres i NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Din adgangskode er blevet ændret." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Planlagt" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Opretter" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -112,9 +113,9 @@ msgstr "Opretter" msgid "Active" msgstr "Aktiv" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Offline" @@ -127,98 +128,116 @@ msgstr "Nedlægger" msgid "Decommissioned" msgstr "Nedlagt" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Primær" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Sekundær" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Tertiær" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inaktiv" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Område (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Region (slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Områdegruppe (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Områdegruppe (slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -230,172 +249,197 @@ msgstr "Områdegruppe (slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Område" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Område (slug)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Leverandør (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Leverandør (slug)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Leverandørkonto (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Leverandørkonto (konto)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Leverandørnetværk (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Kredsløbstype (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Kredsløbstype (slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Område (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Afslutning A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Søg" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Kredsløb" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Leverandørnetværk (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Kredsløb (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Kredsløb (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Kredsløbsgruppe (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Kredsløbsgruppe (slug)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN'er" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -408,16 +452,17 @@ msgstr "ASN'er" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -427,8 +472,9 @@ msgstr "ASN'er" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -481,26 +527,28 @@ msgstr "ASN'er" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Beskrivelse" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -512,22 +560,22 @@ msgstr "Beskrivelse" msgid "Provider" msgstr "Leverandør" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Tjeneste-id" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -538,33 +586,33 @@ msgstr "Tjeneste-id" msgid "Color" msgstr "Farve" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -577,9 +625,9 @@ msgstr "Farve" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -595,52 +643,52 @@ msgstr "Farve" msgid "Type" msgstr "Type" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Leverandørkonto" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -649,7 +697,7 @@ msgstr "Leverandørkonto" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -657,7 +705,7 @@ msgstr "Leverandørkonto" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -667,45 +715,49 @@ msgstr "Leverandørkonto" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Status" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -717,7 +769,7 @@ msgstr "Status" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -740,36 +792,37 @@ msgstr "Status" msgid "Tenant" msgstr "Lejer" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Installationsdato" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Opsigelsesdato" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Forpligtelseshastighed (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Serviceparametre" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -779,37 +832,37 @@ msgstr "Serviceparametre" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Forpagtning" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Leverandørnetværk" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Porthastighed (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Opstrøms hastighed (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Marker tilsluttet" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -817,46 +870,60 @@ msgstr "Marker tilsluttet" msgid "Circuit Termination" msgstr "Kredsløbsafslutning" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Oplysninger om opsigelse" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Prioritet" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Tildelt leverandør" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Tildelt leverandørkonto" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Type kredsløb" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Driftsstatus" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -864,7 +931,7 @@ msgstr "Driftsstatus" msgid "Assigned tenant" msgstr "Tildelt lejer" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -872,44 +939,44 @@ msgstr "Tildelt lejer" msgid "Termination" msgstr "Opsigelse" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Leverandørnetværk" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -918,13 +985,13 @@ msgstr "Leverandørnetværk" msgid "Location" msgstr "Beliggenhed" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -933,22 +1000,22 @@ msgstr "Beliggenhed" msgid "Contacts" msgstr "Kontakter" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -961,17 +1028,17 @@ msgstr "Kontakter" msgid "Region" msgstr "Regionen" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -979,180 +1046,263 @@ msgstr "Regionen" msgid "Site group" msgstr "Områdegruppe" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Attributter" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Konto" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Termside" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Opgave" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Gruppe" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Kredsløbsgruppe" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "farve" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "kredsløbstype" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "kredsløbstyper" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "kredsløbs-ID" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "Unikt kredsløbs-ID" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "status" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "installeret" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "afsluttes" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "forpligtelseshastighed (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Forpligtet sats" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "kredsløb" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "kredsløb" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "kredsløbsgruppe" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "kredsløbsgrupper" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "prioritet" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Kredsløbsgruppetildeling" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Kredsløbsgruppeopgaver" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "afslutning" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "porthastighed (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Fysisk kredsløbshastighed" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "opstrømshastighed (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Opstrømshastighed, hvis forskellig fra porthastighed" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "krydsforbindelses-id" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID for den lokale krydsforbindelse" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "patchpanel/port (er)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "Patchpanelets ID og portnummer" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "beskrivelse" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "kredsløbsafslutning" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "kredsløbsafslutninger" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "En kredsløbsafslutning skal tilsluttes enten et område eller et " "leverandørnetværk." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1161,33 +1311,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "navngive" @@ -1196,11 +1347,12 @@ msgid "Full name of the provider" msgstr "Leverandørens fulde navn" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "slug" @@ -1236,40 +1388,45 @@ msgstr "leverandørnetværk" msgid "provider networks" msgstr "leverandørnetværk" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1284,7 +1441,7 @@ msgstr "leverandørnetværk" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1298,8 +1455,9 @@ msgstr "leverandørnetværk" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1339,9 +1497,9 @@ msgstr "leverandørnetværk" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1351,56 +1509,57 @@ msgstr "leverandørnetværk" msgid "Name" msgstr "Navn" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Kredsløb" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Kredsløbs ID" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Side A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Side Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Forpligtelsesrate" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1409,6 +1568,12 @@ msgstr "Forpligtelsesrate" msgid "Comments" msgstr "Bemærkninger" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Opgaver" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Konti" @@ -1431,7 +1596,7 @@ msgstr "Der er ikke defineret nogen afslutninger for kredsløb {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Udskiftede afslutninger til kredsløb {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "Denne bruger har ikke tilladelse til at synkronisere denne datakilde." @@ -1449,21 +1614,19 @@ msgid "Syncing" msgstr "Synkroniserer" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Afsluttet" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Mislykkedes" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1475,30 +1638,39 @@ msgstr "Manuskripter" msgid "Reports" msgstr "Rapporter" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "Afventer" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Planlagt" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Løb" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Fejl" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Opdateret" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Slettet" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Færdig" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Startet" @@ -1515,11 +1687,13 @@ msgstr "Stoppet" msgid "Cancelled" msgstr "Annulleret" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Lokalt" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1529,8 +1703,8 @@ msgstr "Brugernavn" msgid "Only used for cloning with HTTP(S)" msgstr "Bruges kun til kloning med HTTP(S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Adgangskode" @@ -1552,24 +1726,63 @@ msgstr "AWS-adgangsnøgle-id" msgid "AWS secret access key" msgstr "AWS hemmelig adgangsnøgle" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Objekt oprettet" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Objekt opdateret" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Objekt slettet" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Jobbet påbegyndt" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Jobbet afsluttet" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Jobbet mislykkedes" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Jobfejl" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Datakilde (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Datakilde (navn)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Bruger (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Brugernavn" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1577,14 +1790,14 @@ msgstr "Datakilde (navn)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Aktiveret" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1597,11 +1810,11 @@ msgstr "Parametre" msgid "Ignore rules" msgstr "Ignorer regler" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1611,76 +1824,99 @@ msgstr "Ignorer regler" msgid "Data Source" msgstr "Datakilde" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Fil" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Datakilde" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Skabelse" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Objekttype" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Oprettet efter" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Oprettet før" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Planlagt efter" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Planlagt før" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Startet efter" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Startet før" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Færdiggjort efter" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Færdiggjort før" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Bruger" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Tid" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Efter" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Før" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Handling" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1709,19 +1945,19 @@ msgstr "Skal uploade en fil eller vælge en datafil, der skal synkroniseres" msgid "Rack Elevations" msgstr "Rackhøjder" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Strøm" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1738,7 +1974,9 @@ msgstr "Bannere" msgid "Pagination" msgstr "Paginering" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Validering" @@ -1748,7 +1986,7 @@ msgstr "Validering" msgid "User Preferences" msgstr "Brugerpræferencer" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1771,10 +2009,48 @@ msgstr "Nuværende værdi: {value}" msgid " (default)" msgstr " (standard)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "tid" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "brugernavn" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "forespørgsels-id" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "handling" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "data forud for ændring" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "data efter ændring" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "objektændring" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "objektændringer" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "Ændringslogføring understøttes ikke for denne objekttype ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "oprettet" @@ -1807,14 +2083,14 @@ msgstr "Nuværende konfiguration" msgid "Config revision #{id}" msgstr "Konfigurationsrevision #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1822,62 +2098,63 @@ msgstr "Konfigurationsrevision #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "type" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "aktiveret" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ignorere regler" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Mønstre (en pr. linje), der matcher filer, der skal ignoreres ved " "synkronisering" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "parametre" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "sidst synkroniseret" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "datakilde" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "datakilder" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Ukendt backend-type: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "Synkronisering kan ikke startes. Synkronisering er allerede i gang." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1885,48 +2162,48 @@ msgstr "" "Der opstod en fejl ved initialisering af backend. En afhængighed skal " "installeres: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "sidst opdateret" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "sti" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Filsti i forhold til datakildens rod" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "størrelse" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "hash" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "Længden skal være 64 hexadecimale tegn." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "SHA256-hash af fildataene" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "datafil" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "datafiler" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "automatisk synkroniseringsrekord" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "automatisk synkronisering af poster" @@ -1950,58 +2227,93 @@ msgstr "administreret fil" msgid "managed files" msgstr "administrerede filer" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "planlagt" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "interval" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Gentagelsesinterval (i minutter)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "startede" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "afsluttet" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "data" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "fejl" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "job-ID" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "job" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "stillinger" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "Job kan ikke tildeles denne objekttype ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "Ugyldig status for opsigelse af job. Valgmulighederne er: {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"enqueue () kan ikke kaldes med værdier for både schedule_at og instant." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Sletning forhindres af en beskyttelsesregel: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Fulde navn" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objekt" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "Anmodnings-ID" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Er aktiv" @@ -2016,51 +2328,63 @@ msgid "Last updated" msgstr "Sidst opdateret" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Objekt" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Intervaller" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Udgave" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Pakke" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Senest opdateret" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Minimum NetBox-version" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Maksimal NetBox-version" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Ingen plugin-data fundet" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Forfatter" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Forfatterens e-mail" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Installeret" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Certificeret" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Udgivet" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Ingen plugins fundet" +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Installeret version" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Seneste version" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2074,7 +2398,7 @@ msgstr "Arbejdstagere" msgid "Host" msgstr "Værten" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Port" @@ -2122,62 +2446,72 @@ msgstr "PID" msgid "No workers found" msgstr "Ingen arbejdere fundet" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Jobnummer i kø{id} at synkronisere {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Gendannet konfigurationsrevision #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Job {job_id} ikke fundet" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Job {id} er blevet slettet." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Fejl ved sletning af job {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Job {id} ikke fundet." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Job {id} er blevet sat i kø igen." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Job {id} er blevet sat i kø." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Job {id} er blevet stoppet." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Det lykkedes ikke at stoppe jobbet {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Plugin-kataloget kunne ikke indlæses" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Plugin {name} ikke fundet" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Position (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "Anlægs-id" @@ -2185,8 +2519,8 @@ msgstr "Anlægs-id" msgid "Staging" msgstr "Iscenesættelse" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Nedlæggelse" @@ -2245,27 +2579,39 @@ msgstr "Tilgængelig" msgid "Deprecated" msgstr "Forældet" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Millimeter" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Tommer" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Foran til bag" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Bagsiden til forsiden" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2281,278 +2627,273 @@ msgstr "Tommer" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Forælder" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Barn" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Front" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Bageste" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Iscenesat" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Opgørelse" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Foran til bag" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Bagsiden til forsiden" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Venstre mod højre" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Højre til venstre" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Side til bagside" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Passiv" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Blandet" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (Ikke-låsende)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (Låsning)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Californiens stil" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "International/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Proprietær" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Andet" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/International" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Fysisk" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Virtuel" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Trådløs" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Virtuelle grænseflader" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Bro" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Link Aggregation Group (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (fast)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modulopbygget)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (bagplan)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Cellulær" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Seriel" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Koaksial" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Stabling" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Halvdelen" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Fuld" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Adgang" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Markeret" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Tagget (Alle)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "IEEE-standard" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Passiv 24V (2-par)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Passiv 24V (4-par)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Passiv 48V (2-par)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Passiv 48V (4-par)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Kobber" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Fiberoptisk" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Fibre" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Tilsluttet" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Kilometer" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Meter" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Centimeter" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Miles" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Fødder" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Kilogram" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Gram" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "pund" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Ounce" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Primær" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Redundant" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Enkeltfase" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "trefaset" @@ -2566,330 +2907,335 @@ msgstr "Ugyldigt MAC-adresseformat: {value}" msgid "Invalid WWN format: {value}" msgstr "Ugyldigt WWN-format: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Overordnet region (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Forældreregion (slug)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Overordnet områdegruppe (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Overordnet områdegruppe (slug)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Gruppe (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Gruppe (slug)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "SOM (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Overordnet placering (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Forældreplacering (slug)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Placering (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Placering (slug)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Producent (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Producent (slug)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Stativtype (snegle)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Racktype (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rolle (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rolle (slug)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Rack (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Bruger (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Bruger (navn)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Producent (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Producent (slug)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Standardplatform (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Standardplatform (slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Har et frontbillede" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Har et bagbillede" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Har konsolporte" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Har konsolserverporte" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Har strømstik" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Har strømudtag" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Har grænseflader" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Har gennemgangsporte" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Har modulpladser" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Har enhedsbugter" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Har lagervarer" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Enhedstype (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Modultype (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Strømstik (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Overordnet beholdningspost (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Konfigurationsskabelon (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Enhedstype (slug)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Overordnet enhed (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Platform (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Platform (slug)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Områdenavn (slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Forældrebugt (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "VM-klynge (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Clustergruppe (slug)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Klyngegruppe (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Enhedsmodel (slug)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Er fuld dybde" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC-adresse" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Har en primær IP" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Har en IP uden for båndet" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Virtuelt kabinet (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Er et virtuelt chassismedlem" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Har virtuel enhedskontekst" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Enhedsmodel" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Grænseflade (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Modultype (model)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" msgstr "Modulplads (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Enhed (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Rack (navn)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Enhed (navn)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Enhedstype (model)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Enhedsrolle (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Enhedsrolle (slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Virtuelt kabinet (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2898,33 +3244,33 @@ msgstr "Virtuelt kabinet (ID)" msgid "Virtual Chassis" msgstr "Virtuelt kabinet" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Modul (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Kabel (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Tildelt VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "Tildelt VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2941,121 +3287,125 @@ msgstr "Tildelt VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RED.)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Virtuelle chassis-grænseflader til enhed" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Virtuelle chassisgrænseflader til enhed (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Slags grænseflade" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Overordnet grænseflade (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Broet grænseflade (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "LAG-grænseflade (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Virtuel enhedskontekst" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Virtuel enhedskontekst (identifikator)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Trådløst LAN" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Trådløs forbindelse" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Forældremodulplads (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Installeret modul (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Installeret enhed (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Installeret enhed (navn)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Master (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Master (navn)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Lejer (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Lejer (snegle)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Uafsluttede" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Strømpanel (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3063,13 +3413,13 @@ msgstr "Strømpanel (ID)" msgid "Tags" msgstr "Mærker" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3083,168 +3433,114 @@ msgstr "" "Alfanumeriske intervaller understøttes. (Skal svare til antallet af navne, " "der oprettes.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Gruppe" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Kontaktens navn" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Kontakt telefon" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "Kontakt E-mail" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Tidszone" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Rolle" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Serienummer" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Aktivemærke" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Producent" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Formfaktor" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Bredde" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Højde (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Faldende enheder" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Udvendig bredde" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Ydre dybde" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Ydre enhed" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Monteringsdybde" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3252,31 +3548,127 @@ msgstr "Monteringsdybde" msgid "Weight" msgstr "Vægt" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Maks. Vægt" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Vægtenhed" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Racktype" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Udvendige mål" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Dimensioner" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Nummerering" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Rolle" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Serienummer" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Aktivemærke" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Luftstrøm" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3286,158 +3678,132 @@ msgstr "Vægtenhed" msgid "Rack" msgstr "Stativ" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Hardware" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Producent" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Standardplatform" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Varenummer" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "U højde" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Ekskluder fra udnyttelse" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Luftstrøm" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Enhedstype" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Modultype" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Chassis" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "VM-rolle" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Konfigurationsskabelon" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Enhedstype" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Enhedsrolle" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Platformen" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3448,7 +3814,7 @@ msgstr "Platformen" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3456,7 +3822,7 @@ msgstr "Platformen" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3464,7 +3830,7 @@ msgstr "Platformen" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3474,23 +3840,23 @@ msgstr "Platformen" msgid "Device" msgstr "Enhed" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Konfiguration" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Modultype" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3499,7 +3865,7 @@ msgstr "Modultype" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3508,141 +3874,142 @@ msgstr "Modultype" msgid "Label" msgstr "Mærke" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Længde" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Længdeenhed" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "domæne" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Strømpanel" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Forsyning" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Spænding" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Strømstyrke" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Maksimal udnyttelse" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Maksimal trækning" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Maksimal forbrug (watt)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Tildelt lodtrækning" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Allokeret forbrug (watt)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Strømstik" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Foderben" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Kun ledelse" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "PoE-tilstand" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE-type" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Trådløs rolle" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Modul" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "FORSINKELSE" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Virtuelle enhedskontekster" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Hastighed" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3656,290 +4023,295 @@ msgstr "Hastighed" msgid "Mode" msgstr "Tilstand" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN-gruppe" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "Umærket VLAN" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Mærkede VLAN'er" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Trådløs LAN-gruppe" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Trådløse LAN" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Adressering" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Betjening" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Relaterede grænseflader" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "802.1Q-skift" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "Interfacetilstand skal specificeres for at tildele VLAN'er" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "En adgangsgrænseflade kan ikke have tildelt taggede VLAN'er." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Navn på overordnet region" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Navn på overordnet områdegruppe" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Tildelt region" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Tildelt gruppe" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "tilgængelige muligheder" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Tildelt område" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Forældreplacering" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Placering ikke fundet." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Navn på tildelt lejer" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Navn på tildelt rolle" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Producenten af denne racktype" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Stativtype" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "Den laveste nummererede position i stativet" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Skinne-til-skinne-bredde (i tommer)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Enhed til udvendige mål" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Enhed til stativvægte" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Navn på tildelt lejer" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Navn på tildelt rolle" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Luftstrømsretning" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Overordnet område" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Stativets placering (hvis nogen)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Enheder" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Kommasepareret liste over individuelle enhedsnumre" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Producenten, der fremstiller denne enhedstype" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Standardplatformen for enheder af denne type (valgfrit)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Enhedsvægt" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Enhed til enhedens vægt" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Modulvægt" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Enhed til modulvægt" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Begræns platformstildelinger til denne producent" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Tildelt rolle" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Producent af enhedstype" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Enhedstypemodel" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Tildelt platform" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Virtuelt kabinet" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Klynge" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Virtualiseringsklynge" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Tildelt placering (hvis nogen)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Tildelt stativ (hvis et sådant findes)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Ansigt" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Monteret stativflade" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Overordnet enhed (til underordnede enheder)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Enhedsplads" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "Enhedsplads, hvor denne enhed er installeret (til børneenheder)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Luftstrømsretning" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Enheden, hvor dette modul er installeret" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Modulplads" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "Modulrummet, hvor dette modul er installeret" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Typen af modul" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Replikerer komponenter" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3947,239 +4319,239 @@ msgstr "" "Udfyld automatisk komponenter, der er knyttet til denne modultype (aktiveret" " som standard)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Vedtage komponenter" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Vedtage allerede eksisterende komponenter" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Porttype" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Porthastighed i bps" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Udtagstype" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Lokalt strømstik, der forsyner dette strømudtag" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Elektrisk fase (til trefasede kredsløb)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Forældregrænseflade" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Brobaseret grænseflade" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Forsinkelse" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Overordnet LAG-grænseflade" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Vdcs" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "VDC-navne adskilt af kommaer, indkapslet med dobbelte anførselstegn. " "Eksempel:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Fysisk medium" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Duplex" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Poe-tilstand" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Poe-type" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "IEEE 802.1Q driftstilstand (til L2-grænseflader)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Tildelt VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Rf-rolle" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Trådløs rolle (AP/station)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} er ikke tildelt enheden {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Bageste port" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Tilsvarende bagport" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Klassificering af fysisk medium" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Installeret enhed" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Børneenhed installeret i denne bugt" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Børneenhed blev ikke fundet." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Overordnet beholdningspost" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Komponenttype" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Komponenttype" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Komponentnavn" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Komponentnavn" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Komponent ikke fundet: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Side A-enhed" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Enhedsnavn" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Side A type" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Afslutningstype" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Side A navn" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Opsigelsesnavn" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Side B-enhed" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Side B type" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Side B navn" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Forbindelsesstatus" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "" "Side {side_upper}: {device} {termination_object} er allerede tilsluttet" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} sideafslutning ikke fundet: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Mester" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Hovedenhed" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Navn på overordnet område" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Hoved strømpanel" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Primær eller redundant" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Forsyningstype (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Enkelt- eller trefaset" @@ -4199,7 +4571,7 @@ msgstr "" "De mærkede VLAN'er ({vlans}) skal tilhøre det samme område som grænsefladens" " overordnede enhed/VM, eller de skal være globale" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4207,17 +4579,26 @@ msgstr "" "Kan ikke installere modul med pladsholderværdier i en modulplads uden " "defineret position." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Kan ikke installere modul med pladsholderværdier i et modullaurbærtræ " +"{level} i træet, men {tokens} pladsholdere givet." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "Kan ikke adoptere {model} {name} da det allerede hører til et modul" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "EN {model} som hedder {name} findes allerede" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4226,7 +4607,7 @@ msgstr "EN {model} som hedder {name} findes allerede" msgid "Power Panel" msgstr "Strømpanel" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4236,15 +4617,15 @@ msgstr "Strømforsyning" msgid "Side" msgstr "Side" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Enhedsstatus" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Overordnet region" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4252,62 +4633,67 @@ msgstr "Overordnet region" msgid "Parent group" msgstr "Forældregruppe" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Faciliteterne" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Stativtype" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Funktion" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Billeder" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Komponenter" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Underenhedsrolle" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Modellen" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Har en OOB IP" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Virtuelt chassismedlem" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Har virtuelle enhedskontekster" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Klyngegruppe" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Kablet" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Besat" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4319,43 +4705,43 @@ msgstr "Besat" msgid "Connection" msgstr "Forbindelse" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Venlig" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Kun Mgmt" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Trådløs kanal" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Kanalfrekvens (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Kanalbredde (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Sendeeffekt (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4365,7 +4751,7 @@ msgstr "Sendeeffekt (dBm)" msgid "Cable" msgstr "Kabel" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Opdaget" @@ -4374,28 +4760,30 @@ msgstr "Opdaget" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Et virtuelt chassiselement findes allerede på plads {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Kontaktoplysninger" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Rackrolle" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Lagerstyring" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Slug" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Udvendige mål" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Vælg en foruddefineret racktype, eller angiv fysiske egenskaber nedenfor." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Dimensioner" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Lagerstyring" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4403,93 +4791,70 @@ msgstr "" "Kommasepareret liste over numeriske enheds-id'er. Et interval kan angives " "ved hjælp af en bindestreg." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Reservation" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Slug" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Chassis" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Enhedsrolle" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "Den lavest nummererede enhed, der er besat af enheden" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" "Placeringen i det virtuelle chassis, som denne enhed identificeres ved" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Prioritet" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "Enhedens prioritet i det virtuelle chassis" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "Udfyld automatisk komponenter, der er knyttet til denne modultype" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "Maksimal længde er 32767 (enhver enhed)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Karakteristika" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Konsolportskabelon" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Konsolserverportskabelon" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Frontportskabelon" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Grænsefladeskabelon" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Skabelon til strømudtag" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Strømstikskabelon" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Bagport skabelon" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4500,7 +4865,7 @@ msgstr "Bagport skabelon" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4509,7 +4874,7 @@ msgstr "Bagport skabelon" msgid "Interface" msgstr "Grænseflade" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4517,14 +4882,14 @@ msgstr "Grænseflade" msgid "Console Port" msgstr "Konsolport" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Konsolserverport" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4535,8 +4900,8 @@ msgstr "Konsolserverport" msgid "Front Port" msgstr "Frontport" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4548,36 +4913,36 @@ msgstr "Frontport" msgid "Rear Port" msgstr "Bageste port" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Strømstik" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Strømudtag" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Komponenttildeling" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "En InventoryItem kan kun tildeles til en enkelt komponent." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "LAG-grænseflade" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Børneenhed" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4585,41 +4950,41 @@ msgstr "" "Underordnede enheder skal først oprettes og tildeles til den overordnede " "enheds område og rack." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Konsolport" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Konsolserverport" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Frontport" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Strømudtag" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Lagergenstand" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Lagervarrolle" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "Primær IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "Primær IPv6" @@ -4679,7 +5044,7 @@ msgstr "" "Antallet af frontporte, der skal oprettes ({frontport_count}) skal matche " "det valgte antal bageste portpositioner ({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4704,7 +5069,7 @@ msgstr "En stilling skal specificeres for det første VC-medlem." #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "etiket" @@ -4833,41 +5198,41 @@ msgstr "" "En komponentskabelon skal være tilknyttet enten en enhedstype eller en " "modultype." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "skabelon til konsolport" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "konsolportskabeloner" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "skabelon til konsolserverport" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "skabeloner til konsolserverportskabeloner" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "maksimal trækning" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "tildelt lodtrækning" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "strømstikskabelon" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "strømstikskabeloner" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -4875,92 +5240,92 @@ msgstr "" "Tildelt lodtrækning kan ikke overstige den maksimale trækning " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "foderben" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Fase (til trefasefoedninger)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "Strømudtag skabelon" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "strømudtagsskabeloner" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "Hovedstrømstik ({power_port}) skal tilhøre samme enhedstype" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "Hovedstrømstik ({power_port}) skal tilhøre samme modultype" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "Kun ledelse" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "brogrænseflade" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "trådløs rolle" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "grænseflade skabelon" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "interface skabeloner" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "En grænseflade kan ikke kobles til sig selv." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Brogrænseflade ({bridge}) skal tilhøre samme enhedstype" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Brogrænseflade ({bridge}) skal tilhøre samme modultype" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "bageste portposition" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "skabelon til frontport" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "frontportskabeloner" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Bageste port ({name}) skal tilhøre samme enhedstype" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4969,47 +5334,47 @@ msgstr "" "Ugyldig bageste portposition ({position}); bageste port {name} har kun " "{count} positioner" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "positioner" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "bagport skabelon" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "bageste portskabeloner" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "position" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Identifikator, der skal refereres til, når installerede komponenter omdøbes" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "modulbugtsskabelon" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "modulbugtsskabeloner" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "skabelon til enhedsplads" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "skabeloner til enhedsplads" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5018,21 +5383,21 @@ msgstr "" "Underenhedsrolle for enhedstypen ({device_type}) skal indstilles til " "„forælder“ for at tillade enhedspladser." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "del-ID" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Producenttildelt artikel-id" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "lagervareskabelon" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "lagervareskabeloner" @@ -5173,27 +5538,27 @@ msgstr "Udfyldt af valgt kanal (hvis indstillet)" msgid "transmit power (dBm)" msgstr "sendeeffekt (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "trådløse LAN" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "umærket VLAN" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "mærkede VLAN'er" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "grænseflade" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "grænseflader" @@ -5208,7 +5573,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type} grænseflader kan ikke markeres som tilsluttet." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "En grænseflade kan ikke være sin egen forælder." @@ -5367,32 +5732,37 @@ msgstr "" "Antallet af positioner kan ikke være mindre end antallet af kortlagte " "frontporte ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "modulplads" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "modulpladser" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "En modulplads kan ikke tilhøre et modul, der er installeret i den." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "enhedsplads" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "enhedsbugter" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "Denne type enhed ({device_type}) understøtter ikke enhedsbugter." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Kan ikke installere en enhed i sig selv." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5400,59 +5770,60 @@ msgstr "" "Kan ikke installere den angivne enhed; enheden er allerede installeret i " "{bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "lagervarerolle" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "lagervareroller" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "serienummer" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "aktivmærke" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Et unikt tag, der bruges til at identificere dette element" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "opdaget" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Dette element blev automatisk opdaget" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "lagerpost" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "lagervarer" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Kan ikke tildele mig selv som forælder." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "Overordnet lagervare tilhører ikke den samme enhed." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "Kan ikke flytte en lagervare med afhængige underordnede" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "Kan ikke tildele lagervare til komponent på en anden enhed" @@ -5465,6 +5836,7 @@ msgid "manufacturers" msgstr "producenter" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "model" @@ -5480,7 +5852,7 @@ msgstr "varenummer" msgid "Discrete part number (optional)" msgstr "Diskret varenummer (valgfrit)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "højde (U)" @@ -5512,7 +5884,8 @@ msgstr "" "Overordnede enheder huser underordnede enheder i enhedspladser. Lad det stå " "tomt, hvis denne enhedstype hverken er forælder eller barn." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "luftstrøm" @@ -5559,151 +5932,151 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Børneenhedstyper skal være 0U." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "modultype" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "modultyper" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Virtuelle maskiner kan tildeles denne rolle" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "enhedsrolle" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "enhedsroller" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "Begræns eventuelt denne platform til enheder fra en bestemt producent" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "platform" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "platforme" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "Funktionen denne enhed tjener" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Chassisserienummer, tildelt af producenten" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Et unikt tag, der bruges til at identificere denne enhed" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "position (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "stativflade" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "Primær IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "Primær IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "IP uden for båndet" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "VC position" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Virtuel chassisposition" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "VC-prioritet" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Virtuelt kabinetthovedvalgsprioritet" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "breddegrad" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "GPS-koordinat i decimalformat (xx.ååååå)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "længde" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Enhedsnavnet skal være entydigt pr. område." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "enhed" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "enheder" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Stativ {rack} hører ikke til område {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Lokation {location} hører ikke til området {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Stativ {rack} hører ikke til placering {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "Kan ikke vælge en rackflade uden at tildele et rack." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "Kan ikke vælge en rackposition uden at tildele et rack." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "Positionen skal være i trin på 0,5 reoler." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "Skal angive rackflade, når du definerer rackposition." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "En 0U-enhedstype ({device_type}) kan ikke tildeles en rackposition." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5711,7 +6084,7 @@ msgstr "" "Underordnede enhedstyper kan ikke tildeles en rackflade. Dette er en " "attribut for den overordnede enhed." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5719,7 +6092,7 @@ msgstr "" "Underordnede enhedstyper kan ikke tildeles en rackposition. Dette er en " "attribut for den overordnede enhed." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5728,22 +6101,22 @@ msgstr "" "U{position} er allerede besat eller ikke har tilstrækkelig plads til at " "rumme denne enhedstype: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} er ikke en IPv4-adresse." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Den angivne IP-adresse ({ip}) er ikke tildelt denne enhed." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} Det er ikke en IPv6-adresse." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5752,26 +6125,26 @@ msgstr "" "Den tildelte platform er begrænset til {platform_manufacturer} enhedstyper, " "men denne enheds type hører til {devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Det tildelte cluster tilhører et andet område ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "En enhed, der er tildelt et virtuelt chassis, skal have sin position " "defineret." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "modul" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "moduler" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5780,21 +6153,21 @@ msgstr "" "Modulet skal installeres i en modulplads, der tilhører den tildelte enhed " "({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "domæne" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "virtuelt chassis" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "Den valgte master ({master}) er ikke tildelt dette virtuelle chassis." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5803,39 +6176,39 @@ msgstr "" "Kan ikke slette virtuelt chassis {self}. Der er medlemsgrænseflader, der " "danner LAG-grænseflader på tværs af chassiserne." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identificere" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Numerisk identifikator, der er unik for den overordnede enhed" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "kommenterer" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "virtuel enhedskontekst" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "virtuelle enhedskontekster" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} er ikke en IPV{family} adresse." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "Primær IP-adresse skal tilhøre en grænseflade på den tildelte enhed." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "vægt" @@ -5911,94 +6284,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "Spænding kan ikke være negativ for vekselstrømsforsyning" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "stativrolle" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "stativroller" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "facilitets-id" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Lokalt tildelt identifikator" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Funktionel rolle" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Et unikt tag, der bruges til at identificere dette rack" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "bredde" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Skinne-til-skinne-bredde" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Højde i reoler" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "startenhed" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Startenhed til stativ" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "faldende enheder" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Enhederne er nummereret fra top til bund" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "ydre bredde" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Udvendig dimension af reol (bredde)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "ydre dybde" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Udvendig dimension af reol (dybde)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "ydre enhed" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "max vægt" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Maksimal belastningskapacitet for stativet" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "monteringsdybde" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6006,28 +6344,75 @@ msgstr "" "Maksimal dybde af en monteret enhed, i millimeter. For stativer med fire " "stolper er dette afstanden mellem for- og bagskinner." -#: netbox/dcim/models/racks.py:221 +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "max vægt" + +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Maksimal belastningskapacitet for stativet" + +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "formfaktor" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "stativtype" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "stativtyper" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "Skal angive en enhed, når der indstilles en ydre bredde/dybde" + +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 +msgid "Must specify a unit when setting a maximum weight" +msgstr "Skal angive en enhed, når der indstilles en maksimal vægt" + +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "stativrolle" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "stativroller" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "facilitets-id" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Lokalt tildelt identifikator" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Funktionel rolle" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Et unikt tag, der bruges til at identificere dette rack" + +#: netbox/dcim/models/racks.py:359 msgid "rack" msgstr "stativ" -#: netbox/dcim/models/racks.py:222 +#: netbox/dcim/models/racks.py:360 msgid "racks" msgstr "stativer" -#: netbox/dcim/models/racks.py:237 +#: netbox/dcim/models/racks.py:375 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "Den tildelte lokation skal tilhøre det overordnede område ({site})." -#: netbox/dcim/models/racks.py:241 -msgid "Must specify a unit when setting an outer width/depth" -msgstr "Skal angive en enhed, når der indstilles en ydre bredde/dybde" - -#: netbox/dcim/models/racks.py:245 -msgid "Must specify a unit when setting a maximum weight" -msgstr "Skal angive en enhed, når der indstilles en maksimal vægt" - -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6036,7 +6421,7 @@ msgstr "" "Rack skal være mindst {min_height}Du er høj til at huse aktuelt installerede" " enheder." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6045,29 +6430,29 @@ msgstr "" "Nummerering af rackenheder skal begynde kl {position} eller mindre til at " "huse aktuelt installerede enheder." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "Lokation skal være fra samme område, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "enkeltdele" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "reservation af rack" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "rackreservationer" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Ugyldig enhed (er) for {height}U-stativ: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Følgende enheder er allerede reserveret: {unit_list}" @@ -6172,11 +6557,11 @@ msgstr "Opsigelse A" msgid "Termination B" msgstr "Opsigelse B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Enhed A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Enhed B" @@ -6211,13 +6596,13 @@ msgid "Reachable" msgstr "Tilgængelig" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Enheder" @@ -6227,17 +6612,17 @@ msgid "VMs" msgstr "VM'er" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Konfigurationsskabelon" @@ -6245,22 +6630,22 @@ msgstr "Konfigurationsskabelon" msgid "Site Group" msgstr "Områdegruppe" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP adresse" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "IPv4-adresse" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "IPv6-adresse" @@ -6297,10 +6682,10 @@ msgstr "Strømstik" msgid "Power outlets" msgstr "Strømudtag" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6310,8 +6695,8 @@ msgstr "Strømudtag" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Grænseflader" @@ -6337,8 +6722,8 @@ msgid "Module Bay" msgstr "Modulbugt" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6347,30 +6732,30 @@ msgstr "Modulbugt" msgid "Inventory Items" msgstr "Lagervarer" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Kabelfarve" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Link jævnaldrende" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Marker tilsluttet" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Maksimal trækkraft (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Tildelt lodtrækning (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6379,12 +6764,12 @@ msgstr "Tildelt lodtrækning (W)" msgid "IP Addresses" msgstr "IP-adresser" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP Grupper" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6395,52 +6780,52 @@ msgstr "FHRP Grupper" msgid "Tunnel" msgstr "Tunnel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Kun ledelse" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC'er" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Installeret modul" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Seriel modul" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Modulaktivmærke" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Modulstatus" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Komponent" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Varer" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Enhedstyper" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Modultyper" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Platforme" @@ -6459,12 +6844,13 @@ msgid "U Height" msgstr "U Højde" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "forekomster" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6473,9 +6859,9 @@ msgstr "forekomster" msgid "Console Ports" msgstr "Konsolporte" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6484,9 +6870,9 @@ msgstr "Konsolporte" msgid "Console Server Ports" msgstr "Konsolserverporte" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6495,9 +6881,9 @@ msgstr "Konsolserverporte" msgid "Power Ports" msgstr "Strømstik" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6506,9 +6892,9 @@ msgstr "Strømstik" msgid "Power Outlets" msgstr "Strømudtag" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6516,9 +6902,9 @@ msgstr "Strømudtag" msgid "Front Ports" msgstr "Frontporte" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6527,23 +6913,26 @@ msgstr "Frontporte" msgid "Rear Ports" msgstr "Bageste porte" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Enhedsbugter" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Modulbugter" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Strømforsyninger" @@ -6556,41 +6945,45 @@ msgstr "Maksimal udnyttelse" msgid "Available Power (VA)" msgstr "Tilgængelig effekt (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Stativer" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Højde" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Rummet" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Udvendig bredde" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Ydre dybde" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Maks. Vægt" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Rummet" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Områder" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "Testcase skal indstille peer_termination_type" @@ -6599,77 +6992,77 @@ msgstr "Testcase skal indstille peer_termination_type" msgid "Disconnected {count} {type}" msgstr "Afbrudt {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Reservationer" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Enheder uden rack" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Konfigurationskontekst" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Gengivelseskonfiguration" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Der opstod en fejl under gengivelse af skabelonen: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Virtuelle maskiner" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Installeret enhed {device} i bugten {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Fjernet enhed {device} fra bugten {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Børn" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Tilføjet medlem {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Kan ikke fjerne masterenheden {device} fra det virtuelle chassis." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Fjernet {device} fra virtuelt chassis {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Ukendt relateret objekt (er): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "Ændring af typen af brugerdefinerede felter understøttes ikke." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "Planlægning er ikke aktiveret for dette script." @@ -6718,7 +7111,7 @@ msgid "Multiple objects" msgstr "Flere objekter" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Handicappede" @@ -6753,7 +7146,7 @@ msgstr "Nej" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Forbindelse" @@ -6773,65 +7166,56 @@ msgstr "Alfabetisk (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Alfabetisk (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Opdateret" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Slettet" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Info" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Succes" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Advarsel" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Fare" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Fejlfinding" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Standard" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Fejl" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Hver time" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 timer" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Dagligt" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Ugentlig" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 dage" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6839,18 +7223,16 @@ msgstr "30 dage" msgid "Create" msgstr "Opret" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Opdatere" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6861,81 +7243,85 @@ msgstr "Opdatere" msgid "Delete" msgstr "Slet" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Blå" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "indigo" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Lilla" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Lyserød" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Rød" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "orange" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Gul" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Grøn" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "krikand" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Cyan" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Grå" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Sort" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Hvid" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Manuskript" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Meddelelse" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7007,59 +7393,59 @@ msgstr "Filtre, der skal anvendes, når antallet af objekter tælles" msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "Ugyldigt format. Objektfiltre skal sendes som en ordbog." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Objektliste" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Vis en vilkårlig liste over objekter." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Standardantallet af objekter, der skal vises" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "Ugyldigt format. URL-parametre skal sendes som en ordbog." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS-feed" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Indlejr et RSS-feed fra en ekstern hjemmeside." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "Foderwebadresse" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Det maksimale antal objekter, der skal vises" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Hvor længe det cachelagrede indhold skal gemmes (i sekunder)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Bogmærker" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Vis dine personlige bogmærker" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Ukendt handlingstype for en hændelsesregel: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Kan ikke importere hændelsespipeline {name} fejl: {error}" @@ -7068,210 +7454,219 @@ msgstr "Kan ikke importere hændelsespipeline {name} fejl: {error}" msgid "Script module (ID)" msgstr "Script-modul (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Datafil (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Gruppe (navn)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Klyngetype" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Clustertype (slug)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Lejergruppe" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Lejergruppe (slug)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Mærke" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Tag (slug)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Har lokale konfigurationskontekstdata" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Brugernavn" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Gruppenavn" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Påkrævet" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Skal være unik" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "UI synlig" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "Brugergrænseflade redigerbar" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Kan klones" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Minimumsværdi" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Maksimal værdi" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Validering regex" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Adfærd" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Nyt vindue" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Knapklasse" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "MIME-type" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Filudvidelse" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Som vedhæftet fil" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Delt" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "HTTP-metode" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "Nyttelast-URL" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "SSL verifikation" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Hemmelighed" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "CA-filsti" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Ved oprettelse" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "Ved opdatering" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Ved sletning" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "Ved jobstart" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Begivenhedstyper" -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "Ved afslutningen af jobbet" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Er aktiv" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Objekttyper" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "En eller flere tildelte objekttyper" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Feltdatatype (f.eks. tekst, heltal osv.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Objekttype" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Objekttype (for objekt- eller flerobjektfelter)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Valgsæt" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Valgsæt (til markeringsfelter)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Om det brugerdefinerede felt vises i brugergrænsefladen" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Om det brugerdefinerede felt kan redigeres i brugergrænsefladen" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "Basissættet af foruddefinerede valg, der skal bruges (hvis nogen)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7279,205 +7674,200 @@ msgstr "" "Citeret streng med kommaseparerede feltvalg med valgfri etiketter adskilt af" " kolon: „Valg1:Første valg, valg2:andet valg“" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "knapklasse" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "Klassen for det første link i en gruppe vil blive brugt til rullemenuen" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Hændelsestype (r), der udløser denne regel" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Handlingsobjekt" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Webhook-navn eller script som stiplet sti module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} ikke fundet" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Manuskript {name} ikke fundet" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Tildelt objekttype" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "Klassificering af indrejse" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Brugere" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "Brugernavne adskilt af kommaer, indkapslet med dobbelte anførselstegn" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Grupper" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Gruppenavne adskilt af kommaer, indkapslet med dobbelte anførselstegn" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Relateret objekttype" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Felttype" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Valg" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Data" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Datafiler" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Indholdstyper" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "HTTP-indholdstype" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Begivenheder" - -#: netbox/extras/forms/filtersets.py:265 -msgid "Action type" -msgstr "Handlingstype" - -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Objektskabelser" - #: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Objektopdateringer" +msgid "Event type" +msgstr "Begivenhedstype" -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Objektsletninger" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Jobstart" +#: netbox/extras/forms/filtersets.py:291 +msgid "Action type" +msgstr "Handlingstype" #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Opsigelser af job" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Tagget objekttype" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Tilladt objekttype" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Regioner" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Områdegrupper" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Steder" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Enhedstyper" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Roller" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Klyngetyper" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Klyngegrupper" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Klynger" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Lejergrupper" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Efter" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Før" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Tid" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Type (r) af objekt, der har dette brugerdefinerede felt" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Handling" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Standardværdi" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "Type af det relaterede objekt (kun for objekt-/flerobjektfelter)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Relateret objektfilter" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Angiv forespørgselsparametre som et JSON-objekt." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Brugerdefineret felt" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Adfærd" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Værdier" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7485,14 +7875,18 @@ msgstr "" "Den type data, der er gemt i dette felt. For objekt/flerobjektfelter skal du" " vælge den relaterede objekttype nedenfor." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." msgstr "" "Dette vises som hjælpetekst til formularfeltet. Markdown understøttes." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Relateret objekt" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7500,16 +7894,16 @@ msgstr "" "Indtast et valg pr. linje. Der kan angives en valgfri etiket for hvert valg " "ved at tilføje det med et kolon. Eksempel:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Brugerdefineret link" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Skabeloner" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7518,62 +7912,66 @@ msgstr "" "Jinja2 skabelonkode til linkteksten. Henvis objektet som {example}. Links, " "der gengives som tom tekst, vises ikke." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "Jinja2 skabelonkode til linket URL. Henvis objektet som {example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Skabelonkode" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Eksport skabelon" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Gengivelse" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "Skabelonindhold udfyldes fra den fjerntliggende kilde, der er valgt " "nedenfor." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Skal angive enten lokalt indhold eller en datafil" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Gemt filter" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "En meddelelsesgruppe angiver mindst én bruger eller gruppe." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "HTTP-anmodning" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Valg af handling" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Indtast betingelser i JSON formatere." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7581,55 +7979,33 @@ msgstr "" "Indtast parametre, der skal overføres til handlingen i JSON formatere." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Begivenhedsregel" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Betingelser" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Kreationer" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Opdateringer" - -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Sletninger" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Udløsere" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Jobudførelse" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Meddelelsesgruppe" -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Lejere" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Opgave" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "Data udfyldes fra den fjerntliggende kilde, der er valgt nedenfor." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Skal angive enten lokale data eller en datafil" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Indhold" @@ -7675,47 +8051,25 @@ msgstr "Planlæg udførelse af script til et bestemt tidspunkt" msgid "Interval at which this script is re-run (in minutes)" msgstr "Interval, hvor scriptet køres igen (i minutter)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Ingen indekser fundet!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "tid" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "brugernavn" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "forespørgsels-id" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "handling" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "data forud for ændring" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Databaseændringer er blevet tilbageført automatisk." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "data efter ændring" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Script afbrudt med fejl: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "objektændring" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Der opstod en undtagelse: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "objektændringer" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Databaseændringer er blevet tilbageført på grund af fejl." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "Ændringslogføring understøttes ikke for denne objekttype ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Ingen indekser fundet!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7767,33 +8121,33 @@ msgstr "konfigurationsskabelon" msgid "config templates" msgstr "konfigurationsskabeloner" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Det eller de objekter, som dette felt gælder for." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Den type data, som dette brugerdefinerede felt indeholder" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "Typen af NetBox-objekt, som dette felt knytter sig til (for objektfelter)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Internt feltnavn" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Kun alfanumeriske tegn og understregninger er tilladt." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "Dobbelte understregninger er ikke tilladt i brugerdefinerede feltnavne." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7801,31 +8155,39 @@ msgstr "" "Navnet på feltet som vist for brugerne (hvis det ikke er angivet, vil " "'feltets navn blive brugt)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "Gruppenavn" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Brugerdefinerede felter inden for samme gruppe vises sammen" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "påkrævet" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Hvis det er sandt, er dette felt påkrævet, når du opretter nye objekter " -"eller redigerer et eksisterende objekt." +"Dette felt er påkrævet, når du opretter nye objekter eller redigerer et " +"eksisterende objekt." + +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "skal være unik" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "Værdien af dette felt skal være unik for det tildelte objekt" -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "søgevægt" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7833,11 +8195,11 @@ msgstr "" "Vægtning til søgning. Lavere værdier betragtes som vigtigere. Felter med en " "søgevægt på nul ignoreres." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "filterlogik" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7845,11 +8207,11 @@ msgstr "" "Loose matcher enhver forekomst af en given streng; nøjagtigt matcher hele " "feltet." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "standard" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7857,35 +8219,43 @@ msgstr "" "Standardværdi for feltet (skal være en JSON-værdi). Indkapsle strenge med " "dobbelte anførselstegn (f.eks. „Foo“)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filtrer objektvalg ved hjælp af en query_params-dict (skal være en JSON-" +"værdi) .Indkapsle strenge med dobbelte anførselstegn (f.eks. „Foo“)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "displayvægt" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "Felter med højere vægte vises lavere i en formular." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "minimumsværdi" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Mindste tilladte værdi (for numeriske felter)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "maksimal værdi" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Maksimal tilladt værdi (for numeriske felter)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "validering regex" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7896,276 +8266,245 @@ msgstr "" "tvinge matchning af hele strengen. For eksempel ^ [A-Z]{3}$ vil" " begrænse værdierne til nøjagtigt tre store bogstaver." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "valgsæt" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "Angiver, om det brugerdefinerede felt vises i brugergrænsefladen" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Angiver, om den brugerdefinerede feltværdi kan redigeres i " "brugergrænsefladen" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "kan klones" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Repliker denne værdi ved kloning af objekter" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "brugerdefineret felt" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "brugerdefinerede felter" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Ugyldig standardværdi“{value}„: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "En minimumsværdi kan kun indstilles for numeriske felter" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "En maksimumsværdi kan kun indstilles for numeriske felter" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Validering af regulære udtryk understøttes kun for tekst- og URL-felter" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "Unikhed kan ikke håndhæves for boolske felter" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Markeringsfelter skal angive et sæt valgmuligheder." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Valg kan kun indstilles i markeringsfelter." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Objektfelter skal definere en objekttype." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} felter definerer muligvis ikke en objekttype." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "Et relateret objektfilter kan kun defineres for objektfelter." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Filter skal defineres som en ordbog, der knytter attributter til værdier." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Sandt" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Falsk" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "Værdier skal matche denne regex: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "Værdien skal være en streng." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "Værdien skal matche regex '{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "Værdien skal være et heltal." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "Værdien skal være mindst {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "Værdien må ikke overstige {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "Værdien skal være en decimal." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "Værdien skal være sand eller falsk." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Datoværdierne skal være i ISO 8601-format (ÅÅÅÅ-MM-DD)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Dato- og klokkeslætsværdierne skal være i ISO 8601-format (ÅÅÅÅÅ-MM-DD " "HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Ugyldigt valg ({value}) til valgsæt {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Ugyldige valg (er) ({value}) til valgsæt {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "Værdien skal være et objekt-id, ikke {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "Værdien skal være en liste over objekt-id'er, ikke {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Fundet ugyldigt objekt-id: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Obligatorisk felt kan ikke være tomt." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Basisæt af foruddefinerede valg (valgfrit)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Valg sorteres automatisk alfabetisk" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "brugerdefineret felt valgsæt" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "brugerdefinerede feltvalgssæt" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Skal definere base eller ekstra valg." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "layout" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "config" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "dashboard" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "dashboards" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "objekttyper" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Det eller de objekter, som denne regel gælder for." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "på oprettelse" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Udløses, når der oprettes et matchende objekt." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "ved opdatering" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Udløses, når et matchende objekt opdateres." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "ved sletning" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Udløses, når et matchende objekt slettes." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "på jobstart" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Udløses, når et job for et matchende objekt startes." +msgid "The types of event which will trigger this rule." +msgstr "De typer af begivenheder, der udløser denne regel." -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "ved opgavens afslutning" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Udløses, når et job for et matchende objekt afsluttes." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "betingelser" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "" "Et sæt betingelser, der bestemmer, om begivenheden vil blive genereret." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "handlingstype" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Yderligere data, der skal videregives til handlingsobjektet" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "hændelsesregel" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "begivenhedsregler" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Mindst én hændelsestype skal vælges: Opret, opdater, slet, jobstart og/eller" -" jobslutning." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8175,7 +8514,7 @@ msgstr "" "webhooken kaldes. Jinja2-skabelonbehandling understøttes med samme kontekst " "som anmodningsorganet." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available her." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "yderligere overskrifter" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8201,11 +8540,11 @@ msgstr "" "Værdi. Jinja2-skabelonbehandling understøttes med samme kontekst som " "anmodningsorganet (nedenfor)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "kropsskabelon" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8218,11 +8557,11 @@ msgstr "" "tidsstempel, brugernavn, forespørgsels-" "id, og data." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "hemmelighed" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8233,15 +8572,15 @@ msgstr "" "nyttelastkroppen ved hjælp af hemmeligheden som nøgle. Hemmeligheden " "overføres ikke i anmodningen." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "Aktivér SSL-certifikatbekræftelse. Deaktiver med forsigtighed!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "CA-filsti" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8249,63 +8588,63 @@ msgstr "" "Den specifikke CA-certifikatfil, der skal bruges til SSL-bekræftelse. Lad " "det være tomt for at bruge systemstandardindstillingerne." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "webhook" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "webhooks" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "Angiv ikke en CA-certifikatfil, hvis SSL-bekræftelse er deaktiveret." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Den eller de objekttyper, som dette link gælder for." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "linktekst" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Jinja2 skabelonkode til linktekst" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "Link-URL" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Jinja2 skabelonkode til link URL" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Links med den samme gruppe vises som en rullemenu" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "nyt vindue" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Tving link til at åbne i et nyt vindue" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "brugerdefineret link" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "brugerdefinerede links" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Den eller de objekttyper, som denne skabelon gælder for." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8313,110 +8652,157 @@ msgstr "" "Jinja2 skabelonkode. Listen over objekter, der eksporteres, sendes som en " "kontekstvariabel med navnet Queryset." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "Standard til tekst/almindelig; tegnsæt = utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "filtypenavn" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Udvidelse, der skal tilføjes til det gengivne filnavn" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "som vedhæftet fil" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Download fil som vedhæftet fil" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "eksport skabelon" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "eksport skabeloner" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "„{name}„Det er et reserveret navn. Vælg et andet navn." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Den eller de objekttyper, som dette filter gælder for." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "delt" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "gemt filter" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "gemte filtre" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "Filterparametre skal gemmes som en ordbog med søgeordsargumenter." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "billedets højde" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "billedbredde" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "billed vedhæftet fil" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "billed vedhæftede filer" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "Billedvedhæftede filer kan ikke tildeles denne objekttype ({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "venlig" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "journalindtastning" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "journalposter" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Journalføring understøttes ikke for denne objekttype ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "bogmærke" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "bogmærker" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "Bogmærker kan ikke tildeles denne objekttype ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "læse" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "event" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "anmeldelse" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "notifikationer" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Objekter af denne type ({type}) understøtter ikke underretninger." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "grupperer" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "brugere" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "meddelelsesgruppe" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "meddelelsesgrupper" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "abonnement" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "abonnementer" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "er eksekverbar" @@ -8457,19 +8843,19 @@ msgstr "cachelagret værdi" msgid "cached values" msgstr "cachelagrede værdier" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "gren" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "grene" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "iscenesat ændring" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "iscenesatte ændringer" @@ -8493,85 +8879,87 @@ msgstr "tagget vare" msgid "tagged items" msgstr "mærkede varer" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Scriptdata" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Parametre for udførelse af script" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Databaseændringer er blevet tilbageført automatisk." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Script afbrudt med fejl: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Der opstod en undtagelse: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Databaseændringer er blevet tilbageført på grund af fejl." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "Sletning forhindres af en beskyttelsesregel: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Afvis" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Objekttyper" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Valider unikhed" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Synlig" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Redigerbar" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Relateret objekttype" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Valgsæt" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Kan klones" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Minimumsværdi" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Maksimal værdi" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Validering Regex" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Tælle" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Ordre alfabetisk" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Nyt vindue" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Som vedhæftet fil" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8581,63 +8969,54 @@ msgstr "Som vedhæftet fil" msgid "Data File" msgstr "Datafiler" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Synkroniseret" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Billede" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Størrelse (byte)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Læs" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "SSL Validering" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Jobstart" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Jobslutning" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Begivenhedstyper" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Enhedsroller" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Fulde navn" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "Anmodnings-ID" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Kommentarer (kort)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Linje" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Niveau" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Besked" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Fremgangsmåde" @@ -8668,37 +9047,37 @@ msgstr "Valideringsregler skal godkendes som en ordbog" msgid "Custom validation failed for {attribute}: {exception}" msgstr "Brugerdefineret validering mislykkedes for {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Ugyldig attribut“{name}„på forespørgsel" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Ugyldig attribut“{name}„til {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Dit dashboard er blevet nulstillet." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Tilføjet widget: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Opdateret widget: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Slettet widget: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Fejl ved sletning af widget: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "Kan ikke køre script: RQ-arbejderprocessen kører ikke." @@ -8742,10 +9121,6 @@ msgstr "SLAAK" msgid "Loopback" msgstr "Loopback" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Sekundær" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8771,19 +9146,19 @@ msgstr "Almindelig tekst" msgid "Invalid IP address format: {address}" msgstr "Ugyldigt IP-adresseformat: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Importmål" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Importmål (navn)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Eksportmål" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Eksportmål (navn)" @@ -8848,16 +9223,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Præfikser, der indeholder dette præfiks eller IP" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Maskelængde" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "VLAN-nummer (1-4094)" @@ -8877,23 +9252,23 @@ msgid "Parent prefix" msgstr "Forældrepræfiks" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Virtuel maskine (navn)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Virtuel maskine (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Grænseflade (navn)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "VM-grænseflade (navn)" @@ -8921,19 +9296,19 @@ msgstr "Tjeneste (ID)" msgid "NAT inside IP address (ID)" msgstr "NAT inde i IP-adresse (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "IP-adresse (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP adresse" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "Primær IPv4 (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "Primær IPv6 (ID)" @@ -8966,17 +9341,17 @@ msgstr "CIDR-maske (f.eks. /24) er påkrævet." msgid "Address pattern" msgstr "Adressemønster" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Håndhæv unikt rum" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Er privat" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -8989,20 +9364,20 @@ msgstr "Er privat" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Dato tilføjet" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN-gruppen" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9011,49 +9386,49 @@ msgstr "VLAN-gruppen" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Præfikslængde" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Er en pool" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Behandl som fuldt udnyttet" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "VLAN-tildeling" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS-navn" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "protokol" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Gruppe-ID" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9065,154 +9440,140 @@ msgstr "Gruppe-ID" msgid "Authentication type" msgstr "Autentificeringstype" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Autentificeringsnøgle" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Autentificering" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "Minimum barn VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Maksimalt barn VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Områdetype" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "VLAN-ID-intervaller" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Anvendelsesområde" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Område & Gruppe" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Havne" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Importer rutemål" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Eksporter rutemål" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "Tildelt RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "VLANs gruppe (hvis nogen)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Overordnet enhed med tildelt grænseflade (hvis nogen)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Virtuel maskine" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "Overordnet VM for tildelt grænseflade (hvis nogen)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Tildelt grænseflade" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Er primær" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Gør dette til den primære IP for den tildelte enhed" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Ingen enhed eller virtuel maskine angivet; kan ikke indstilles som primær IP" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "Ingen grænseflade angivet; kan ikke indstilles som primær IP" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Autentificeringstype" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Omfangstype (app og model)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Minimum underordnet VLAN VID (standard: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Maksimal underordnet VLAN VID (standard: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Tildelt VLAN-gruppe" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "IP-protokol" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Påkrævet, hvis den ikke er tildelt en VM" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Påkrævet, hvis den ikke er tildelt en enhed" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} er ikke tildelt denne enhed/VM." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Rutemål" @@ -9288,31 +9649,34 @@ msgstr "Tildelt til en grænseflade" msgid "DNS Name" msgstr "DNS-navn" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "VLAN-ID" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN'er" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Minimum VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Indeholder VLAN ID" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Maksimal VID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "VLAN-ID" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9383,11 +9747,16 @@ msgstr "Virtuel IP-adresse" msgid "Assignment already exists" msgstr "Opgaven findes allerede" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "VLAN-id'er" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "VLAN'er til børn" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9395,33 +9764,33 @@ msgstr "" "Kommasepareret liste over et eller flere portnumre. Et interval kan angives " "ved hjælp af en bindestreg." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Serviceskabelon" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Havn (er)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Serviceydelse" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Serviceskabelon" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Fra skabelon" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Brugerdefineret" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9461,7 +9830,7 @@ msgstr "Gruppe-ID" msgid "protocol" msgstr "protokol" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "autentificeringstype" @@ -9477,10 +9846,6 @@ msgstr "FHRP-gruppe" msgid "FHRP groups" msgstr "FHRP-grupper" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "prioritet" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "FHRP-gruppeopgave" @@ -9497,7 +9862,7 @@ msgstr "privat" msgid "IP space managed by this RIR is considered private" msgstr "IP-plads administreret af denne RIR betragtes som privat" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR'er" @@ -9748,22 +10113,6 @@ msgid "" msgstr "" "En tjeneste skal være tilknyttet enten en enhed eller en virtuel maskine." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "minimum VLAN-id" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Laveste tilladte ID for et barn VLAN" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "maksimalt VLAN-id" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Højeste tilladte ID for et barn VLAN" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "VLAN-grupper" @@ -9776,38 +10125,40 @@ msgstr "Kan ikke indstille scope_type uden scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Kan ikke indstille scope_id uden scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Intervaller kan ikke overlappe hinanden." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" -"Maksimal vid for barn skal være større end eller lig med minimum børneVID" +"Maksimal børneVID skal være større end eller lig med minimum børns VID " +"({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "Det specifikke område, som dette VLAN er tildelt (hvis nogen)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "VLAN-gruppe (valgfrit)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "Numerisk VLAN-id (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Driftsstatus for dette VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "Den primære funktion af denne VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN'er" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9816,11 +10167,11 @@ msgstr "" "VLAN er tildelt til gruppe {group} (anvendelsesområde: {scope}); kan ikke " "også tildele til området {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" msgstr "" -"VID skal være mellem {minimum} og {maximum} til VLAN'er i gruppe {group}" +"VID skal være inden for intervaller {ranges} til VLAN'er i gruppe {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9838,8 +10189,8 @@ msgstr "håndhæv unikt rum" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Undgå dublerede præfikser/IP-adresser inden for denne VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF'er" @@ -9867,8 +10218,8 @@ msgstr "Antal områder" msgid "Provider Count" msgstr "Antal leverandøre" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Aggregater" @@ -9877,21 +10228,21 @@ msgid "Added" msgstr "Tilføjet" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Præfikser" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Udnyttelse" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "IP-intervaller" @@ -9936,7 +10287,11 @@ msgstr "Tildelt objekt" msgid "Scope Type" msgstr "Områdetype" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "VID intervaller" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VIDEO" @@ -10000,11 +10355,11 @@ msgstr "Enhedsgrænseflader" msgid "VM Interfaces" msgstr "VM-grænseflader" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Dette felt må ikke være tomt." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10012,21 +10367,34 @@ msgstr "" "Værdien skal sendes direkte (f.eks. „foo“: 123); brug ikke en ordbog eller " "liste." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} Det er ikke et gyldigt valg." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Ugyldig indholdstype: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "Ugyldig værdi. Angiv en indholdstype som '.„." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "Intervaller skal specificeres i formularen (nedre, øvre)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Områdegrænser skal defineres som heltal." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} skal implementere get_view_name ()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Ugyldig tilladelse {permission} til model {model}" @@ -10354,46 +10722,51 @@ msgstr "Fjern tags" msgid "{class_name} must specify a model class." msgstr "{class_name} skal angive en modelklasse." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Ukendt feltnavn '{name}'i brugerdefinerede feltdata." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Ugyldig værdi for brugerdefineret felt '{name}„: {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Brugerdefineret felt '{name}“ skal have en unik værdi." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Mangler påkrævet brugerdefineret felt '{name}„." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Fjerndatakilde" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "datastie" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Sti til fjernfil (i forhold til datakildens rod)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "automatisk synkronisering aktiveret" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "Aktivér automatisk synkronisering af data, når datafilen opdateres" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "dato synkroniseret" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} skal implementere en sync_data () metode." @@ -10407,217 +10780,230 @@ msgid "Site Groups" msgstr "Områdegrupper" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Rackroller" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Forhøjninger" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Lejergrupper" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Kontaktgrupper" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Kontaktroller" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Kontaktopgaver" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Rackroller" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Forhøjninger" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Racktyper" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Moduler" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Virtuelle enhedskontekster" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Producenter" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Enhedskomponenter" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Lagervareroller" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Forbindelser" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Kabler" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Trådløse links" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Grænsefladeforbindelser" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Konsolforbindelser" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Strømtilslutninger" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Trådløse LAN-grupper" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Præfiks- og VLAN-roller" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "ASN-intervaller" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "VLAN Grupper" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Serviceskabeloner" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Serviceydelser" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Tunneler" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Tunnelgrupper" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Tunnelafslutninger" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPN'er" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Opsigelser" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "IKE-forslag" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "IKE politikker" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "IPsec-forslag" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "IPsec-politikker" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "IPsec-profiler" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Virtualisering" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Virtuelle diske" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Klyngetyper" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Klyngegrupper" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Kredsløbstyper" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Kredsløbsgrupper" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Gruppeopgaver" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Kredsløbsafslutninger" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Leverandøre" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Leverandørkonti" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Leverandørnetværk" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Strømpaneler" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Konfigurationer" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Konfigurationskontekster" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Konfigurationsskabeloner" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Tilpasning" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10630,114 +11016,108 @@ msgstr "Tilpasning" msgid "Custom Fields" msgstr "Brugerdefinerede felter" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Brugerdefinerede feltvalg" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Brugerdefinerede links" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Eksport skabeloner" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Gemte filtre" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Billedvedhæftede filer" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operationer" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Integrationer" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Datakilder" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Begivenhedsregler" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhooks" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Job" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Logning" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Meddelelsesgrupper" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Journalposter" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Ændringslog" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "Administrator" -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Brugere" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Grupper" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "API-tokens" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Tilladelser" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Systemet" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Plugins" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Konfigurationshistorik" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Baggrundsopgaver" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Plugins" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10769,31 +11149,22 @@ msgstr "" "{template_extension} er ikke en underklasse af " "Netbox.Plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"PluginTemplateExtension klasse {template_extension} definerer ikke en gyldig" -" model!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} skal være en forekomst af Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} skal være en forekomst af Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} skal være en forekomst af Netbox.Plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context skal være en ordbog" @@ -10872,75 +11243,79 @@ msgstr "" msgid "Cannot delete stores from registry" msgstr "Kan ikke slette butikker fra registreringsdatabasen" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "Tjekkisk" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "dansk" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Tysk" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "engelsk" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "spansk" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "franskmænd" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "Italiensk" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Japansk" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Hollandsk" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Polere" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "portugisisk" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Russisk" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Tyrkisk" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "Ukrainsk" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "kinesisk" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Vælg alle" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Skift alle" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Skift rullemenuen" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Fejl" @@ -10993,24 +11368,24 @@ msgstr "Omdøbt {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Slettet {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Ændringslog" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "Tidsskrift" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "Kan ikke synkronisere data: Der er ikke angivet nogen datafil." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Synkroniserede data for {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Synkroniseret {count} {object_type}" @@ -11020,7 +11395,7 @@ msgstr "Synkroniseret {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} skal implementere get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11056,11 +11431,11 @@ msgstr "Der opstod et problem med din anmodning. Kontakt en administrator" msgid "The complete exception is provided below" msgstr "Den fuldstændige undtagelse er angivet nedenfor" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Python-version" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "NetBox-version" @@ -11084,14 +11459,26 @@ msgstr "på GitHub" msgid "Home Page" msgstr "Hjemmesiden" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Profil" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Meddelelser" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Abonnementer" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Præferencer" @@ -11099,7 +11486,7 @@ msgstr "Præferencer" msgid "Change Password" msgstr "Skift adgangskode" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11124,7 +11511,7 @@ msgstr "Skift adgangskode" msgid "Cancel" msgstr "Annuller" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11198,7 +11585,7 @@ msgid "Superuser" msgstr "Superbruger" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Personale" @@ -11213,19 +11600,19 @@ msgstr "Tildelte grupper" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11246,7 +11633,7 @@ msgstr "Mine API-tokens" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Token" @@ -11267,32 +11654,41 @@ msgstr "Tilføj en token" msgid "Home" msgstr "Hjem" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "NetBox Motiv" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "NetBox-logoet" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Dokumenter" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "REST API-dokumentation" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "GraphQL-API" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "NetBox Labs Support" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Kildekode" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Fællesskab" @@ -11304,6 +11700,11 @@ msgstr "Installationsdato" msgid "Termination Date" msgstr "Opsigelsesdato" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Tildel gruppe" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Udskiftningskredsløbsafslutninger" @@ -11321,6 +11722,14 @@ msgstr "En side" msgid "Z side" msgstr "Z-siden" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Tildel kredsløb" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Kredsløbsgruppetildeling" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Tilføj kredsløb" @@ -11345,7 +11754,7 @@ msgstr "Tilføj" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11466,13 +11875,10 @@ msgstr "Ny værdi" msgid "Changed" msgstr "Ændret" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Senest opdateret" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Størrelse" @@ -11554,25 +11960,119 @@ msgstr "Brugerpræferencer" msgid "Job retention" msgstr "Jobfastholdelse" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Job" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Oprettet af" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Planlægning" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "hver %(interval)s minutter" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Ændre" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Forskel" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Tidligere" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Næste" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Objekt oprettet" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Objekt slettet" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Ingen ændringer" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Data før ændring" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Advarsel: Sammenligning af ikke-atomær ændring med tidligere ændringsrekord" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Data efter ændring" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Se alle %(count)s Ændringer" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Ændre logopbevaring" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "dage" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Ubestemt" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Ikke installeret" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Oversigt" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Installere" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Plugin Detaljer" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Resumé" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Licens" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Versionshistorik" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Lokale installationsinstruktioner" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11584,8 +12084,8 @@ msgstr "Baggrundskøer" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11644,7 +12144,7 @@ msgid "Queued Jobs" msgstr "Jobmuligheder i kø" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11704,39 +12204,43 @@ msgstr "Eksport" msgid "System Status" msgstr "Systemstatus" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "NetBox-udgivelse" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Django version" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "PostgreSQL-version" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Databasenavn" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Databasestørrelse" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Ikke tilgængelig" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "RQ-arbejdere" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "standardkø" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Systemtid" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Nuværende konfiguration" @@ -11834,14 +12338,15 @@ msgstr "Ikke racket" msgid "GPS Coordinates" msgstr "GPS-koordinater" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Kortlæg det" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Kort" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Aktivemærke" @@ -11861,19 +12366,19 @@ msgstr "Ledelse" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT til" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NATTO" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Strømforbrug" @@ -11901,7 +12406,7 @@ msgid "Leg" msgstr "Ben" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Tilføj en tjeneste" @@ -12162,6 +12667,22 @@ msgstr "Klar" msgid "Clear All" msgstr "Ryd alle" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Monteringsdybde" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Startenhed" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Faldende enheder" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Rackhøjde" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Tilføj underordnet grænseflade" @@ -12224,8 +12745,8 @@ msgstr "Kanalbredde" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12315,49 +12836,33 @@ msgstr "Maksimal lodtrækning" msgid "Allocated Draw" msgstr "Tildelt lodtrækning" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Rumudnyttelse" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "nedadgående" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "opstigende" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Startenhed" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Monteringsdybde" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Stativvægt" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Maksimal vægt" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Samlet vægt" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Billeder og etiketter" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Kun billeder" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Kun etiketter" @@ -12370,6 +12875,10 @@ msgstr "Tilføj reservation" msgid "View List" msgstr "Vis liste" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Vælg rackvisning" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Sorter efter" @@ -12423,10 +12932,6 @@ msgstr "Områdetid" msgid "Physical Address" msgstr "Fysisk adresse" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Kort" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Leveringsadresse" @@ -12467,7 +12972,7 @@ msgstr "Tilføj nyt medlem" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Handlinger" @@ -12638,46 +13143,42 @@ msgid "Group Name" msgstr "Gruppenavn" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Skal være unik" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Klonbar" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Standardværdi" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Søg Vægt" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Filterlogik" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Skærmvægt" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Brugergrænseflade Synlig" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Brugergrænseflade Redigerbar" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Valideringsregler" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Minimumsværdi" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Maksimal værdi" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Regelmæssigt udtryk" @@ -12691,11 +13192,11 @@ msgstr "Knapklasse" msgid "Assigned Models" msgstr "Tildelte modeller" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Linktekst" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "Link URL" @@ -12720,6 +13221,14 @@ msgstr "" "Denne ændring påvirker kun dit dashboard, og vil ikke påvirke andre " "brugere." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "widget konfiguration" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Luk widget" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Tilføj en widget" @@ -12752,13 +13261,9 @@ msgstr "Der opstod et problem med at hente RSS-feedet" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Jobstart" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Slut på jobbet" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Betingelser" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12800,20 +13305,15 @@ msgstr "Resultater afventende" msgid "Journal Entry" msgstr "Journalindtastning" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Ændre logopbevaring" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "dage" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Meddelelsesgruppe" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Ubestemt" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Ingen tildelt" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12827,53 +13327,6 @@ msgstr "Kildekontekster" msgid "New Journal Entry" msgstr "Ny journalpost" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Ændre" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Forskel" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Tidligere" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Næste" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Objekt oprettet" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Objekt slettet" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Ingen ændringer" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Data før ændring" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Advarsel: Sammenligning af ikke-atomær ændring med tidligere ændringsrekord" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Data efter ændring" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Se alle %(count)s Ændringer" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Rapport" @@ -12884,7 +13337,7 @@ msgstr "Du har ikke tilladelse til at køre scripts" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Kør script" @@ -12897,27 +13350,27 @@ msgstr "Fejl ved indlæsning af script" msgid "Script no longer exists in the source file." msgstr "Script findes ikke længere i kildefilen." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Sidste løb" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Script findes ikke længere i kildefilen" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Aldrig" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Kør igen" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Ingen scripts fundet" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -12932,6 +13385,14 @@ msgstr "" msgid "Results" msgstr "Resultater" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Logtærskel" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Alle" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Mærkede varer" @@ -12964,11 +13425,11 @@ msgstr "HTTP-indholdstype" msgid "SSL Verification" msgstr "SSL Bekræftelse" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Yderligere overskrifter" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Kropsskabelon" @@ -13044,6 +13505,10 @@ msgstr "Feltindstillinger" msgid "Accessor" msgstr "Tilbehør" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "valg" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Importværdi" @@ -13210,6 +13675,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Følgende objekter slettes som følge af denne handling." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "siden" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Ingen ulæste meddelelser" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Alle notifikationer" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Vælg" @@ -13277,15 +13754,23 @@ msgstr "Hurtig søgning" msgid "Saved filter" msgstr "Gemt filter" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Klar bestilling" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Hjælpecenter" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Django Admin" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Log ud" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Log ind" @@ -13333,10 +13818,6 @@ msgstr "Masseoprettelse" msgid "Create Group" msgstr "Opret gruppe" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Tildel gruppe" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "Virtuelle IP'er" @@ -13470,10 +13951,6 @@ msgstr "Tilføj et præfiks" msgid "Add VLAN" msgstr "Tilføj VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "Tilladte VID'er" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Ruteadskillelse" @@ -13482,20 +13959,16 @@ msgstr "Ruteadskillelse" msgid "Unique IP Space" msgstr "Unik IP-plads" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "NetBox-logoet" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Fejl" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Log ind" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Eller" @@ -13572,11 +14045,6 @@ msgstr "Titel" msgid "Phone" msgstr "Telefonen" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Opgaver" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13616,7 +14084,7 @@ msgstr "Tildelte tilladelser" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Tilladelse" @@ -13638,23 +14106,21 @@ msgid "Allocated Resources" msgstr "Tildelte ressourcer" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Virtuelle CPU'er" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Hukommelse" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Diskplads" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13695,7 +14161,7 @@ msgid "Cluster Group" msgstr "Klyngegruppe" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Klyngetype" @@ -13704,13 +14170,13 @@ msgstr "Klyngetype" msgid "Virtual Disk" msgstr "Virtuel disk" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Ressourcer" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Tilføj virtuel disk" @@ -13892,13 +14358,12 @@ msgstr "Tilføj trådløs LAN-gruppe" msgid "Link Properties" msgstr "Linkegenskaber" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Tertiær" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Inaktiv" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Afstand" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14063,13 +14528,13 @@ msgstr "Kontakt Link" msgid "Contact Description" msgstr "Kontakt Beskrivelse" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Tilladelse (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Gruppe (navn)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Meddelelsesgruppe (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14091,27 +14556,27 @@ msgstr "Superbrugerstatus" msgid "If no key is provided, one will be generated automatically." msgstr "Hvis der ikke er angivet nogen nøgle, genereres en automatisk." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Er personale" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Er Superbruger" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Kan se" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Kan tilføje" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Kan ændre sig" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Kan slette" @@ -14206,45 +14671,45 @@ msgstr "tilladelse" msgid "permissions" msgstr "tilladelser" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "brugerpræferencer" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Nøgle '{path}'er en bladnode; kan ikke tildele nye nøgler" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "Nøgle '{path}'er en ordbog; kan ikke tildele en ikke-ordbogsværdi" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "udløber" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "sidst brugt" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "nøgle" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "skrive aktiveret" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "Tillad oprette/opdatere/slette handlinger ved hjælp af denne nøgle" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "tilladte IP'er" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14253,11 +14718,11 @@ msgstr "" "uden begrænsninger. Eksempel: „10.1.1.0/24, 192.168.10.16/32, 2001: DB 8:1: " ":/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "symbolet" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "tokens" @@ -14265,18 +14730,10 @@ msgstr "tokens" msgid "group" msgstr "gruppe" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "grupperer" - #: netbox/users/models/users.py:92 msgid "user" msgstr "bruger" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "brugere" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Der findes allerede en bruger med dette brugernavn." @@ -14413,7 +14870,7 @@ msgstr "" "Ugyldige YAML-data. Data skal være i form af flere dokumenter, eller et " "enkelt dokument, der omfatter en liste over ordbøger." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14422,6 +14879,22 @@ msgstr "" "Ugyldig liste ({value}). Skal være numerisk, og intervaller skal være i " "stigende rækkefølge." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Angiv et eller flere numeriske områder adskilt af kommaer. Eksempel: " +"1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Ugyldige intervaller ({value}). Skal være en række heltal i stigende " +"rækkefølge." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14583,6 +15056,26 @@ msgid "Missing required value for static query param: '{static_params}'" msgstr "" "Mangler påkrævet værdi for statisk forespørgselsparam: '{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Adgangskoden skal have mindst et tal." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Adgangskoden skal have mindst et stort bogstav." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Adgangskoden skal have mindst et lille bogstav." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Din adgangskode skal indeholde mindst et tal, et stort bogstav og et lille " +"bogstav." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14640,6 +15133,14 @@ msgstr "Tilføj eksportskabelon" msgid "Import" msgstr "Importere" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Afmeld" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Abonner" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Kopier til udklipsholder" @@ -14680,15 +15181,11 @@ msgstr "Søg i NetBox" msgid "Open selector" msgstr "Åbn vælger" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Ingen tildelt" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Skrive" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Testen skal definere csv_update_data." @@ -14697,18 +15194,18 @@ msgstr "Testen skal definere csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} er ikke et gyldigt regulært udtryk." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" "{self.__class__.__name__} skal implementere get_required_permissions ()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} skal implementere get_required_permissions ()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14731,7 +15228,7 @@ msgid "Cluster type (ID)" msgstr "Klyngetype (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Klynge (ID)" @@ -14749,7 +15246,7 @@ msgid "Disk (GB)" msgstr "Disk (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Størrelse (GB)" @@ -14769,6 +15266,10 @@ msgstr "Tildelt klynge" msgid "Assigned device within cluster" msgstr "Tildelt enhed inden for klynge" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Serienummer" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14791,6 +15292,7 @@ msgid "Disk size is managed via the attachment of virtual disks." msgstr "Diskstørrelse styres via vedhæftning af virtuelle diske." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Disken" @@ -14832,42 +15334,42 @@ msgid "memory (MB)" msgstr "hukommelse (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "disk (GB)" +msgid "disk (MB)" +msgstr "disk (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Navnet på den virtuelle maskine skal være entydigt pr. klynge." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "virtuel maskine" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "virtuelle maskiner" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "En virtuel maskine skal tildeles et område og/eller et cluster." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "Det valgte cluster ({cluster}) er ikke tildelt dette område ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "Skal angive en klynge, når du tildeler en værtsenhed." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "Den valgte enhed ({device}) er ikke tildelt denne klynge ({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -14876,17 +15378,17 @@ msgstr "" "Den angivne diskstørrelse ({size}) skal matche den samlede størrelse af " "tildelte virtuelle diske ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "Skal være en IPV{family} adresse. ({ip} er en IPV{version} adresse.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "Den angivne IP-adresse ({ip}) er ikke tildelt denne VM." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -14895,7 +15397,7 @@ msgstr "" "Den valgte overordnede grænseflade ({parent}) tilhører en anden virtuel " "maskine ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -14904,7 +15406,7 @@ msgstr "" "Den valgte brogrænseflade ({bridge}) tilhører en anden virtuel maskine " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -14913,24 +15415,24 @@ msgstr "" "Den umærkede VLAN ({untagged_vlan}) skal tilhøre det samme område som " "grænsefladens overordnede virtuelle maskine, eller den skal være global." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "størrelse (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "størrelse (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "virtuel disk" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "virtuelle diske" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Tilføjet {count} enheder til klynge {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Fjernet {count} enheder fra klynge {cluster}" @@ -15044,32 +15546,32 @@ msgid "Outside IP (ID)" msgstr "Udenfor IP (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "IKE-politik (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "IKE-politik (navn)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "IPsec-politik (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "IPsec-politik (navn)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (slug)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "VM-grænseflade (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (navn)" @@ -15242,7 +15744,7 @@ msgstr "udgave" msgid "proposals" msgstr "forslag" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "foruddelt nøgle" @@ -15424,17 +15926,24 @@ msgstr "WPA-virksomhed" msgid "Authentication cipher" msgstr "Autentificeringskryptering" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Afstandsenhed" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "Broet VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Grænseflade A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Grænseflade B" @@ -15442,39 +15951,51 @@ msgstr "Grænseflade B" msgid "Side B" msgstr "Side B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "autentificeringskryptering" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "trådløs LAN-gruppe" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "trådløse LAN-grupper" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "trådløst LAN" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "grænseflade A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "grænseflade B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "afstand" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "afstandsenhed" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "trådløst link" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "trådløse links" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "Skal angive en enhed, når du indstiller en trådløs afstand" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} er ikke en trådløs grænseflade." diff --git a/netbox/translations/de/LC_MESSAGES/django.mo b/netbox/translations/de/LC_MESSAGES/django.mo index 7d6e4fa1f36..1d183326eb4 100644 Binary files a/netbox/translations/de/LC_MESSAGES/django.mo and b/netbox/translations/de/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/de/LC_MESSAGES/django.po b/netbox/translations/de/LC_MESSAGES/django.po index 0a5a5c7017c..967459e73cb 100644 --- a/netbox/translations/de/LC_MESSAGES/django.po +++ b/netbox/translations/de/LC_MESSAGES/django.po @@ -4,7 +4,6 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Jeremy Stretch, 2024 # Martin R, 2024 # Niklas, 2024 # fepilins, 2024 @@ -12,15 +11,16 @@ # Robin Reinhardt, 2024 # Uli Haage, 2024 # chbally, 2024 +# Jeremy Stretch, 2024 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" -"Last-Translator: chbally, 2024\n" +"Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: German (https://app.transifex.com/netbox-community/teams/178115/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,16 +34,17 @@ msgstr "" msgid "Key" msgstr "Schlüssel" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Schreibberechtigung" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -55,11 +56,11 @@ msgstr "Erstellt" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Läuft ab" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Zuletzt verwendet" @@ -69,46 +70,46 @@ msgstr "Zuletzt verwendet" msgid "Allowed IPs" msgstr "Erlaubte IP-Adressen" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Angemeldet als {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Du hast dich abgemeldet." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Ihre Einstellungen wurden aktualisiert." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "Die LDAP Zugangsdaten können nicht innerhalb von NetBox geändert werden." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Dein Passwort wurde erfolgreich geändert." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Geplant" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Provisionierung" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -117,9 +118,9 @@ msgstr "Provisionierung" msgid "Active" msgstr "Aktiv" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Offline" @@ -132,98 +133,116 @@ msgstr "Deprovisionierung" msgid "Decommissioned" msgstr "Stillgelegt" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Primär" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Sekundär" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Tertiär" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inaktiv" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Region (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Region (URL-Slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Standortgruppe (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Standortgruppe (URL-Slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -235,172 +254,197 @@ msgstr "Standortgruppe (URL-Slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Standort" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Standort (URL-Slug)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Provider (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Provider (URL-Slug)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Providerkonto (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Providerkonto (Konto)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Providernetzwerk (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Transportnetz Typ (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Transportnetz Typ (URL-Slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Standort (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Abschlusspunkt A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Suche" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Transportnetz" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Providernetzwerk (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Transportnetz (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Transportnetz (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Transportnetzgruppe (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Transportnetzgruppe (SLUG)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASNs" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -413,16 +457,17 @@ msgstr "ASNs" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -432,8 +477,9 @@ msgstr "ASNs" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -486,26 +532,28 @@ msgstr "ASNs" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Beschreibung" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -517,22 +565,22 @@ msgstr "Beschreibung" msgid "Provider" msgstr "Provider" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Dienst ID" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -543,33 +591,33 @@ msgstr "Dienst ID" msgid "Color" msgstr "Farbe" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -582,9 +630,9 @@ msgstr "Farbe" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -600,52 +648,52 @@ msgstr "Farbe" msgid "Type" msgstr "Typ" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Providerkonto" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -654,7 +702,7 @@ msgstr "Providerkonto" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -662,7 +710,7 @@ msgstr "Providerkonto" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -672,45 +720,49 @@ msgstr "Providerkonto" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Status" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -722,7 +774,7 @@ msgstr "Status" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -745,36 +797,37 @@ msgstr "Status" msgid "Tenant" msgstr "Mandant" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Datum der Installation" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Kündigungsdatum" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Vereinbarte Bandbreite (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Service Parameter" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -784,37 +837,37 @@ msgstr "Service Parameter" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Mandantenverhältnis" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Provider Netzwerk" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Portgeschwindigkeit (Kbit/s)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Upstream Geschwindigkeit (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Als verbunden markieren" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -822,46 +875,60 @@ msgstr "Als verbunden markieren" msgid "Circuit Termination" msgstr "Transportnetz Abschlusspunkt" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Einzelheiten zum Abschlusspunkt" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Priorität" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Zugewiesener Provider" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Zugewiesenes Providerkonto" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Transportnetz Typ" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Betriebsstatus" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -869,7 +936,7 @@ msgstr "Betriebsstatus" msgid "Assigned tenant" msgstr "Zugewiesener Mandant" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -877,44 +944,44 @@ msgstr "Zugewiesener Mandant" msgid "Termination" msgstr "Abschlusspunkt" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Providernetzwerk" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -923,13 +990,13 @@ msgstr "Providernetzwerk" msgid "Location" msgstr "Lokation" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -938,22 +1005,22 @@ msgstr "Lokation" msgid "Contacts" msgstr "Kontakte" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -966,17 +1033,17 @@ msgstr "Kontakte" msgid "Region" msgstr "Region" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -984,181 +1051,264 @@ msgstr "Region" msgid "Site group" msgstr "Standortgruppe" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Attribute" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Konto" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Terminationsseite" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Zuweisung" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Gruppe" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Transportnetzgruppe" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "Farbe" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "Transportnetz Typ" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "Transportnetz Typen" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "Transportnetz-ID" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "Eindeutige Transportnetz-ID" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "Status" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "installiert" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "endet" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "garantierte Bandbreite (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Garantierte Bandbreite" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "Transportnetz" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "Transportnetze" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "Transportnetzgruppe" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "Transportnetzgruppen" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "Priorität" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Transportnetzzuweisung" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Transportnetzzuweisungen" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "Abschlusspunkt" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "Portgeschwindigkeit (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Physikalische Transportnetzgeschwindigkeit" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "Upstream Geschwindigkeit (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "" "Upstream Geschwindigkeit, falls sie von der Portgeschwindigkeit abweicht" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "Cross-Connect-ID" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID des lokalen Cross-Connects" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "Patchpanel/Anschluss" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "Patchpanel-ID und Anschlussnummer(n)" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "Beschreibung" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" -msgstr "Transportnetz Abschlusspunkt" +msgstr "Transportnetzabschlusspunkt" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "Transportnetzabschlusspunkte" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Ein Leitungsabschluss muss entweder an einen Standort oder an ein " "Providernetzwerk angeschlossen werden." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1167,33 +1317,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "Name" @@ -1202,11 +1353,12 @@ msgid "Full name of the provider" msgstr "Vollständiger Name des Providers" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "URL-Slug" @@ -1236,46 +1388,51 @@ msgstr "Dienst-ID" #: netbox/circuits/models/providers.py:126 msgid "provider network" -msgstr "Provider-Netzwerk" +msgstr "Providernetzwerk" #: netbox/circuits/models/providers.py:127 msgid "provider networks" msgstr "Providernetzwerke" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1290,7 +1447,7 @@ msgstr "Providernetzwerke" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1304,8 +1461,9 @@ msgstr "Providernetzwerke" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1345,9 +1503,9 @@ msgstr "Providernetzwerke" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1357,56 +1515,57 @@ msgstr "Providernetzwerke" msgid "Name" msgstr "Name" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Transportnetze" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Transportnetz-ID" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Seite A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Seite Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Garantierte Bandbreite" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1415,6 +1574,12 @@ msgstr "Garantierte Bandbreite" msgid "Comments" msgstr "Kommentare" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Zuweisungen" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Konten" @@ -1437,7 +1602,7 @@ msgstr "Keine Terminierung wurde für das Transportnetz {circuit}definiert" msgid "Swapped terminations for circuit {circuit}." msgstr "Tausche Terminierungen für Transportnetz {circuit}" -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "" "Dieser Benutzer ist nicht berechtigt, diese Datenquelle zu synchronisieren." @@ -1456,21 +1621,19 @@ msgid "Syncing" msgstr "Synchronisieren" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Abgeschlossen" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Fehlgeschlagen" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1482,30 +1645,39 @@ msgstr "Skripte" msgid "Reports" msgstr "Berichte" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "Ausstehend" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Geplant" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Laufend" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Fehlgeschlagen" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Aktualisiert" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Gelöscht" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Fertig" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Gestartet" @@ -1522,11 +1694,13 @@ msgstr "Gestoppt" msgid "Cancelled" msgstr "Abgebrochen" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Lokal" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1536,8 +1710,8 @@ msgstr "Nutzername" msgid "Only used for cloning with HTTP(S)" msgstr "Wird nur für das Klonen über HTTP(S) verwendet" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Passwort" @@ -1559,24 +1733,63 @@ msgstr "AWS-Zugriffsschlüssel-ID" msgid "AWS secret access key" msgstr "Geheimer AWS-Zugriffsschlüssel" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Objekt erstellt" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Objekt aktualisiert" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Objekt gelöscht" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Job wurde gestartet" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Job wurde abgeschlossen" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Job fehlgeschlagen" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Job ist fehlerhaft" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Datenquelle (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Datenquelle (Name)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Benutzer (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Benutzername" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1584,14 +1797,14 @@ msgstr "Datenquelle (Name)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Aktiviert" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1604,11 +1817,11 @@ msgstr "Parameter" msgid "Ignore rules" msgstr "Regeln ignorieren" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1618,76 +1831,99 @@ msgstr "Regeln ignorieren" msgid "Data Source" msgstr "Datenquelle" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Datei" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Datenquelle" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Erstellung" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Objekttyp" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Erstellt nach" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Erstellt vor" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Geplant nach" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Geplant vor" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Begonnen nach" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Begonnen vor" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Abgeschlossen nach" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Abgeschlossen vor" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Nutzer" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Zeit" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Nach" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Vorher" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Aktion" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1719,19 +1955,19 @@ msgstr "" msgid "Rack Elevations" msgstr "Rackübersichten" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Stromversorgung" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1748,7 +1984,9 @@ msgstr "Banner" msgid "Pagination" msgstr "Seitenumbruch" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Validierung" @@ -1758,7 +1996,7 @@ msgstr "Validierung" msgid "User Preferences" msgstr "Benutzereinstellungen" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1782,10 +2020,50 @@ msgstr "Aktueller Wert: {value}" msgid " (default)" msgstr " (Standard)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "Zeit" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "Benutzername" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "Anfrage-ID" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "Aktion" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "Daten vor der Änderung" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "Daten nach der Änderung" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "Objekt ändern" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "Objektänderungen" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"Die Änderungsprotokollierung wird für diesen Objekttyp nicht unterstützt " +"({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "erstellt" @@ -1818,14 +2096,14 @@ msgstr "Aktuelle Konfiguration" msgid "Config revision #{id}" msgstr "Konfigurationsrevision #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1833,62 +2111,63 @@ msgstr "Konfigurationsrevision #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "Typ" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "aktiviert" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "Regeln ignorieren" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Muster (eines pro Zeile), welche Dateien entsprechen, die beim " "Synchronisieren ignoriert werden sollen" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "Parameter" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "zuletzt synchronisiert" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "Datenquelle" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "Datenquellen" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Unbekannter Backendtyp: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "Synchronisierung kann nicht initiiert werden: Läuft bereits." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1896,48 +2175,48 @@ msgstr "" "Beim Initialisieren des Backends ist ein Fehler aufgetreten. Eine " "Abhängigkeit muss installiert werden: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "zuletzt aktualisiert" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "Pfad" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Dateipfad relativ zum Stammverzeichnis des Daten Verzeichnisses" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "Größe" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "Prüfsumme" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "Die Länge muss 64 Hexadezimalzeichen betragen." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "SHA256-Hash des Dateiinhalts" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "Datendatei" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "Datendateien" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "Auto-Sync-Aufnahme" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "Auto-Sync-Aufnahmen" @@ -1961,60 +2240,96 @@ msgstr "verwaltete Datei" msgid "managed files" msgstr "verwaltete Dateien" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "geplant" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "Intervall" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Wiederholungsintervall (in Minuten)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "gestartet" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "abgeschlossen" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "Daten" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "Fehler" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "Job-ID" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "Job" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "Jobs" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "Jobs können diesem Objekttyp nicht zugewiesen werden ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" "Ungültiger Status für die Beendigung des Jobs. Es stehen folgende Optionen " "zur Auswahl: {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"enqueue () kann nicht mit Werten sowohl für schedule_at als auch für " +"immediate aufgerufen werden." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Das Löschen wird durch eine Schutzregel verhindert: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Vollständiger Name" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objekt" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "Anfragen-ID" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Ist aktiv" @@ -2029,51 +2344,63 @@ msgid "Last updated" msgstr "Letzte Aktualisierung" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Objekt" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Intervall" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Version" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Paket" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Zuletzt aktualisiert" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Minimale Netboxversion" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Maximale NetBox-Version" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Keine Plugin-Daten gefunden" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Autor" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Autor E-Mail-Adresse" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Installiert" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Zertifiziert" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Veröffentlicht" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Installierte Version" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Keine Plugins gefunden" +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Letzte Version" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2087,7 +2414,7 @@ msgstr "Arbeiter" msgid "Host" msgstr "Host" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Port" @@ -2135,62 +2462,72 @@ msgstr "PID" msgid "No workers found" msgstr "Kein Job gefunden" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Warteschlangen Job {id}beim Synchronisieren {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Wiederhergestellte Konfigurationsrevision # {id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Job{job_id} nicht gefunden" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Job {id}wurde gelöscht" -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Fehler beim Job löschen {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Job {id}nicht gefunden" -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Job {id}erneut in Warteschlange eingereiht" -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Job {id}in Warteschlange eingereiht" -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Job {id}wurde gestoppt" -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Fehler beim Stoppen des Job {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Der Plugin-Katalog konnte nicht geladen werden" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Plugin {name} nicht gefunden" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Position (HE)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "Einrichtungs-ID" @@ -2198,8 +2535,8 @@ msgstr "Einrichtungs-ID" msgid "Staging" msgstr "Bereitstellung" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Außerbetriebnahme" @@ -2258,27 +2595,39 @@ msgstr "Verfügbar" msgid "Deprecated" msgstr "Veraltet" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Millimeter" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Zoll" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Front- zu Rückseite" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Rück- zu Frontseite" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2294,278 +2643,273 @@ msgstr "Zoll" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Übergeordnet" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Untergeordnet" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Frontseite" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Rückseite" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Vorbereitet" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Inventar" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Front- zu Rückseite" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Rück- zu Frontseite" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Links nach rechts" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Rechts nach links" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Seite nach hinten" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Passiv" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Gemischt" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (nicht verriegelnd)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (verriegelnd)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Kalifornischer Stil" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "International/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Propritär" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Andere" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/International" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Physikalisch" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Virtuell" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Funknetze" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Virtuelle Schnittstellen" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Bridge" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Link Aggregation Group (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (fest)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modular)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (Backplane)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Mobilfunk" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Seriell" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Koaxial" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Stapelnd" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Halb" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Voll" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Automatisch" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Untagged" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Tagged" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Tagged (Alle)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "IEEE-Standard" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Passiv 24 V (2 Paare)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Passiv 24 V (4 Paare)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Passiv 48 V (2 Paare)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Passiv 48 V (4 Paare)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Kupfer" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Glasfaser" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Faser" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Verbunden" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Kilometer" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Meter" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Zentimeter" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Meilen" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Fuß" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Kilogramm" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Gramm" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Pfund" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Unzen" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Primär" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Redundant" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Einphasig" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Dreiphasig" @@ -2579,330 +2923,335 @@ msgstr "Ungültiges MAC-Adressformat: {value}" msgid "Invalid WWN format: {value}" msgstr "Ungültiges WWN-Format: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Übergeordnete Region (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Übergeordnete Region (URL-Slug)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Übergeordnete Standortgruppe (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Übergeordnete Standortgruppe (URL-Slug)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Gruppe (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Gruppe (URL-Slug)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "AS (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Übergeordnete Lokation (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Übergeordnete Lokation (URL-Slug)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Lokation (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Lokation (URL-Slug)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Hersteller (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Hersteller (Slug)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Regaltyp (slug)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Racktyp (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rolle (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rolle (URL-Slug)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Rack (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Benutzer (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Benutzer (Name)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Hersteller (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Hersteller (Slug)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Standard-Betriebssystem (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Standard-Betriebssystem (URL-Slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Hat ein Frontalbild" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Hat ein Rückseitenbild" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Hat Konsolenanschlüsse" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Hat Konsolenserveranschlüsse" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Hat Stromanschlüsse" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Hat Stromabgänge" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Hat Schnittstellen" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Hat durchgereichte Anschlüsse" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Hat Moduleinsätze" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Hat Geräteeinsätze" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Hat Inventargegenstände" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Gerätetyp (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Modultyp (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Stromanschluss (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Übergeordneter Inventarartikel (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Konfigurationsvorlage (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Gerätetyp (Slug)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Übergeordnetes Gerät (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Betriebssystem (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Betriebssystem (URL-Slug)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Standortname (URL-Slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Übergeordneter Schacht (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "VM-Cluster (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Clustergruppe (URL-Slug)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Clustergruppe (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Gerätemodell (URL-Slug)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Hat volle Tiefe" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC-Adresse" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Hat eine primäre IP" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Hat eine Out-of-Band-IP" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Virtuelles Gehäuse (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Ist ein virtuelles Gehäuse-Mitglied" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Hat Virtual Device Context" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Modell des Geräts" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Schnittstelle (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Modultyp (Modell)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Moduleinsatz (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Modulschacht (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Gerät (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Rack (Name)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Gerät (Name)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Gerätetyp (Modell)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Geräterolle (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Geräterolle (URL-Slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Virtuelles Gehäuse (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2911,33 +3260,33 @@ msgstr "Virtuelles Gehäuse (ID)" msgid "Virtual Chassis" msgstr "Virtuelles Gehäuse" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Modul (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Kabel (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Zugewiesenes VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "Zugewiesene VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2954,121 +3303,125 @@ msgstr "Zugewiesene VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Virtuelle Gehäuseschnittstellen für Gerät" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Virtuelle Gehäuseschnittstellen für Gerät (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Art der Schnittstelle" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Übergeordnete Schnittstelle (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Überbrückte Schnittstelle (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "LAG-Schnittstelle (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Virtual Device Context" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr " Virtual Device Context (Identifier)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "WLAN" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "WLAN Verbindung" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Hauptmodulschacht (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Installiertes Modul (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Installiertes Gerät (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Installiertes Gerät (Name)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Master (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Master (Name)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Mandant (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Mandant (URL-Slug)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Nicht terminiert" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Stromverteiler (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3076,13 +3429,13 @@ msgstr "Stromverteiler (ID)" msgid "Tags" msgstr "Tags" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3096,168 +3449,114 @@ msgstr "" "Alphanumerische Bereiche werden unterstützt. (Muss der Anzahl der Namen " "entsprechen, die erstellt werden.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Gruppe" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Name des Kontakts" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Telefon des Kontakts" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "E-Mail des Kontakts" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Zeitzone" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Rolle" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Seriennummer" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Asset-Tag" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Hersteller" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Formfaktor" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Breite" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Höhe (HE)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Absteigende Höheneinheiten (HE)" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Äußere Breite" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Äußere Tiefe" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Äußere Einheit" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Einbautiefe" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3265,31 +3564,127 @@ msgstr "Einbautiefe" msgid "Weight" msgstr "Gewicht" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Maximales Gewicht" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Gewichtseinheit" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Rack-Typ" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Äußere Abmessungen" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Abmessungen" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Nummerierung" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Rolle" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Seriennummer" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Asset-Tag" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Luftstrom" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3299,158 +3694,132 @@ msgstr "Gewichtseinheit" msgid "Rack" msgstr "Rack" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Hardware" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Hersteller" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Standard-Betriebssystem" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Artikelnummer" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Höheneinheit" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Von der Nutzung ausschließen" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Luftstrom" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Gerätetyp" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Modultyp" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Gehäuse" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "VM-Rolle" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Konfigurationsvorlage" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Gerätetyp" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Geräterolle" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Betriebssystem" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3461,7 +3830,7 @@ msgstr "Betriebssystem" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3469,7 +3838,7 @@ msgstr "Betriebssystem" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3477,7 +3846,7 @@ msgstr "Betriebssystem" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3487,23 +3856,23 @@ msgstr "Betriebssystem" msgid "Device" msgstr "Gerät" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Konfiguration" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Modultyp" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3512,7 +3881,7 @@ msgstr "Modultyp" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3521,141 +3890,142 @@ msgstr "Modultyp" msgid "Label" msgstr "Label" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Länge" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Längeneinheit" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Domäne" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Stromverteiler" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Versorgung" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Phase" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Spannung" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Stromstärke" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Max. Auslastung" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Maximale Auslastung" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Maximale Leistungsaufnahme (Watt)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Zugewiesene Leistungsaufnahme" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Zugewiesene Leistungsaufnahme (Watt)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Stromanschluss" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Phasenlage" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Nur Management" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "PoE-Modus" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE-Typ" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "WLAN Funktion" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Modul" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr " Virtual Device Contexts" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Geschwindigkeit" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3669,294 +4039,299 @@ msgstr "Geschwindigkeit" msgid "Mode" msgstr "Modus" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN-Gruppe" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "Untagged VLAN" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Getaggte VLANs" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "WLAN-Gruppe" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "WLANs" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Adressierung" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Dienst / Port" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Verwandte Schnittstellen" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "802.1Q-Switching" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "Der Schnittstellenmodus muss gesetzt werden, um VLANs zuzuweisen" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "" "Einer Endgeräteschnittstelle (Access) können keine getaggten VLANs " "zugewiesen sein." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Name der übergeordneten Region" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Name der übergeordneten Standortgruppe" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Zugewiesene Region" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Zugewiesene Gruppe" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "verfügbare Optionen" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Zugewiesener Standort" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Übergeordnete Lokation" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Lokation wurde nicht gefunden." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Name des zugewiesenen Mandanten " - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Name der zugewiesenen Rolle" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Der Hersteller dieses Racktyps" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Racktyp" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "Die Position mit der niedrigsten Nummer im Rack" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Breite von Schiene zu Schiene (in Zoll)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Einheit für Außenmaße" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Einheit für Rackgewichte" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Name des zugewiesenen Mandanten " + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Name der zugewiesenen Rolle" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Richtung des Luftstroms" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Übergeordneter Standort" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Lokation des Racks (falls vorhanden)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Einheiten" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Kommagetrennte Liste einzelner Einheitennummern" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Der Hersteller, der diesen Gerätetyp herstellt" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Das Standard-Betriebssystem für Geräte diesen Typs (optional)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Gewicht des Geräts" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Einheit für das Gerätegewicht" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Gewicht des Moduls" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Einheit für das Modulgewicht" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Betriebssystem-Zuweisungen auf diesen Hersteller beschränken" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Zugewiesene Rolle" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Gerätetyp Hersteller" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Gerätetyp Modell" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Zugewiesenes Betriebssystem" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Virtuelles Gehäuse" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Cluster" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Virtualisierungscluster" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Zugewiesene Lokation (falls vorhanden)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Zugewiesenes Rack (falls vorhanden)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Ausrichtung" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Montierte Rackseite" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Übergeordnetes Gerät (für untergeordnete Geräte)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Geräteeinsatz" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Geräteschacht, in dem dieses Gerät installiert ist (für untergeordnete " "Geräte)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Richtung des Luftstroms" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Das Gerät, in dem dieses Modul installiert ist" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Moduleinsatz" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "Der Modulschacht, in dem dieses Modul installiert ist" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Der Typ des Moduls" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Komponenten replizieren" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3964,239 +4339,239 @@ msgstr "" "Automatisches Ausfüllen von Komponenten, die diesem Modultyp zugeordnet sind" " (standardmäßig aktiviert)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Komponenten übernehmen" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Übernehmen Sie bereits bestehende Komponenten" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Anschlusstyp" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Anschlussgeschwindigkeit in Bit/s" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Ausgangstyp" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Lokaler Stromanschluss, der diese Stromabgänge speist" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Elektrische Phase (für dreiphasige Stromkreise)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Übergeordnete Schnittstelle" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Überbrückte Schnittstelle" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Lag" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Übergeordnete LAG-Schnittstelle" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Vdcs" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "VDC-Namen, getrennt durch Kommas, umgeben von doppelten Anführungszeichen. " "Beispiel:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Physikalisches Medium" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Duplex" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "PoE-Modus" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "PoE-Typ" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "IEEE 802.1Q-Betriebsmodus (für L2-Schnittstellen)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Zugewiesenes VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Rf-Rolle" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "WLAN Rolle (AP/Station)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} ist dem Gerät {device} nicht zugewiesen" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Rückseitenanschluss" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Entsprechender Rückanschluss" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Klassifizierung des physikalischen Mediums" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Installiertes Gerät" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "In diesem Schacht installiertes untergeordnetes Gerät" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Untergeordnetes Gerät wurde nicht gefunden." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Artikel aus dem übergeordneten Inventar" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Komponententyp" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Komponententyp" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Name der Komponente" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Name der Komponente" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Komponente wurde nicht gefunden: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Gerät Seite A" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Name des Geräts" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Typ Seite A" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Typ des Abschlusspunktes" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Name der Seite A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Name des Abschlusspunktes" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Gerät Seite B" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Typ Seite B" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Name der Seite B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Status der Verbindung" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "" "Seite {side_upper}: {device} {termination_object} ist bereits verbunden" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} Seitlicher Abschluss nicht gefunden: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Master" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Mastergerät" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Name des übergeordneten Standorts" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "vorgeschalteter Stromverteiler" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Primär oder redundant" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Versorgungsart (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Ein- oder Dreiphasig" @@ -4217,7 +4592,7 @@ msgstr "" "übergeordnete Gerät/die übergeordnete VM der Schnittstelle, oder sie müssen " "global sein" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4225,18 +4600,27 @@ msgstr "" "Das Modul mit Platzhalterwerten kann nicht in einem Modulschacht ohne " "definierte Position installiert werden." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Modul mit Platzhalterwerten kann nicht in einem Modul-Baytree installiert " +"werden {level} in einem Baum, aber {tokens} Platzhalter angegeben." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "" "Kann nicht adoptieren {model} {name} da es schon zu einem Modul gehört" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "Ein {model} genannt {name} existiert bereits" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4245,7 +4629,7 @@ msgstr "Ein {model} genannt {name} existiert bereits" msgid "Power Panel" msgstr "Stromverteiler" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4255,15 +4639,15 @@ msgstr "Stromzufuhr" msgid "Side" msgstr "Seite" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Gerätestatus" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Übergeordnete Region" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4271,62 +4655,67 @@ msgstr "Übergeordnete Region" msgid "Parent group" msgstr "Übergeordnete Gruppe" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Einrichtung" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Racktyp" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Funktion" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Bilder" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Komponenten" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Rolle des Untergeräts" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Modell" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Hat eine OOB-IP" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Virtuelles Gehäusemitglied" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Hat Virtual Device Contexts" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Clustergruppe" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Verkabelt" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Belegt" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4338,43 +4727,43 @@ msgstr "Belegt" msgid "Connection" msgstr "Verbindung" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Art" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Nur Verwaltung" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "WLAN Kanal" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Kanalfrequenz (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Kanalbreite (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Sendeleistung (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4384,7 +4773,7 @@ msgstr "Sendeleistung (dBm)" msgid "Cable" msgstr "Kabel" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Erfasst" @@ -4393,28 +4782,31 @@ msgstr "Erfasst" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Ein virtuelles Chassismitglied ist bereits in Position {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Kontaktinformationen" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Rackrolle" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Inventarsteuerung" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "URL-Slug" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Äußere Abmessungen" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Wählen Sie einen vordefinierten Racktyp oder legen Sie unten die " +"physikalischen Eigenschaften fest." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Abmessungen" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Inventarsteuerung" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4422,95 +4814,72 @@ msgstr "" "Kommagetrennte Liste numerischer Einheiten-IDs. Ein Bereich kann mit einem " "Bindestrich angegeben werden." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Reservierung" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "URL-Slug" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Gehäuse" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Rolle des Geräts" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "Die HE mit der niedrigsten Nummer, die vom Gerät belegt ist" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" "Die Position im virtuellen Gehäuse, durch die dieses Gerät identifiziert " "wird" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Priorität" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "Die Priorität des Geräts im virtuellen Gehäuse" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "" "Füllen Sie automatisch Komponenten aus, die diesem Modultyp zugeordnet sind" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "Die maximale Länge beträgt 32767 (jede Einheit)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Charakteristiken" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Konsolenanschlussvorlage" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Port-Vorlage für Konsolenserver" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Frontanschluss-Vorlage" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Schnittstellen-Vorlage" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Vorlage für Stromabgänge" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Vorlage für Stromverteiler" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Vorlage für den hinteren Anschluss" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4521,7 +4890,7 @@ msgstr "Vorlage für den hinteren Anschluss" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4530,7 +4899,7 @@ msgstr "Vorlage für den hinteren Anschluss" msgid "Interface" msgstr "Schnittstelle" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4538,14 +4907,14 @@ msgstr "Schnittstelle" msgid "Console Port" msgstr "Konsolenanschluss" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Konsolenserveranschluss" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4556,8 +4925,8 @@ msgstr "Konsolenserveranschluss" msgid "Front Port" msgstr "Frontanschluss" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4569,37 +4938,37 @@ msgstr "Frontanschluss" msgid "Rear Port" msgstr "Rückanschluss" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Stromanschluss" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Stromabgang" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Komponentenzuweisung" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "" "Ein InventoryItem kann nur einer einzelnen Komponente zugewiesen werden." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "LAG-Schnittstelle" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "untergeordnetes Gerät" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4607,41 +4976,41 @@ msgstr "" "Untergeordnete Geräte müssen zuerst erstellt und dem Standort und dem Rack " "des übergeordneten Geräts zugewiesen werden." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Konsolenanschluss" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Konsolenserveranschluss" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Frontanschluss" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Stromabgang" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Inventar-Artikel" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Rolle des Inventarartikels" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "Primäre IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "Primäre IPv6" @@ -4705,7 +5074,7 @@ msgstr "" "der ausgewählten Anzahl der hinteren Anschlusspositionen übereinstimmen " "({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4731,7 +5100,7 @@ msgstr "Für das erste VC-Mitglied muss eine Position angegeben werden." #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "Label" @@ -4865,41 +5234,41 @@ msgstr "" "Eine Komponentenvorlage muss entweder einem Gerätetyp oder einem Modultyp " "zugeordnet sein." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "Vorlage für Konsolenanschluss" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "Vorlagen für Konsolenanschlüsse" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "Portvorlage für Konsolenserver" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "Portvorlagen für Konsolenserver" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "maximale Leistungsaufnahme" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "zugewiesene Leistungsaufnahme" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "Vorlage für Stromanschluss" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "Vorlagen für Stromanschlüsse" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -4907,96 +5276,96 @@ msgstr "" "Die zugewiesene Leistungsaufnahme darf die maximale Leistung " "({maximum_draw}W) nicht überschreiten." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "Phasenlage" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Phase (bei dreiphasiger Stromzufuhr)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "Vorlage für Stromabgang" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "Vorlagen für Stromabgänge" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Übergeordneter Stromanschluss ({power_port}) muss zum gleichen Gerätetyp " "gehören" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Übergeordneter Stromanschluss ({power_port}) muss zum gleichen Modultyp " "gehören" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "Nur Verwaltung" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "Bridge-Schnittstelle" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "WLAN Rolle" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "Schnittstellenvorlage" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "Schnittstellenvorlagen" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Eine Schnittstelle kann nicht zu sich selbst überbrückt werden." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Bridge-Schnittstelle ({bridge}) muss zum gleichen Gerätetyp gehören" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Bridge-Schnittstelle ({bridge}) muss zum gleichen Modultyp gehören" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "Position des Rückanschlusses" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "Frontanschluss-Vorlage" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "Frontanschluss-Vorlagen" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Hinterer Anschluss ({name}) muss zum gleichen Gerätetyp gehören" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -5005,47 +5374,47 @@ msgstr "" "Ungültige Position des hinteren Anschlusses ({position}); hinterer Anschluss" " {name} hat nur {count} Positionen" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "Positionen" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "Vorlage für den Rückanschluss" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "Vorlagen für Rückanschlüsse" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "Position" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Bezeichner, auf den beim Umbenennen installierter Komponenten verwiesen wird" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "Vorlage für Moduleinsatz" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "Vorlagen für Moduleinsätze" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "Vorlage für Geräteeinsatz" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "Vorlagen für Geräteeinsätze" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5054,21 +5423,21 @@ msgstr "" "Untergeräterolle des Gerätetyps ({device_type}) muss auf „Übergeordnet“ " "gesetzt sein, um Geräteschächte zuzulassen." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "Teile-ID" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Vom Hersteller zugewiesene Teile-ID" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "Vorlage für Inventarartikel" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "Vorlagen für Inventarartikel" @@ -5214,27 +5583,27 @@ msgstr "Wird vom ausgewählten Kanal aufgefüllt (falls gesetzt)" msgid "transmit power (dBm)" msgstr "Sendeleistung (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "WLANs" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "untagged VLAN" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "tagged VLANs" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "Schnittstelle" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "Schnittstellen" @@ -5251,7 +5620,7 @@ msgstr "" "{display_type} Schnittstellen können nicht als verbunden markiert werden." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "" "Eine Schnittstelle kann nicht seine eigene übergeordnete Schnittstelle sein." @@ -5424,32 +5793,38 @@ msgstr "" "Die Anzahl der Positionen darf nicht kleiner sein als die Anzahl der " "zugewiesenen Vorderanschlüsse ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "Moduleinsatz" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "Moduleinsätze" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "" +"Ein Modulschacht kann nicht zu einem darin installierten Modul gehören." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "Geräteeinsatz" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "Geräteeinsätze" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "Dieser Gerätetyp ({device_type}) unterstützt keine Geräteeinsätze." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Ein Gerät kann nicht in sich selbst installiert werden." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5457,63 +5832,64 @@ msgstr "" "Das angegebene Gerät kann nicht installiert werden; Das Gerät ist bereits " "installiert in {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "Inventarartikelrolle" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "Inventarartikelrollen" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "Seriennummer" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "Asset-Tag" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "" "Ein eindeutiges Etikett, das zur Identifizierung dieses Artikels verwendet " "wird" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "erkannt" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Dieser Artikel wurde automatisch erkannt" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "Inventarartikel" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "Inventarartikel" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Kann sich nicht als übergeordnetes Objekt zuweisen." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "Der Artikel im übergeordneten Inventar gehört nicht zum selben Gerät." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "" "Ein Inventargegenstand mit untergeordneten Inventargegenständen kann nicht " "bewegt werden" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "" "Inventargegenstand kann nicht einer Komponente auf einem anderen Gerät " @@ -5528,6 +5904,7 @@ msgid "manufacturers" msgstr "Hersteller" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "Modell" @@ -5543,7 +5920,7 @@ msgstr "Teilenummer" msgid "Discrete part number (optional)" msgstr "Diskrete Teilenummer (optional)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "Höhe (HE)" @@ -5579,7 +5956,8 @@ msgstr "" "untergebracht. Lassen Sie das Feld leer, wenn es sich bei diesem Gerätetyp " "weder um ein übergeordnetes noch um ein untergeordnetes handelt." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "Luftstrom" @@ -5627,152 +6005,152 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Untergeordnete Gerätetypen müssen 0 HE sein." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "Modultyp" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "Modultypen" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Virtuelle Maschinen können dieser Rolle zugewiesen werden" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "Geräterolle" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "Geräterollen" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Beschränken Sie dieses Betriebssystem optional auf Geräte eines bestimmten " "Herstellers" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "Betriebssystem" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "Betriebssysteme" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "Die Funktion, die dieses Gerät erfüllt" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "vom Hersteller vergebene Gehäuse-Seriennummer" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "" "Ein eindeutiger Wert, der zur Identifizierung dieses Geräts verwendet wird" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "Position (HE)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "Rackseite" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "primäre IPv4-Adresse" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "primäre IPv6-Adresse" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "Out-of-Band-IP-Adresse" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "VC-Position" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Position des virtuellen Gehäuses" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "VC-Priorität" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Priorität bei der Masterwahl für virtuelle Gehäuse" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "Breitengrad" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "GPS-Koordinate im Dezimalformat (xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "Längengrad" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Der Name des Geräts muss pro Standort eindeutig sein." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "Gerät" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "Geräte" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Rack {rack} gehört nicht zum Standort {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Lokation {location} gehört nicht zum Standort {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Rack {rack} gehört nicht zur Lokation {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "" "Es ist nicht möglich, eine Rackseite auszuwählen, ohne ein Rack zuzuweisen." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "" "Es ist nicht möglich, eine Rackposition auszuwählen, ohne ein Rack " "zuzuweisen." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "Die Position muss in Schritten von 0,5 Höheneinheiten erfolgen." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" "Bei der Definition der Rackposition muss die Rackseite angegeben werden." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -5780,7 +6158,7 @@ msgstr "" "Ein 0 HE-Gerätetyp ({device_type}) kann keiner Höheneinheit zugewiesen " "werden." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5788,7 +6166,7 @@ msgstr "" "Untergeordnete Gerätetypen können keiner Rackseite zugewiesen werden. Dies " "ist ein Attribut des übergeordneten Geräts." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5796,7 +6174,7 @@ msgstr "" "Untergeordnete Gerätetypen können keiner Rackposition zugewiesen werden. " "Dies ist ein Attribut des übergeordneten Geräts." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5805,22 +6183,22 @@ msgstr "" "HE{position} ist bereits belegt oder verfügt nicht über ausreichend " "Speicherplatz für diesen Gerätetyp: {device_type} ({u_height}HE)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} ist keine IPv4-Adresse." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Die angegebene IP-Adresse ({ip}) ist diesem Gerät nicht zugewiesen." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} ist keine IPv6-Adresse." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5829,26 +6207,26 @@ msgstr "" "Das zugewiesene Betriebssystem ist beschränkt auf {platform_manufacturer} " "Gerätetypen, aber der Typ dieses Geräts gehört zu {devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Der zugewiesene Cluster gehört zu einem anderen Standort ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Die Position eines Geräts, das einem virtuellen Gehäuse zugewiesen ist, muss" " definiert sein." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "Modul" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "Module" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5857,15 +6235,15 @@ msgstr "" "Das Modul muss in einem Modulschacht installiert werden, der zum " "zugewiesenen Gerät gehört ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "Domäne" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "virtuelles Gehäuse" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." @@ -5873,7 +6251,7 @@ msgstr "" "Der gewählte Master ({master}) ist diesem virtuellen Chassis nicht " "zugewiesen." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5882,41 +6260,41 @@ msgstr "" "Das virtuelle Gehäuse kann nicht gelöscht werden {self}. Es gibt " "Mitgliedsschnittstellen, die gehäuseübergreifende LAG-Schnittstellen bilden." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identifizieren" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Numerische Kennung, die für das übergeordnete Gerät eindeutig ist" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "Kommentare" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr " Virtual Device Context" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr " Virtual Device Context" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} ist keine IPv{family}-Adresse." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "Die primäre IP-Adresse muss zu einer Schnittstelle auf dem zugewiesenen " "Gerät gehören." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "Gewicht" @@ -5995,95 +6373,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "Die Spannung darf für die Wechselstromversorgung nicht negativ sein" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "Rolle des Rack" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "Rackrollen" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "Einrichtungs-ID" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Lokal zugewiesener Bezeichner" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Funktionelle Rolle" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "" -"Ein eindeutiger Wert, das zur Identifizierung dieses Racks verwendet wird" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "Breite" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Breite von Schiene zu Schiene" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Höhe in Höheneinheiten (HE)" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "Start HE" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Start HE für Rack" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "absteigende Höheneinheiten" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Die Höheneinheiten sind von oben nach unten nummeriert" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "äußere Breite" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Außenabmessungen des Racks (Breite)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "äußere Tiefe" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Außenabmessung des Racks (Tiefe)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "Maßeinheit" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "maximales Gewicht" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Maximale Tragfähigkeit des Racks" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "Einbautiefe" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6091,31 +6433,79 @@ msgstr "" "Maximale Tiefe eines montierten Geräts in Millimetern. Bei Racks mit vier " "Pfosten ist dies der Abstand zwischen den vorderen und hinteren Schienen." -#: netbox/dcim/models/racks.py:221 -msgid "rack" -msgstr "Rack" +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "maximales Gewicht" -#: netbox/dcim/models/racks.py:222 -msgid "racks" -msgstr "Racks" +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Maximale Tragfähigkeit des Racks" -#: netbox/dcim/models/racks.py:237 -#, python-brace-format -msgid "Assigned location must belong to parent site ({site})." -msgstr "" -"Die zugewiesene Lokation muss zum übergeordneten Standort gehören ({site})." +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "Formfaktor" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "Racktyp" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "Racktypen" -#: netbox/dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" "Muss eine Einheit angeben, wenn eine äußere Breite/Tiefe eingestellt wird" -#: netbox/dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "" "Bei der Einstellung eines Höchstgewichts muss eine Einheit angegeben werden" -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "Rolle des Rack" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "Rackrollen" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "Einrichtungs-ID" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Lokal zugewiesener Bezeichner" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Funktionelle Rolle" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "" +"Ein eindeutiger Wert, das zur Identifizierung dieses Racks verwendet wird" + +#: netbox/dcim/models/racks.py:359 +msgid "rack" +msgstr "Rack" + +#: netbox/dcim/models/racks.py:360 +msgid "racks" +msgstr "Racks" + +#: netbox/dcim/models/racks.py:375 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "" +"Die zugewiesene Lokation muss zum übergeordneten Standort gehören ({site})." + +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6124,7 +6514,7 @@ msgstr "" "Das Rack muss mindestens {min_height}HE groß sein, um aktuell installierten " "Geräte unterzubringen." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6133,29 +6523,29 @@ msgstr "" "Die Nummerierung der Höheneinheiten muss bei {position} oder weniger " "beginnen, um die aktuell installierten Geräte unterzubringen." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "Die Lokation muss vom selben Standort stammen, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "Einheiten" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "HE-Reservierung" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "HE-Reservierungen" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Ungültige Einheit(en) für {height}HE Rack: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Die folgenden Einheiten wurden bereits reserviert: {unit_list}" @@ -6268,11 +6658,11 @@ msgstr "Abschlusspunkt A" msgid "Termination B" msgstr "Abschlusspunkt B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Gerät A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Gerät B" @@ -6307,13 +6697,13 @@ msgid "Reachable" msgstr "Erreichbar" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Geräte" @@ -6323,17 +6713,17 @@ msgid "VMs" msgstr "VMs" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Konfigvorlage" @@ -6341,22 +6731,22 @@ msgstr "Konfigvorlage" msgid "Site Group" msgstr "Standortgruppe" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP-Adresse" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "IPv4-Adresse" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "IPv6-Adresse" @@ -6393,10 +6783,10 @@ msgstr "Stromanschlüsse" msgid "Power outlets" msgstr "Stromabgänge" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6406,8 +6796,8 @@ msgstr "Stromabgänge" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Schnittstellen" @@ -6433,8 +6823,8 @@ msgid "Module Bay" msgstr "Moduleinsatz" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6443,30 +6833,30 @@ msgstr "Moduleinsatz" msgid "Inventory Items" msgstr "Inventarartikel" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Farbe des Kabels" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Verbindungsenden" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Als verbunden markieren" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Maximaler Stromverbrauch (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Zugewiesener Stromverbrauch (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6475,12 +6865,12 @@ msgstr "Zugewiesener Stromverbrauch (W)" msgid "IP Addresses" msgstr "IP-Adressen" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP-Gruppen" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6491,52 +6881,52 @@ msgstr "FHRP-Gruppen" msgid "Tunnel" msgstr "Tunnel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Nur zur Verwaltung" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDCs" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Installiertes Modul" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Seriennummer des Moduls" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Modul-Asset-Tag" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Status des Moduls" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Komponente" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Artikel" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Gerätetypen" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Modul-Typen" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Plattformen" @@ -6555,12 +6945,13 @@ msgid "U Height" msgstr "Höhe in HE" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Instanzen" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6569,9 +6960,9 @@ msgstr "Instanzen" msgid "Console Ports" msgstr "Konsolenanschlüsse" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6580,9 +6971,9 @@ msgstr "Konsolenanschlüsse" msgid "Console Server Ports" msgstr "Konsolenserveranschlüsse" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6591,9 +6982,9 @@ msgstr "Konsolenserveranschlüsse" msgid "Power Ports" msgstr "Stromanschlüsse" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6602,9 +6993,9 @@ msgstr "Stromanschlüsse" msgid "Power Outlets" msgstr "Steckdosen" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6612,9 +7003,9 @@ msgstr "Steckdosen" msgid "Front Ports" msgstr "Frontanschlüsse" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6623,23 +7014,26 @@ msgstr "Frontanschlüsse" msgid "Rear Ports" msgstr "Rückanschlüsse" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Geräte-Einsätze" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Modul-Einsätze" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Stromzufuhren" @@ -6652,41 +7046,45 @@ msgstr "Max. Auslastung" msgid "Available Power (VA)" msgstr "Verfügbare Leistung (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Racks" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Höhe" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Platz" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Äußere Breite" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Äußere Tiefe" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Maximales Gewicht" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Platz" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Standorte" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "Der Testfall muss peer_termination_type setzen" @@ -6695,80 +7093,80 @@ msgstr "Der Testfall muss peer_termination_type setzen" msgid "Disconnected {count} {type}" msgstr "Verbindung von {count} {type} unterbrochen" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Reservierungen" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Nicht in einem Rack befindliche Geräte" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Config-Kontext" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Konfiguration rendern" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Ein Fehler ist beim Rendern der Vorlage aufgetreten: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Virtuelle Maschinen" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Gerät {device} im Schacht {device_bay} installiert." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Gerät {device} im Schacht {device_bay} entfernt." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Untergeordnet" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Mitglied hinzugefügt {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Ein Hauptgerät (Master Device) {device} kann von einem virtuellen Gehäuse " "nicht entfernt werden." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "{device} vom virtuellen Gehäuse {chassis} entfernt." -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Unbekanntes verwandtes Objekt (e): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "" "Das Ändern des Typs von benutzerdefinierten Feldern wird nicht unterstützt." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "Die Planung ist für dieses Skript nicht aktiviert." @@ -6817,7 +7215,7 @@ msgid "Multiple objects" msgstr "Mehrere Objekte" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Deaktiviert" @@ -6852,7 +7250,7 @@ msgstr "Nein" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Link" @@ -6872,65 +7270,56 @@ msgstr "Alphabetisch (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Alphabetisch (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Aktualisiert" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Gelöscht" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Info" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Erfolg" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Warnung" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Gefahr" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Debug" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Standard" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Fehlschlag" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Stündlich" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 Stunden" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "täglich" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Wöchentlich" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 Tage" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6938,18 +7327,16 @@ msgstr "30 Tage" msgid "Create" msgstr "Erstellen" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Aktualisieren" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6960,81 +7347,85 @@ msgstr "Aktualisieren" msgid "Delete" msgstr "Löschen" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Blau" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Indigo" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Purpur" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Pink" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Rot" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "Orange" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Gelb" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Grün" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Türkis" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Cyanblau" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Grau" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Schwarz" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Weiß" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Skript" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Benachrichtigung" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7109,60 +7500,60 @@ msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "" "Ungültiges Format. Objektfilter müssen als Wörterbuch übergeben werden." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Liste der Objekte" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Zeigt eine beliebige Liste von Objekten an." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Die Standardanzahl der anzuzeigenden Objekte" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" "Ungültiges Format. URL-Parameter müssen als Wörterbuch übergeben werden." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS-Feed" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Betten Sie einen RSS-Feed von einer externen Website ein." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "Feed-URL" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Die maximale Anzahl der anzuzeigenden Objekte" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Wie lange soll der Inhalt zwischengespeichert werden (in Sekunden)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Lesezeichen" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Zeige persönliche Lesezeichen an" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Unbekannter Aktionstyp für eine Ereignisregel: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Event-Pipeline kann nicht importiert werden {name} Fehler: {error}" @@ -7171,215 +7562,224 @@ msgstr "Event-Pipeline kann nicht importiert werden {name} Fehler: {error}" msgid "Script module (ID)" msgstr "Skriptmodul (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Datei (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Gruppe (Name)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Clustertyp" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Clustertyp (URL-Slug)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Mandantengruppe" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Mandantengruppe (URL-Slug)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Schlagwort" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Schlagwort (URL-Slug)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Hat lokale Konfigurationskontextdaten" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Benutzername" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Name der Gruppe" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Erforderlich" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Muss einzigartig sein" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "UI sichtbar" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "UI editierbar" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Ist klonbar" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Minimaler Wert" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Maximaler Wert" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Regex für die Überprüfung" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Verhalten" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Neues Fenster" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Button-Klasse" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "MIME-Typ" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Dateiendung" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Als Anlage" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Geteilt" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "HTTP-Method" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "Payload-URL" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "SSL-Verifizierung" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Secret" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "CA-Dateipfad" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Beim Erstellen" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "Beim Update" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Beim Löschen" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Ereignistypen" -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "Bei Arbeitsbeginn" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "Am Ende des Auftrags" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Ist aktiv" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Typen von Objekten" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Ein oder mehrere zugewiesene Objekttypen" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Felddatentyp (z. B. Text, Integer usw.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Typ des Objekts" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Objekttyp (für Objekt- oder Mehrfachobjektfelder)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Auswahlset" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Auswahlset (für Auswahlfelder)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "" "Ob das benutzerdefinierte Feld in der Benutzeroberfläche angezeigt wird" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "" "Ob das benutzerdefinierte Feld in der Benutzeroberfläche bearbeitet werden " "kann" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "" "Der Basissatz vordefinierter Auswahlmöglichkeiten, die verwendet werden " "sollen (falls vorhanden)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7388,206 +7788,204 @@ msgstr "" "optionalen Bezeichnungen, die durch einen Doppelpunkt getrennt sind: " "„Choice1:First Choice, Choice2:Second Choice“" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "Button-Klasse" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "Die Klasse des ersten Links in einer Gruppe wird für den Dropdown-Button " "verwendet" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Die Ereignistypen, die diese Regel auslösen" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Aktionsobjekt" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Webhook-Name oder Skript als gepunkteter Pfad module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} nicht gefunden" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Skript {name} nicht gefunden" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Zugewiesener Objekttyp" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "Die Klassifizierung der Einreise" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Benutzer" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "" +"Durch Kommas getrennte Benutzernamen, umgeben von doppelten " +"Anführungszeichen" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Gruppen" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "" +"Gruppennamen, getrennt durch Kommas, umgeben von doppelten Anführungszeichen" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Verwandter Objekttyp" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Feld-Typ" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Auswahlmöglichkeiten" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Daten" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Datei" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Inhaltstypen" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "HTTP-Inhaltstyp" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Ereignisse" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "Ereignistyp" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "Typ der Aktion" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Objekterstellungen" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Objektaktualisierungen" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Objektlöschungen" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Job beginnt" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Job Abschluss" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Typ des markierten Objekts" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Erlaubter Objekttyp" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Regionen" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Standortgruppen" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Lokationen" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Gerätetypen" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Rollen" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Clustertypen" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Clustergruppen" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Cluster" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Mandantengruppen" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Nach" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Vorher" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Zeit" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Die Objekttypen, die dieses benutzerdefinierte Feld haben" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Aktion" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Vorgabewert" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "Typ des zugehörigen Objekts (nur für Objekt-/Mehrfachobjektfelder)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Filter für verwandte Objekte" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Geben Sie Abfrageparameter als JSON-Objekt an." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Benutzerdefiniertes Feld" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Verhalten" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Werte" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7595,7 +7993,7 @@ msgstr "" "Die Art der in diesem Feld gespeicherten Daten. Wählen Sie für " "Objekt-/Multiobjekt-Felder unten den zugehörigen Objekttyp aus." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7603,7 +8001,11 @@ msgstr "" "Dies wird als Hilfetext für das Formularfeld angezeigt. Markdown wird " "unterstützt." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Verwandtes Objekt" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7612,16 +8014,16 @@ msgstr "" "Bezeichnung angegeben werden, indem ein Doppelpunkt angehängt wird. " "Beispiel:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Benutzerdefinierter Link" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Vorlagen" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7631,7 +8033,7 @@ msgstr "" "{example}. Links, die als leerer Text dargestellt werden, werden nicht " "angezeigt." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." @@ -7639,57 +8041,63 @@ msgstr "" "Jinja2-Vorlagencode für die Link-URL. Verweisen Sie auf das Objekt als " "{example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Vorlagencode" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Vorlage exportieren" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Rendern" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "Der Vorlageninhalt wird aus der unten ausgewählten Remote-Quelle gefüllt." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Muss entweder lokalen Inhalt oder eine Datendatei angeben" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Gespeicherter Filter" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "" +"Eine Benachrichtigungsgruppe muss mindestens einen Benutzer oder eine Gruppe" +" haben." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "HTTP-Request" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Wahl der Aktion" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "" "Geben Sie die Bedingungen ein in JSON " "formatieren." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7697,55 +8105,33 @@ msgstr "" "Geben Sie Parameter ein, die an die Aktion übergeben werden sollen JSON formatieren." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Event-Regel" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Dienst" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Erstellungen" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Aktualisierungen" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Trigger" -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Löschungen" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Benachrichtigungsgruppe" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Auftragsausführungen" - -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Mandanten" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Zuweisung" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "Die Daten werden aus der unten ausgewählten Remote-Quelle gefüllt." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Muss entweder lokale Daten oder eine Datendatei angeben" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Inhalt" @@ -7793,49 +8179,25 @@ msgstr "Planen Sie die Ausführung des Skripts auf eine festgelegte Zeit" msgid "Interval at which this script is re-run (in minutes)" msgstr "Intervall, in dem dieses Skript erneut ausgeführt wird (in Minuten)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Keine Indexer gefunden!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "Zeit" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "Benutzername" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "Anfrage-ID" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "Aktion" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "Daten vor der Änderung" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Datenbankänderungen wurden automatisch rückgängig gemacht." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "Daten nach der Änderung" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Das Skript wurde mit einem Fehler abgebrochen: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "Objekt ändern" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Eine Ausnahme ist aufgetreten: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "Objektänderungen" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Datenbankänderungen wurden aufgrund eines Fehlers rückgängig gemacht." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "" -"Die Änderungsprotokollierung wird für diesen Objekttyp nicht unterstützt " -"({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Keine Indexer gefunden!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7887,35 +8249,35 @@ msgstr "Konfigurationsvorlage" msgid "config templates" msgstr "Konfigurationsvorlagen" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Die Objekte, für die dieses Feld gilt." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Der Datentyp, den dieses benutzerdefinierte Feld enthält" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "Der Typ des NetBox-Objekts, dem dieses Feld zugeordnet ist (für " "Objektfelder)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Interner Feldname" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Nur alphanumerische Zeichen und Unterstriche sind zulässig." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "Doppelte Unterstriche sind in den Namen benutzerdefinierter Felder nicht " "zulässig." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7923,33 +8285,42 @@ msgstr "" "Name des Feldes, wie er den Benutzern angezeigt wird (falls nicht angegeben," " wird der Name des Felds verwendet)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "Name der Gruppe" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "" "Benutzerdefinierte Felder innerhalb derselben Gruppe werden zusammen " "angezeigt" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "erforderlich" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." +msgstr "" +"Dieses Feld ist erforderlich, wenn Sie neue Objekte erstellen oder ein " +"vorhandenes Objekt bearbeiten." + +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "muss einzigartig sein" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" msgstr "" -"Wenn wahr, ist dieses Feld erforderlich, wenn Sie neue Objekte erstellen " -"oder ein vorhandenes Objekt bearbeiten." +"Der Wert dieses Feldes muss für das zugewiesene Objekt eindeutig sein." -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "Gewichtung der Suche" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7957,11 +8328,11 @@ msgstr "" "Gewichtung für die Suche. Niedrigere Werte werden als wichtiger angesehen. " "Felder mit einem Suchgewicht von Null werden ignoriert." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "Filterlogik" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7969,11 +8340,11 @@ msgstr "" "Loose entspricht einer beliebigen Instanz einer bestimmten Zeichenfolge; " "exact entspricht dem gesamten Feld." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "Standard" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7981,36 +8352,45 @@ msgstr "" "Standardwert für das Feld (muss ein JSON-Wert sein). Kapsele Zeichenketten " "mit doppelten Anführungszeichen ein (z. B. „Foo“)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filtern Sie die Objektauswahlmöglichkeiten mit einem query_params-Diktat " +"(muss ein JSON-Wert sein). Kapseln Sie Zeichenketten mit doppelten " +"Anführungszeichen ein (z. B. „Foo“)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "Gewicht anzeigen" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "" "Felder mit höheren Gewichten werden in einem Formular niedriger angezeigt." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "minimaler Wert" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Zulässiger Mindestwert (für numerische Felder)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "maximaler Wert" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Zulässiger Maximalwert (für numerische Felder)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "Regex für die Validierung" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -8022,280 +8402,251 @@ msgstr "" "Beispiel ^ [A-Z]{3}$ begrenzt die Werte auf genau drei " "Großbuchstaben." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "Auswahlset" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Gibt an, ob das benutzerdefinierte Feld in der Benutzeroberfläche angezeigt " "wird" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Gibt an, ob der Wert des benutzerdefinierten Felds in der Benutzeroberfläche" " bearbeitet werden kann." -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "ist klonbar" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Replizieren Sie diesen Wert beim Klonen von Objekten" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "benutzerdefiniertes Feld" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "benutzerdefinierte Felder" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Ungültiger Standardwert \"{value}\": {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "Ein Mindestwert kann nur für numerische Felder festgelegt werden" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "Ein Maximalwert kann nur für numerische Felder festgelegt werden" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Die Überprüfung regulärer Ausdrücke wird nur für Text- und URL-Felder " "unterstützt" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "Eindeutigkeit kann für boolesche Felder nicht erzwungen werden" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Auswahlfelder müssen eine Reihe von Auswahlmöglichkeiten enthalten." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Auswahlmöglichkeiten können nur für Auswahlfelder festgelegt werden." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Objektfelder müssen einen Objekttyp definieren." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} Felder definieren möglicherweise keinen Objekttyp." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "" +"Ein verwandter Objektfilter kann nur für Objektfelder definiert werden." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Der Filter muss als Wörterbuch definiert werden, das Attributen Werten " +"zuordnet." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Wahr" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Falsch" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" "Die Werte müssen mit diesem Regex übereinstimmen: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "Der Wert muss eine Zeichenfolge sein." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "Wert muss mit Regex '{regex}' übereinstimmen" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "Der Wert muss eine Ganzzahl sein." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "Wert muss mindestens {minimum} sein" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "Wert darf nicht {maximum} überschreiten" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "Der Wert muss eine Dezimalzahl sein." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "Der Wert muss wahr oder falsch sein." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Datumswerte müssen im ISO 8601-Format (JJJJ-MM-DD) vorliegen." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Datums- und Uhrzeitwerte müssen im ISO 8601-Format (JJJJ-MM-DD HH:MM:SS) " "vorliegen." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Ungültige Auswahl ({value}) für Auswahlsatz {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Ungültige Auswahl (en) ({value}) für Auswahlsatz {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "Der Wert muss eine Objekt-ID sein, nicht {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "Der Wert muss eine Liste von Objekt-IDs sein, nicht {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Ungültige Objekt-ID gefunden: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Das erforderliche Feld darf nicht leer sein." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Basissatz vordefinierter Auswahlmöglichkeiten (optional)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Die Auswahlmöglichkeiten werden automatisch alphabetisch sortiert" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "benutzerdefinierter Feldauswahlsatz" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "benutzerdefinierte Feldauswahlsätze" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Muss Basis- oder zusätzliche Auswahlmöglichkeiten definieren." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "Layout" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "Konfiguration" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "Dashboard" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "Dashboards" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "Objekttypen" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Die Objekte, für die diese Regel gilt." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "beim Erstellen" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Wird ausgelöst, wenn ein passendes Objekt erstellt wird." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "beim Update" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Wird ausgelöst, wenn ein passendes Objekt aktualisiert wird." +msgid "The types of event which will trigger this rule." +msgstr "Die Ereignistypen, die diese Regel auslösen." -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "beim Löschen" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Wird ausgelöst, wenn ein passendes Objekt gelöscht wird." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "bei Arbeitsbeginn" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Wird ausgelöst, wenn ein Job für ein passendes Objekt gestartet wird." - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "am Ende des Auftrags" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Wird ausgelöst, wenn ein Job für ein passendes Objekt beendet wird." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "Dienste" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "" "Eine Reihe von Bedingungen, die bestimmen, ob das Ereignis generiert wird." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "Aktionstyp" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Zusätzliche Daten, die an das Aktionsobjekt übergeben werden" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "Eventregel" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "Eventregeln" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Es muss mindestens ein Ereignistyp ausgewählt werden: Erstellen, " -"Aktualisieren, Löschen, Jobstart und/oder Jobende." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8305,7 +8656,7 @@ msgstr "" "definiert wurde. Die Verarbeitung von Jinja2-Vorlagen wird im gleichen " "Kontext wie der Anforderungstext unterstützt." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available hier." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "zusätzliche Kopfzeilen" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8331,11 +8682,11 @@ msgstr "" "definiert werden Name: Wert. Die Jinja2-Vorlagenverarbeitung " "wird im gleichen Kontext wie der Anforderungstext (unten) unterstützt." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "Körperschablone" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8348,11 +8699,11 @@ msgstr "" "Modell, Zeitstempel, Nutzername, " "Anforderungs_ID, und Daten." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "Geheimer Schlüssel" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8363,16 +8714,16 @@ msgstr "" "Geheimnis als Schlüssel verwendet wird. Das Geheimnis wird in der Anfrage " "nicht übertragen." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" "Aktivieren Sie die SSL-Zertifikatsüberprüfung. Mit Vorsicht deaktivieren!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "CA-Dateipfad" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8381,65 +8732,65 @@ msgstr "" "werden soll. Lassen Sie das Feld leer, um die Systemstandardwerte zu " "verwenden." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "Webhook" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "Webhooks" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "Geben Sie keine CA-Zertifikatsdatei an, wenn die SSL-Überprüfung deaktiviert" " ist." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Die Objekttyp (en), für die dieser Link gilt." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "Linktext" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Jinja2-Vorlagencode für Linktext" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "Link-URL" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Jinja2-Vorlagencode für Link-URL" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Links mit derselben Gruppe werden als Drop-down-Menü angezeigt" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "neues Fenster" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Link erzwingen, in einem neuen Fenster zu öffnen" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "benutzerdefinierter Link" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "benutzerdefinierte Links" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Die Objekttyp (en), für die diese Vorlage gilt." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8447,114 +8798,161 @@ msgstr "" "Jinja2-Vorlagencode. Die Liste der exportierten Objekte wird als " "Kontextvariable mit dem Namen übergeben Abfragesatz." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "" "Die Standardeinstellung ist Text/Einfach; Zeichensatz = UTF-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "Dateierweiterung" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Erweiterung, die an den gerenderten Dateinamen angehängt werden soll" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "als Anlage" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Datei als Anlage herunterladen" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "Vorlage exportieren" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "Vorlagen exportieren" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "" "„{name}\"ist ein reservierter Name. Bitte wählen Sie einen anderen Namen." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Der/Die Objekttyp (-en), für die dieser Filter gilt." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "geteilt" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "gespeicherter Filter" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "gespeicherte Filter" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Filterparameter müssen als Wörterbuch mit Schlüsselwortargumenten " "gespeichert werden." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "Höhe des Bildes" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "Breite des Bildes" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "Bildanhang" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "Bildanhänge" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "Bildanhänge können diesem Objekttyp nicht zugewiesen werden ({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "Typ" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "Journaleintrag" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "Journaleinträge" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Journaling wird für diesen Objekttyp nicht unterstützt ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "Lesezeichen" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "Lesezeichen" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "Diesem Objekttyp können keine Lesezeichen zugewiesen werden ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "lesen" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "Ereignis" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "Benachrichtigung" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "Benachrichtigungen" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Objekte dieses Typs ({type}) unterstützen keine Benachrichtigungen." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "Gruppen" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "Benutzer" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "Benachrichtigungsgruppe" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "Benachrichtigungsgruppen" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "Abonnement" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "Abonnements" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "ist ausführbar" @@ -8595,19 +8993,19 @@ msgstr "zwischengespeicherter Wert" msgid "cached values" msgstr "zwischengespeicherte Werte" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "Branch" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "Branches" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "vorbereitete Änderung" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "vorbereitete Änderungen" @@ -8631,85 +9029,87 @@ msgstr "markierter Artikel" msgid "tagged items" msgstr "markierte Artikel" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Skriptdaten" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Parameter für die Skriptausführung" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Datenbankänderungen wurden automatisch rückgängig gemacht." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Das Skript wurde mit einem Fehler abgebrochen: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Eine Ausnahme ist aufgetreten: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Datenbankänderungen wurden aufgrund eines Fehlers rückgängig gemacht." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "Das Löschen wird durch eine Schutzregel verhindert: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Abweisen" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Objekttypen" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Überprüfen Sie die Eindeutigkeit" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Sichtbar" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Editierbar" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Verwandter Objekttyp" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Auswahlset" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Ist klonbar" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Minimaler Wert" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Maximaler Wert" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Überprüfung Regex" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Anzahl" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Alphabetisch sortieren" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Neues Fenster" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Als Anlage" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8719,63 +9119,54 @@ msgstr "Als Anlage" msgid "Data File" msgstr "Datendatei" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Synchronisiert" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Bild" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Größe (Byte)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Lesen" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "SSL-Validierung" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Beginn des Jobs" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Ende des Auftrags" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Ereignistypen" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Geräterollen" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Vollständiger Name" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "Anfragen-ID" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Kommentare (Kurz)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Linie" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Stufe" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Nachricht" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Methode" @@ -8809,37 +9200,37 @@ msgstr "" "Die benutzerdefinierte Überprüfung ist fehlgeschlagen für {attribute}: " "{exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Ungültiges Attribut“{name}„zur Anfrage" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Ungültiges Attribut“{name}„für {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Ihr Dashboard wurde zurückgesetzt." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Hinzugefügtes Widget:" -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Aktualisiertes Widget: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Gelöschtes Widget: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Fehler beim Löschen des Widgets: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "" "Das Skript kann nicht ausgeführt werden: Der RQ-Worker-Prozess läuft nicht." @@ -8888,10 +9279,6 @@ msgstr "SLAAC" msgid "Loopback" msgstr "Loopback" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Sekundär" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8917,19 +9304,19 @@ msgstr "Klartext" msgid "Invalid IP address format: {address}" msgstr "Ungültiges IP-Adressformat: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Ziel importieren" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Importziel (Name)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Ziel exportieren" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Exportziel (Name)" @@ -8994,16 +9381,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Präfixe, die dieses Präfix oder diese IP enthalten" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Länge der Maske" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "VLAN-Nummer (1-4094)" @@ -9023,23 +9410,23 @@ msgid "Parent prefix" msgstr "Übergeordnetes Präfix" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Virtuelle Maschine (Name)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Virtuelle Maschine (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Schnittstelle (Name)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "VM-Schnittstelle (Name)" @@ -9067,19 +9454,19 @@ msgstr "Dienst (ID)" msgid "NAT inside IP address (ID)" msgstr "NAT innerhalb der IP-Adresse (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "IP-Adresse (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP-Adresse" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "Primäre IPv4 (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "Primäre IPv6 (ID)" @@ -9112,17 +9499,17 @@ msgstr "Eine CIDR-Maske (z. B. /24) ist erforderlich." msgid "Address pattern" msgstr "Adressmuster" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Erzwingen Sie einzigartigen Speicherplatz" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Ist privat" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9135,20 +9522,20 @@ msgstr "Ist privat" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "hinzugefügt am" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN-Gruppe" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9157,49 +9544,49 @@ msgstr "VLAN-Gruppe" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Länge des Prefixes" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Ist ein Pool" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Als voll ausgelastet behandeln" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "VLAN-Zuweisung" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS-Name" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokoll" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Gruppen-ID" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9211,156 +9598,142 @@ msgstr "Gruppen-ID" msgid "Authentication type" msgstr "Typ der Authentifizierung" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Authentifizierungsschlüssel" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Authentifizierung" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "Unterste VLAN-ID für untergeordnete Objekte" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Oberste VLAN-ID für untergeordnete Objekte" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Art des Geltungsbereichs" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "VLAN-ID-Bereiche" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Geltungsbereich" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Standort und Gruppe" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Ports" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Routenziele importieren" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Routenziele exportieren" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "Zugewiesenes RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "VLAN-Gruppe (falls vorhanden)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Übergeordnetes Gerät der zugewiesenen Schnittstelle (falls vorhanden)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Virtuelle Maschine" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "Übergeordnete VM der zugewiesenen Schnittstelle (falls vorhanden)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Zugewiesene Schnittstelle" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Ist primär" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Machen Sie dies zur primären IP für das zugewiesene Gerät" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Kein Gerät oder virtuelle Maschine angegeben; kann nicht als primäre IP " "festgelegt werden" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" "Keine Schnittstelle angegeben; kann nicht als primäre IP festgelegt werden" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Authentifizierungstyp" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Art des Umfangs (App und Modell)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Minimale VLAN-VID für untergeordnete Objekte (Standard: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Maximale VLAN-VID für untergeordnete Objekte (Standard: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Zugewiesene VLAN-Gruppe" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "IP-Protokoll" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Erforderlich, wenn es keiner VM zugewiesen ist" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Erforderlich, wenn es keinem Gerät zugewiesen ist" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} ist diesem Gerät/dieser VM nicht zugewiesen." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Routen-Ziele" @@ -9436,31 +9809,34 @@ msgstr "Einer Schnittstelle zugewiesen" msgid "DNS Name" msgstr "DNS-Name" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "VLAN-ID" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLANs" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Minimale VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Enthält VLAN-ID" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Maximale VID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "VLAN-ID" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9531,11 +9907,16 @@ msgstr "Virtuelle IP-Adresse" msgid "Assignment already exists" msgstr "Zuweisung ist bereits vorhanden" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "VLAN-IDs" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "Untergeordnete VLANs" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9543,33 +9924,33 @@ msgstr "" "Kommagetrennte Liste mit einer oder mehreren Portnummern. Ein Bereich kann " "mit einem Bindestrich angegeben werden." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Vorlage für den Service" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Port(s)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Dienst / Port" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Vorlage für den Dienst" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Aus Vorlage" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Benutzerdefiniert" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9612,7 +9993,7 @@ msgstr "Gruppen-ID" msgid "protocol" msgstr "Protokoll" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "Authentifizierungstyp" @@ -9628,10 +10009,6 @@ msgstr "FHRP-Gruppe" msgid "FHRP groups" msgstr "FHRP-Gruppen" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "Priorität" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "FHRP-Gruppenzuweisung" @@ -9648,7 +10025,7 @@ msgstr "Privat" msgid "IP space managed by this RIR is considered private" msgstr "Der von diesem RIR verwaltete IP-Bereich gilt als privat" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIRs" @@ -9908,22 +10285,6 @@ msgstr "" "Ein Dienst muss entweder einem Gerät oder einer virtuellen Maschine " "zugeordnet sein." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "minimale VLAN-ID" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Niedrigste zulässige ID eines untergeordneten VLANs" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "maximale VLAN-ID" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Höchste zulässige ID eines untergeordneten VLANs" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "VLAN-Gruppen" @@ -9936,40 +10297,41 @@ msgstr "scope_type kann nicht ohne scope_id gesetzt werden." msgid "Cannot set scope_id without scope_type." msgstr "scope_id kann nicht ohne scope_type gesetzt werden." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Bereiche dürfen sich nicht überschneiden." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" -"Die maximale VID für untergeordnete Objekte muss größer oder gleich der " -"Mindest-VID für untergeordnete Objekte sein" +"Die maximale untergeordnete VID muss größer oder gleich der Mindest-VID für " +"untergeordnete VIDs sein ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "" "Der spezifische Standort, der dieses VLAN zugewiesen ist (falls vorhanden)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "VLAN-Gruppe (optional)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "Numerische VLAN-ID (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Betriebsstatus dieses VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "Die Hauptfunktion dieses VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLANs" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9978,12 +10340,11 @@ msgstr "" "VLAN ist der Gruppe {group} (Umfang: {scope}) zugewiesen; kann nicht auch " "dem Standort {site} zugewiesen werden." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" msgstr "" -"VID muss dazwischen liegen {minimum} und {maximum} für VLANs in einer Gruppe" -" {group}" +"VID muss in Bereichen liegen {ranges} für VLANs in einer Gruppe {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -10001,8 +10362,8 @@ msgstr "einzigartigen Raum erzwingen" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Vermeiden Sie doppelte Präfixe/IP-Adressen in diesem VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRFs" @@ -10030,8 +10391,8 @@ msgstr "Anzahl der Standorte" msgid "Provider Count" msgstr "Anzahl der Provider" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Aggregate" @@ -10040,21 +10401,21 @@ msgid "Added" msgstr "Hinzugefügt" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Prefixe" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Auslastung" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "IP-Bereiche" @@ -10099,7 +10460,11 @@ msgstr "Zugewiesenes Objekt" msgid "Scope Type" msgstr "Art des Geltungsbereichs" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "VID-Bereiche" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VID" @@ -10163,11 +10528,11 @@ msgstr "Geräteschnittstellen" msgid "VM Interfaces" msgstr "VM-Schnittstellen" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Dieses Feld darf nicht leer sein." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10175,22 +10540,35 @@ msgstr "" "Der Wert muss direkt übergeben werden (z. B. „foo“: 123); verwende kein " "Wörterbuch oder keine Liste." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} ist keine gültige Auswahl." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Ungültiger Inhaltstyp: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Ungültiger Wert. Geben Sie einen Inhaltstyp an'.'." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "Bereiche müssen in der Form (unten, oben) angegeben werden." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Bereichsgrenzen müssen als ganze Zahlen (Integer) definiert werden." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} muss get_view_name () implementieren" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Ungültige Erlaubnis {permission} für Modell {model}" @@ -10519,48 +10897,53 @@ msgstr "Tags entfernen" msgid "{class_name} must specify a model class." msgstr "{class_name} muss eine Modellklasse angeben." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Unbekannter Feldname '{name}'in benutzerdefinierten Felddaten." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Ungültiger Wert für das benutzerdefinierte Feld '{name}': {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Benutzerdefiniertes Feld '{name}'muss einen eindeutigen Wert haben." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Erforderliches benutzerdefiniertes Feld fehlt '{name}'." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Entfernte Datenquelle" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "Datenpfad" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Pfad zur Remote-Datei (relativ zum Stammverzeichnis)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "Auto-Sync aktiviert" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Automatische Synchronisation von Daten aktivieren, wenn die Datendatei " "aktualisiert wird" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "Datum der Synchronisierung " -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} muss eine sync_data () -Methode implementieren." @@ -10574,217 +10957,230 @@ msgid "Site Groups" msgstr "Standortgruppen" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Rackrollen" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Übersichten" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Mandantengruppen" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Kontaktgruppen" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Kontaktrollen" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Kontaktzuweisungen" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Rackrollen" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Übersichten" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Racktypen" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Module" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr " Virtual Device Context" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Hersteller" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Gerätekomponenten" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Inventarartikelrollen" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Verbindungen" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Kabel" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Funkverbindungen" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Schnittstellenverbindungen" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Konsolenverbindungen" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Stromverbindungen" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "WLAN-Gruppen" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Prefix- und VLAN-Rollen" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "ASN-Bereiche" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "VLAN-Gruppen" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Vorlagen für Dienste / Ports" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Dienste" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Tunnel" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Tunnelgruppen" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Tunnelabschlüsse" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPNs" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Abschlusspunkte" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "IKE-Vorschläge" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "IKE-Richtlinien" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "IPSec-Vorschläge" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "IPSec-Richtlinien" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "IPSec-Profile" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Virtualisierung" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Virtuelle Festplatten" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Clustertypen" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Clustergruppen" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Transportnetz Typen" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Transportnetzgruppe" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Gruppenzuweisung" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Transportnetz Abschlusspunkt" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Provider" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Providerkonten" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Provider Netzwerke" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Stromverteiler" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Konfigurationen" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Kontexte konfigurieren" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Config-Vorlagen" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Personalisierung" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10797,114 +11193,108 @@ msgstr "Personalisierung" msgid "Custom Fields" msgstr "Benutzerdefinierte Felder" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Optionen für benutzerdefinierte Felder" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Benutzerdefinierte Links" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Exportvorlagen" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Gespeicherte Filter" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Bildanhänge" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operationen" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Integrationen" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Datenquellen" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Ereignisregeln" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhooks" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Jobs" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Protokollierung" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Benachrichtigungsgruppen" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Journaleinträge" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Änderungsprotokoll" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 -msgid "Admin" -msgstr "Admin" - -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Benutzer" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Gruppen" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 +msgid "Admin" +msgstr "Admin" + +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "API-Token" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Berechtigungen" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "System" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Plugins" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Konfigurationsverlauf" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Hintergrund-Aufgaben" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Plugins" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10938,31 +11328,22 @@ msgstr "" "{template_extension} ist keine Unterklasse von " "NetBox.Plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"PluginTemplateExtension-Klasse {template_extension} definiert kein gültiges " -"Modell!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} muss eine Instanz von NetBox.Plugins.PluginMenuItem sein" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} muss eine Instanz von NetBox.Plugins.PluginMenuItem sein" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} muss eine Instanz von NetBox.Plugins.PluginMenuButton sein" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context muss ein Dictionary sein" @@ -11045,75 +11426,79 @@ msgstr "" msgid "Cannot delete stores from registry" msgstr "Stores können nicht aus der Registrierung gelöscht werden" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "Tschechisch" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "Dänisch" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Deutsch" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Englisch" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "Spanisch" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "Französisch" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "Italenisch" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Japanisch" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Niederländisch" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Polnisch" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "Portugiesisch" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Russisch" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Türkisch" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "Ukrainisch" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "chinesisch" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Alles auswählen" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Alles umschalten" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Dropdown umschalten" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Fehler" @@ -11166,24 +11551,24 @@ msgstr "Umbenannt {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Gelöscht {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Changelog" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "Journal" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "Synchronisation nicht möglich: Keine Datei ausgewählt bzw. gesetzt." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Daten synchronisiert für {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Synchronisiert {count} {object_type}" @@ -11193,7 +11578,7 @@ msgstr "Synchronisiert {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} muss get_children () implementieren" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11231,11 +11616,11 @@ msgstr "" msgid "The complete exception is provided below" msgstr "Die vollständige Ausnahme finden Sie unten." -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Python-Version" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "NetBox-Version" @@ -11260,14 +11645,26 @@ msgstr "auf GitHub" msgid "Home Page" msgstr "Startseite" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Profil" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Benachrichtigungen" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Abos" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Einstellungen" @@ -11275,7 +11672,7 @@ msgstr "Einstellungen" msgid "Change Password" msgstr "Passwort ändern" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11300,7 +11697,7 @@ msgstr "Passwort ändern" msgid "Cancel" msgstr "Abbrechen" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11374,7 +11771,7 @@ msgid "Superuser" msgstr "Superuser" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Mitarbeiter" @@ -11389,19 +11786,19 @@ msgstr "Zugewiesene Gruppen" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11422,7 +11819,7 @@ msgstr "Meine API-Token" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Token" @@ -11443,32 +11840,41 @@ msgstr "Einen Token hinzufügen" msgid "Home" msgstr "Home" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "NetBox-Motiv" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "NetBox-Logo" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Doku" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST-API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "REST-API-Dokumentation" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "GraphQL-API" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "NetBox Labs Support" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Quellcode" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Community" @@ -11480,6 +11886,11 @@ msgstr "Datum der Installation" msgid "Termination Date" msgstr "Kündigungsdatum" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Gruppe zuweisen" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Transportnetzabschlüsse austauschen" @@ -11497,6 +11908,14 @@ msgstr "Eine Seite" msgid "Z side" msgstr "Z-Seite" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Zugewiesenes Transportnetz" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Zugewiesene Transportnetzgruppe" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Transportnetz hinzufügen" @@ -11521,7 +11940,7 @@ msgstr "Hinzufügen" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11642,13 +12061,10 @@ msgstr "Neuer Wert" msgid "Changed" msgstr "Geändert" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Zuletzt aktualisiert" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Größe" @@ -11730,25 +12146,120 @@ msgstr "Benutzereinstellungen" msgid "Job retention" msgstr "Beibehaltung der Arbeitsplätze" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Job" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Erstellt von" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Terminplanung" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "jeden %(interval)s Minuten" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Änderung" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Unterschied" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Vorherige" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Nächste" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Objekt erstellt" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Objekt gelöscht" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Keine Änderungen" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Daten vor der Änderung" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Warnung: Vergleich nichtatomarer Änderungen mit dem vorherigen " +"Änderungsdatensatz" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Daten nach der Änderung" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Alles ansehen %(count)s Änderungen" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Aufbewahrung von Protokollen ändern" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "Tage" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Unbestimmt" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Nicht installiert" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Überblick" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Installieren" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Plugin Details" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Zusammenfassung" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Lizenz" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Versionshistorie" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Lokale Installationsanweisungen" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11760,8 +12271,8 @@ msgstr "Warteschlangen im Hintergrund" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11820,7 +12331,7 @@ msgid "Queued Jobs" msgstr "Jobs in der Warteschlange" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11880,39 +12391,43 @@ msgstr "Exportieren" msgid "System Status" msgstr "Systemstatus" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "NetBox-Release" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Django-Version" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "PostgreSQL-Version" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Datenbankname" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Datenbankgröße" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Nicht verfügbar" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "RQ-Mitarbeiter" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "Standardwarteschlange" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Systemzeit" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Aktuelle Konfiguration" @@ -12011,14 +12526,15 @@ msgstr "Nicht eingebaut" msgid "GPS Coordinates" msgstr "GPS-Koordinaten" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" msgstr "Karte" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Asset-Tag" @@ -12038,19 +12554,19 @@ msgstr "Management" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT für" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NAT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Energienutzung" @@ -12078,7 +12594,7 @@ msgid "Leg" msgstr "Bein" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Einen Dienst hinzufügen" @@ -12339,6 +12855,22 @@ msgstr "Lösche" msgid "Clear All" msgstr "Alles löschen" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Einbautiefe" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Start HE" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Absteigende HE's" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Höhe des Racks" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Untergeordnete Schnittstelle hinzufügen" @@ -12401,8 +12933,8 @@ msgstr "Kanal-Breite" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12492,49 +13024,33 @@ msgstr "maximale Auslastung" msgid "Allocated Draw" msgstr "zugewiesene Auslastung" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Höheneinheitennutzung" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "absteigend" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "aufsteigend" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Start HE" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Einbautiefe" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Gewicht des Racks" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Maximales Gewicht" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Gesamtgewicht" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Bilder und Beschriftungen" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Nur Bilder" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Nur Beschriftungen" @@ -12547,6 +13063,10 @@ msgstr "Reservierung hinzufügen" msgid "View List" msgstr "Liste ansehen" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Wählen Sie eine Rackansicht" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Sortieren nach" @@ -12600,10 +13120,6 @@ msgstr "Uhrzeit am Standort" msgid "Physical Address" msgstr "Physische Adresse" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Karte" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Lieferadresse" @@ -12644,7 +13160,7 @@ msgstr "Neues Mitglied hinzufügen" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Aktionen" @@ -12816,46 +13332,42 @@ msgid "Group Name" msgstr "Name der Gruppe" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Muss einzigartig sein" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Klonbar" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Standardwert" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Gewichtung in Suche" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Filterlogik" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Gewicht anzeigen" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "UI Sichtbar" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "UI editierbar" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Validierungsregeln" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Minimaler Wert" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Maximaler Wert" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Regulärer Ausdruck" @@ -12869,11 +13381,11 @@ msgstr "Button-Klasse" msgid "Assigned Models" msgstr "Zugewiesene Modelle" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Linktext" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "Link-URL" @@ -12898,6 +13410,14 @@ msgstr "" "Diese Änderung betrifft nur dein Dashboard und hat keine Auswirkungen" " auf andere Benutzer." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "Wiget Konfiguration" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Schließe Widget" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Ein Widget hinzufügen" @@ -12930,13 +13450,9 @@ msgstr "Beim Abrufen des RSS-Feeds ist ein Problem aufgetreten" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Beginn des Jobs" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Ende des Jobs" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Dienst" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12978,20 +13494,15 @@ msgstr "Ergebnisse ausstehend" msgid "Journal Entry" msgstr "Journaleintrag" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Aufbewahrung von Protokollen ändern" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "Tage" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Benachrichtigungsgruppe" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Unbestimmt" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Keine zugewiesen" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -13005,54 +13516,6 @@ msgstr "Quellkontexte" msgid "New Journal Entry" msgstr "Neuer Journaleintrag" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Änderung" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Unterschied" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Vorherige" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Nächste" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Objekt erstellt" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Objekt gelöscht" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Keine Änderungen" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Daten vor der Änderung" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Warnung: Vergleich nichtatomarer Änderungen mit dem vorherigen " -"Änderungsdatensatz" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Daten nach der Änderung" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Alles ansehen %(count)s Änderungen" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Bericht" @@ -13063,7 +13526,7 @@ msgstr "Sie sind nicht berechtigt, Skripts auszuführen" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Skript ausführen" @@ -13076,27 +13539,27 @@ msgstr "Fehler beim Laden des Skripts" msgid "Script no longer exists in the source file." msgstr "Das Skript ist in der Quelldatei nicht mehr vorhanden." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Letzter Lauf" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Das Skript ist in der Quelldatei nicht mehr vorhanden" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Niemals" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Nochmal ausführen" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Keine Skripte gefunden" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -13111,6 +13574,14 @@ msgstr "" msgid "Results" msgstr "Ergebnisse" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Schwellenwert protokollieren" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Alle" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Getaggte Artikel" @@ -13143,11 +13614,11 @@ msgstr "HTTP-Inhaltstyp" msgid "SSL Verification" msgstr "SSL-Verifizierung" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Zusätzliche Header" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Körperschablone" @@ -13224,6 +13695,10 @@ msgstr "Feldeigenschaften" msgid "Accessor" msgstr "Datentyp" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "Auswahlmöglichkeiten" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Wert importieren" @@ -13391,6 +13866,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Die folgenden Objekte werden als Ergebnis dieser Aktion gelöscht." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "vor" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Keine ungelesenen Benachrichtigungen" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Alle Benachrichtigungen" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Auswählen" @@ -13458,15 +13945,23 @@ msgstr "Schnellsuche" msgid "Saved filter" msgstr "Gespeicherte Filter" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Reihenfolge löschen" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Hilfecenter" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Django-Admin" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Abmelden" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Anmelden" @@ -13514,10 +14009,6 @@ msgstr "Massen-Erstellung" msgid "Create Group" msgstr "Gruppe erstellen" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Gruppe zuweisen" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "Virtuelle IPs" @@ -13651,10 +14142,6 @@ msgstr "Präfix hinzufügen" msgid "Add VLAN" msgstr "VLAN hinzufügen" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "Erlaubte VIDs" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Routenunterscheidungsmerkmal" @@ -13663,20 +14150,16 @@ msgstr "Routenunterscheidungsmerkmal" msgid "Unique IP Space" msgstr "Einzigartiger IP-Raum" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "NetBox-Logo" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Fehler" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Anmelden" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Oder" @@ -13754,11 +14237,6 @@ msgstr "Titel" msgid "Phone" msgstr "Telefon" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Zuweisungen" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13798,7 +14276,7 @@ msgstr "Zugewiesene Berechtigungen" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Berechtigung" @@ -13820,23 +14298,21 @@ msgid "Allocated Resources" msgstr "Zugewiesene Ressourcen" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Virtuelle CPUs" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Arbeitsspeicher" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Speicherplatz" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13877,7 +14353,7 @@ msgid "Cluster Group" msgstr "Clustergruppe" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Cluster-Typ" @@ -13886,13 +14362,13 @@ msgstr "Cluster-Typ" msgid "Virtual Disk" msgstr "Virtuelle Festplatte" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Ressourcen" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Virtuelles Laufwerk hinzufügen" @@ -14074,13 +14550,12 @@ msgstr "WLAN-Gruppe hinzufügen" msgid "Link Properties" msgstr "Link-Eigenschaften" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Tertiär" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Inaktiv" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Entfernung" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14247,13 +14722,13 @@ msgstr "Kontakt-Link" msgid "Contact Description" msgstr "Kontakt-Beschreibung" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Berechtigung (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Gruppe (Name)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Benachrichtigungsgruppe (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14275,27 +14750,27 @@ msgstr "Superuser-Status" msgid "If no key is provided, one will be generated automatically." msgstr "Wenn kein Schlüssel angegeben wird, wird automatisch einer generiert." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Ist Mitarbeiter" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Ist Superuser" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Kann ansehen" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Kann hinzufügen" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Kann ändern" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Kann löschen" @@ -14394,50 +14869,50 @@ msgstr "Berechtigung" msgid "permissions" msgstr "Berechtigungen" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "Benutzereinstellungen" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "" "Schlüssel '{path}'ist ein Blattknoten; es können keine neuen Schlüssel " "zugewiesen werden" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Schlüssel '{path}'ist ein Wörterbuch; es kann kein Wert zugewiesen werden, " "der nicht aus dem Wörterbuch stammt" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "läuft ab" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "zuletzt benutzt" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "Schlüssel" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "Schreiben aktiviert" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" "Lasse Erstellen/Aktualisieren/Löschen Vorgänge mit diesem Schlüssel zu" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "erlaubte IPs" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14446,11 +14921,11 @@ msgstr "" "kann. Lassen Sie das Feld leer, wenn Sie keine Einschränkungen haben " "möchten. Beispiel: „10.1.1.0/24, 192.168.10.16/32, 2001:DB 8:1: :/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "Token" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "Token" @@ -14458,18 +14933,10 @@ msgstr "Token" msgid "group" msgstr "Gruppe" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "Gruppen" - #: netbox/users/models/users.py:92 msgid "user" msgstr "Benutzer" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "Benutzer" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Ein Benutzer mit diesem Benutzernamen existiert bereits." @@ -14609,7 +15076,7 @@ msgstr "" "Ungültige YAML-Daten. Die Daten müssen in Form mehrerer Dokumente oder eines" " einzelnen Dokuments vorliegen, das eine Liste von Wörterbüchern umfasst." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14618,6 +15085,22 @@ msgstr "" "Ungültige Liste ({value}). Muss numerisch sein und Bereiche müssen in " "aufsteigender Reihenfolge sein." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Geben Sie einen oder mehrere numerische Bereiche an, die durch Kommas " +"getrennt sind. Beispiel: 1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Ungültige Bereiche ({value}). Muss ein Bereich von ganzen Zahlen in " +"aufsteigender Reihenfolge sein." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14785,6 +15268,26 @@ msgstr "" "Fehlender erforderlicher Wert für den statischen Abfrageparameter: " "'{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Das Passwort muss mindestens eine Ziffer enthalten." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Das Passwort muss mindestens einen Großbuchstaben enthalten." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Das Passwort muss mindestens einen Kleinbuchstaben enthalten." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Ihr Passwort muss mindestens eine Ziffer, einen Großbuchstaben und einen " +"Kleinbuchstaben enthalten." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14843,6 +15346,14 @@ msgstr "Exportvorlage hinzufügen" msgid "Import" msgstr "Importieren" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Nicht abonnieren" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Abonnieren" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "In die Zwischenablage kopieren" @@ -14883,15 +15394,11 @@ msgstr "Suche NetBox" msgid "Open selector" msgstr "Selektor öffnen" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Keine zugewiesen" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Schreiben" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Der Test muss csv_update_data definieren." @@ -14900,18 +15407,18 @@ msgstr "Der Test muss csv_update_data definieren." msgid "{value} is not a valid regular expression." msgstr "{value} ist kein gültiger regulärer Ausdruck." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" "{self.__class__.__name__} muss get_required_permission() implementieren" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} muss get_required_permission() implementieren" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14935,7 +15442,7 @@ msgid "Cluster type (ID)" msgstr "Clustertyp (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Cluster (ID)" @@ -14953,7 +15460,7 @@ msgid "Disk (GB)" msgstr "Festplatte (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Größe (GB)" @@ -14973,6 +15480,10 @@ msgstr "Zugewiesener Cluster" msgid "Assigned device within cluster" msgstr "Zugewiesenes Gerät innerhalb des Clusters" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Seriennummer" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14999,6 +15510,7 @@ msgstr "" "verwaltet." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Festplatte" @@ -15040,28 +15552,28 @@ msgid "memory (MB)" msgstr "Speicher (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "Festplatte (GB)" +msgid "disk (MB)" +msgstr "Festplatte (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Der Name der virtuellen Maschine muss pro Cluster eindeutig sein." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "virtuelle Maschine" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "virtuelle Maschinen" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" "Eine virtuelle Maschine muss einem Standort und/oder einem Cluster " "zugewiesen werden." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." @@ -15069,11 +15581,11 @@ msgstr "" "Das ausgewählte Cluster ({cluster}) ist diesem Standort nicht zugeordnet " "({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "Bei der Zuweisung eines Hostgeräts muss ein Cluster angegeben werden." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." @@ -15081,7 +15593,7 @@ msgstr "" "Das gewählte Gerät ({device}) ist diesem Cluster nicht zugewiesen " "({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -15090,18 +15602,18 @@ msgstr "" "Die angegebene Festplattengröße ({size}) muss der Gesamtgröße der " "zugewiesenen virtuellen Laufwerke entsprechen ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "" "Muss eine IPv{family} Adresse sein. ({ip} ist eine IPv{version} Adresse.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "Die angegebene IP-Adresse ({ip}) ist dieser VM nicht zugewiesen." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -15110,7 +15622,7 @@ msgstr "" "Die ausgewählte übergeordnete Schnittstelle ({parent}) gehört zu einer " "anderen virtuellen Maschine ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -15119,7 +15631,7 @@ msgstr "" "Die gewählte Bridge-Schnittstelle ({bridge}) gehört zu einer anderen " "virtuellen Maschine ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -15129,24 +15641,24 @@ msgstr "" "wie die übergeordnete virtuelle Maschine der Schnittstelle, oder sie muss " "global sein." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "Größe (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "Größe (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "virtuelle Festplatte" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "virtuelle Festplatten" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Füge {count} Geräte zum Cluster {cluster}hinzu " -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Entferne {count}Geräte vom Cluster {cluster}" @@ -15260,32 +15772,32 @@ msgid "Outside IP (ID)" msgstr "Externe IP (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "IKE-Richtlinie (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "IKE-Richtlinie (Name)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "IPSec-Richtlinie (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "IPSec-Richtlinie (Name)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (URL-Slug)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "VM-Schnittstelle (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (Name)" @@ -15464,7 +15976,7 @@ msgstr "Version" msgid "proposals" msgstr "Vorschläge" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "vorab geteilter Schlüssel" @@ -15648,17 +16160,24 @@ msgstr "WPA Enterprise" msgid "Authentication cipher" msgstr "Authentifizierungchiffre" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Entfernungseinheit" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "Bridged VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Schnittstelle A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Schnittstelle B" @@ -15666,39 +16185,52 @@ msgstr "Schnittstelle B" msgid "Side B" msgstr "Seite B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "Authentifizierungchiffre" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "WLAN-Gruppe" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "WLAN-Gruppen" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "WLAN" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "Schnittstelle A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "Schnittstelle B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "Entfernung" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "Entfernungseinheit" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "Funkverbindung" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "Funkverbindungen" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "" +"Beim Einstellen einer Funkentfernung muss eine Einheit angegeben werden" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} ist keine Funkschnittstelle." diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po index b0355294755..a49ec7322c4 100644 --- a/netbox/translations/en/LC_MESSAGES/django.po +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-03 14:57+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7504 +17,8027 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: account/tables.py:27 templates/account/token.html:22 -#: templates/users/token.html:17 users/forms/bulk_import.py:39 -#: users/forms/model_forms.py:113 + +#: netbox/account/tables.py:27 netbox/templates/account/token.html:22 +#: netbox/templates/users/token.html:17 netbox/users/forms/bulk_import.py:39 +#: netbox/users/forms/model_forms.py:113 msgid "Key" msgstr "" -#: account/tables.py:31 users/forms/filtersets.py:132 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "" -#: account/tables.py:35 core/choices.py:86 core/tables/jobs.py:29 -#: core/tables/tasks.py:79 extras/tables/tables.py:335 -#: extras/tables/tables.py:566 templates/account/token.html:43 -#: templates/core/configrevision.html:26 -#: templates/core/configrevision_restore.html:12 templates/core/job.html:69 -#: templates/core/rq_task.html:16 templates/core/rq_task.html:73 -#: templates/core/rq_worker.html:14 templates/extras/htmx/script_result.html:12 -#: templates/extras/journalentry.html:22 templates/generic/object.html:58 -#: templates/users/token.html:35 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 +#: netbox/templates/core/configrevision.html:26 +#: netbox/templates/core/configrevision_restore.html:12 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/rq_task.html:73 +#: netbox/templates/core/rq_worker.html:14 +#: netbox/templates/extras/htmx/script_result.html:12 +#: netbox/templates/extras/journalentry.html:22 +#: netbox/templates/generic/object.html:58 netbox/templates/users/token.html:35 msgid "Created" msgstr "" -#: account/tables.py:39 templates/account/token.html:47 -#: templates/users/token.html:39 users/forms/bulk_edit.py:117 -#: users/forms/filtersets.py:136 +#: netbox/account/tables.py:39 netbox/templates/account/token.html:47 +#: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "" -#: account/tables.py:42 users/forms/filtersets.py:141 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "" -#: account/tables.py:45 templates/account/token.html:55 -#: templates/users/token.html:47 users/forms/bulk_edit.py:122 -#: users/forms/model_forms.py:125 +#: netbox/account/tables.py:45 netbox/templates/account/token.html:55 +#: netbox/templates/users/token.html:47 netbox/users/forms/bulk_edit.py:122 +#: netbox/users/forms/model_forms.py:125 msgid "Allowed IPs" msgstr "" -#: account/views.py:114 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "" -#: account/views.py:164 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "" -#: account/views.py:216 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "" -#: account/views.py:239 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" -#: account/views.py:254 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "" -#: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 -#: dcim/choices.py:185 dcim/choices.py:231 dcim/choices.py:1491 -#: dcim/choices.py:1567 dcim/choices.py:1617 virtualization/choices.py:20 -#: virtualization/choices.py:45 vpn/choices.py:18 +#: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 +#: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 +#: netbox/vpn/choices.py:18 msgid "Planned" msgstr "" -#: circuits/choices.py:22 netbox/navigation/menu.py:305 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "" -#: circuits/choices.py:23 core/tables/tasks.py:22 dcim/choices.py:22 -#: dcim/choices.py:103 dcim/choices.py:184 dcim/choices.py:230 -#: dcim/choices.py:1566 dcim/choices.py:1616 extras/tables/tables.py:495 -#: ipam/choices.py:31 ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 -#: templates/extras/configcontext.html:25 templates/users/user.html:37 -#: users/forms/bulk_edit.py:38 virtualization/choices.py:22 -#: virtualization/choices.py:44 vpn/choices.py:19 wireless/choices.py:25 +#: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 +#: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 +#: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 +#: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 +#: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 +#: netbox/virtualization/choices.py:22 netbox/virtualization/choices.py:44 +#: netbox/vpn/choices.py:19 netbox/wireless/choices.py:25 msgid "Active" msgstr "" -#: circuits/choices.py:24 dcim/choices.py:183 dcim/choices.py:229 -#: dcim/choices.py:1565 dcim/choices.py:1618 virtualization/choices.py:24 -#: virtualization/choices.py:43 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 +#: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "" -#: circuits/choices.py:25 +#: netbox/circuits/choices.py:25 msgid "Deprovisioning" msgstr "" -#: circuits/choices.py:26 +#: netbox/circuits/choices.py:26 msgid "Decommissioned" msgstr "" -#: circuits/choices.py:90 dcim/choices.py:1578 tenancy/choices.py:17 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 msgid "Primary" msgstr "" -#: circuits/choices.py:91 ipam/choices.py:90 tenancy/choices.py:18 +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 msgid "Secondary" msgstr "" -#: circuits/choices.py:92 tenancy/choices.py:19 +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 msgid "Tertiary" msgstr "" -#: circuits/choices.py:93 tenancy/choices.py:20 +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 msgid "Inactive" msgstr "" -#: circuits/filtersets.py:31 circuits/filtersets.py:198 dcim/filtersets.py:98 -#: dcim/filtersets.py:152 dcim/filtersets.py:212 dcim/filtersets.py:333 -#: dcim/filtersets.py:464 dcim/filtersets.py:1021 dcim/filtersets.py:1368 -#: dcim/filtersets.py:1903 dcim/filtersets.py:2146 dcim/filtersets.py:2204 -#: ipam/filtersets.py:339 ipam/filtersets.py:959 -#: virtualization/filtersets.py:45 virtualization/filtersets.py:173 -#: vpn/filtersets.py:369 +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 +#: netbox/virtualization/filtersets.py:45 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "" -#: circuits/filtersets.py:38 circuits/filtersets.py:205 dcim/filtersets.py:105 -#: dcim/filtersets.py:158 dcim/filtersets.py:219 dcim/filtersets.py:340 -#: dcim/filtersets.py:471 dcim/filtersets.py:1028 dcim/filtersets.py:1375 -#: dcim/filtersets.py:1910 dcim/filtersets.py:2153 dcim/filtersets.py:2211 -#: extras/filtersets.py:509 ipam/filtersets.py:346 ipam/filtersets.py:966 -#: virtualization/filtersets.py:52 virtualization/filtersets.py:180 -#: vpn/filtersets.py:364 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "" -#: circuits/filtersets.py:44 circuits/filtersets.py:211 dcim/filtersets.py:128 -#: dcim/filtersets.py:225 dcim/filtersets.py:346 dcim/filtersets.py:477 -#: dcim/filtersets.py:1034 dcim/filtersets.py:1381 dcim/filtersets.py:1916 -#: dcim/filtersets.py:2159 dcim/filtersets.py:2217 ipam/filtersets.py:352 -#: ipam/filtersets.py:972 virtualization/filtersets.py:58 -#: virtualization/filtersets.py:186 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 +#: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "" -#: circuits/filtersets.py:51 circuits/filtersets.py:218 dcim/filtersets.py:135 -#: dcim/filtersets.py:232 dcim/filtersets.py:353 dcim/filtersets.py:484 -#: dcim/filtersets.py:1041 dcim/filtersets.py:1388 dcim/filtersets.py:1923 -#: dcim/filtersets.py:2166 dcim/filtersets.py:2224 extras/filtersets.py:515 -#: ipam/filtersets.py:359 ipam/filtersets.py:979 -#: virtualization/filtersets.py:65 virtualization/filtersets.py:193 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 +#: netbox/virtualization/filtersets.py:65 +#: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "" -#: circuits/filtersets.py:56 circuits/forms/bulk_edit.py:188 -#: circuits/forms/bulk_edit.py:216 circuits/forms/bulk_import.py:125 -#: circuits/forms/filtersets.py:51 circuits/forms/filtersets.py:171 -#: circuits/forms/filtersets.py:209 circuits/forms/model_forms.py:138 -#: circuits/forms/model_forms.py:154 circuits/tables/circuits.py:113 -#: dcim/forms/bulk_edit.py:168 dcim/forms/bulk_edit.py:329 -#: dcim/forms/bulk_edit.py:677 dcim/forms/bulk_edit.py:873 -#: dcim/forms/bulk_import.py:131 dcim/forms/bulk_import.py:230 -#: dcim/forms/bulk_import.py:309 dcim/forms/bulk_import.py:540 -#: dcim/forms/bulk_import.py:1311 dcim/forms/bulk_import.py:1339 -#: dcim/forms/filtersets.py:87 dcim/forms/filtersets.py:225 -#: dcim/forms/filtersets.py:342 dcim/forms/filtersets.py:439 -#: dcim/forms/filtersets.py:753 dcim/forms/filtersets.py:997 -#: dcim/forms/filtersets.py:1021 dcim/forms/filtersets.py:1111 -#: dcim/forms/filtersets.py:1149 dcim/forms/filtersets.py:1584 -#: dcim/forms/filtersets.py:1608 dcim/forms/filtersets.py:1632 -#: dcim/forms/model_forms.py:137 dcim/forms/model_forms.py:165 -#: dcim/forms/model_forms.py:238 dcim/forms/model_forms.py:463 -#: dcim/forms/model_forms.py:723 dcim/forms/object_create.py:391 -#: dcim/tables/devices.py:153 dcim/tables/power.py:26 dcim/tables/power.py:93 -#: dcim/tables/racks.py:122 dcim/tables/racks.py:207 dcim/tables/sites.py:134 -#: extras/filtersets.py:525 ipam/forms/bulk_edit.py:217 -#: ipam/forms/bulk_edit.py:284 ipam/forms/bulk_edit.py:451 -#: ipam/forms/bulk_edit.py:529 ipam/forms/bulk_import.py:171 -#: ipam/forms/bulk_import.py:429 ipam/forms/filtersets.py:153 -#: ipam/forms/filtersets.py:231 ipam/forms/filtersets.py:432 -#: ipam/forms/filtersets.py:489 ipam/forms/model_forms.py:205 -#: ipam/forms/model_forms.py:636 ipam/tables/ip.py:245 ipam/tables/vlans.py:118 -#: ipam/tables/vlans.py:221 -#: templates/circuits/inc/circuit_termination_fields.html:6 -#: templates/dcim/device.html:22 templates/dcim/inc/cable_termination.html:8 -#: templates/dcim/inc/cable_termination.html:33 templates/dcim/location.html:37 -#: templates/dcim/powerpanel.html:22 templates/dcim/rack.html:20 -#: templates/dcim/rackreservation.html:28 templates/dcim/site.html:28 -#: templates/ipam/prefix.html:56 templates/ipam/vlan.html:23 -#: templates/ipam/vlan_edit.html:40 templates/virtualization/cluster.html:42 -#: templates/virtualization/virtualmachine.html:95 -#: virtualization/forms/bulk_edit.py:91 virtualization/forms/bulk_edit.py:109 -#: virtualization/forms/bulk_edit.py:124 virtualization/forms/bulk_import.py:59 -#: virtualization/forms/bulk_import.py:85 virtualization/forms/filtersets.py:79 -#: virtualization/forms/filtersets.py:148 -#: virtualization/forms/model_forms.py:71 -#: virtualization/forms/model_forms.py:104 -#: virtualization/forms/model_forms.py:171 virtualization/tables/clusters.py:77 -#: virtualization/tables/virtualmachines.py:63 vpn/forms/filtersets.py:266 -#: wireless/forms/model_forms.py:76 wireless/forms/model_forms.py:118 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 +#: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 +#: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 +#: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:6 +#: netbox/templates/dcim/device.html:22 +#: netbox/templates/dcim/inc/cable_termination.html:8 +#: netbox/templates/dcim/inc/cable_termination.html:33 +#: netbox/templates/dcim/location.html:37 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 +#: netbox/templates/dcim/rackreservation.html:28 +#: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 +#: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 +#: netbox/templates/virtualization/cluster.html:42 +#: netbox/templates/virtualization/virtualmachine.html:95 +#: netbox/virtualization/forms/bulk_edit.py:91 +#: netbox/virtualization/forms/bulk_edit.py:109 +#: netbox/virtualization/forms/bulk_edit.py:124 +#: netbox/virtualization/forms/bulk_import.py:59 +#: netbox/virtualization/forms/bulk_import.py:85 +#: netbox/virtualization/forms/filtersets.py:79 +#: netbox/virtualization/forms/filtersets.py:148 +#: netbox/virtualization/forms/model_forms.py:71 +#: netbox/virtualization/forms/model_forms.py:104 +#: netbox/virtualization/forms/model_forms.py:171 +#: netbox/virtualization/tables/clusters.py:77 +#: netbox/virtualization/tables/virtualmachines.py:63 +#: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 +#: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "" -#: circuits/filtersets.py:62 circuits/filtersets.py:229 -#: circuits/filtersets.py:274 dcim/filtersets.py:242 dcim/filtersets.py:363 -#: dcim/filtersets.py:458 extras/filtersets.py:531 ipam/filtersets.py:238 -#: ipam/filtersets.py:369 ipam/filtersets.py:989 -#: virtualization/filtersets.py:75 virtualization/filtersets.py:203 -#: vpn/filtersets.py:374 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 +#: netbox/virtualization/filtersets.py:75 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "" -#: circuits/filtersets.py:67 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "" -#: circuits/filtersets.py:73 circuits/forms/filtersets.py:31 -#: ipam/forms/model_forms.py:159 ipam/models/asns.py:108 -#: ipam/models/asns.py:125 ipam/tables/asn.py:41 templates/ipam/asn.html:20 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 +#: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 +#: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 +#: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "" -#: circuits/filtersets.py:95 circuits/filtersets.py:122 -#: circuits/filtersets.py:156 circuits/filtersets.py:283 -#: circuits/filtersets.py:325 ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "" -#: circuits/filtersets.py:101 circuits/filtersets.py:128 -#: circuits/filtersets.py:162 circuits/filtersets.py:289 -#: circuits/filtersets.py:331 ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "" -#: circuits/filtersets.py:167 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "" -#: circuits/filtersets.py:173 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "" -#: circuits/filtersets.py:178 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "" -#: circuits/filtersets.py:182 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "" -#: circuits/filtersets.py:188 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "" -#: circuits/filtersets.py:223 circuits/filtersets.py:268 dcim/filtersets.py:236 -#: dcim/filtersets.py:357 dcim/filtersets.py:452 dcim/filtersets.py:1045 -#: dcim/filtersets.py:1393 dcim/filtersets.py:1928 dcim/filtersets.py:2170 -#: dcim/filtersets.py:2229 ipam/filtersets.py:232 ipam/filtersets.py:363 -#: ipam/filtersets.py:983 virtualization/filtersets.py:69 -#: virtualization/filtersets.py:197 vpn/filtersets.py:379 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 +#: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "" -#: circuits/filtersets.py:233 circuits/filtersets.py:237 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "" -#: circuits/filtersets.py:260 circuits/filtersets.py:320 core/filtersets.py:77 -#: core/filtersets.py:136 core/filtersets.py:173 dcim/filtersets.py:751 -#: dcim/filtersets.py:1362 dcim/filtersets.py:2277 extras/filtersets.py:41 -#: extras/filtersets.py:63 extras/filtersets.py:92 extras/filtersets.py:132 -#: extras/filtersets.py:181 extras/filtersets.py:209 extras/filtersets.py:239 -#: extras/filtersets.py:276 extras/filtersets.py:348 extras/filtersets.py:391 -#: extras/filtersets.py:438 extras/filtersets.py:498 extras/filtersets.py:657 -#: extras/filtersets.py:703 ipam/forms/model_forms.py:449 -#: netbox/filtersets.py:277 netbox/forms/__init__.py:22 -#: netbox/forms/base.py:167 templates/htmx/object_selector.html:28 -#: templates/inc/filter_list.html:45 templates/ipam/ipaddress_assign.html:29 -#: templates/search.html:7 templates/search.html:26 tenancy/filtersets.py:100 -#: users/filtersets.py:23 users/filtersets.py:57 users/filtersets.py:102 -#: users/filtersets.py:150 utilities/forms/forms.py:104 -#: utilities/templates/navigation/menu.html:16 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 +#: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 +#: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 +#: netbox/templates/htmx/object_selector.html:28 +#: netbox/templates/inc/filter_list.html:45 +#: netbox/templates/ipam/ipaddress_assign.html:29 +#: netbox/templates/search.html:7 netbox/templates/search.html:26 +#: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 +#: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "" -#: circuits/filtersets.py:264 circuits/forms/bulk_edit.py:172 -#: circuits/forms/bulk_edit.py:246 circuits/forms/bulk_import.py:116 -#: circuits/forms/filtersets.py:198 circuits/forms/filtersets.py:214 -#: circuits/forms/filtersets.py:260 circuits/forms/model_forms.py:111 -#: circuits/forms/model_forms.py:133 circuits/forms/model_forms.py:199 -#: circuits/tables/circuits.py:104 circuits/tables/circuits.py:164 -#: dcim/forms/connections.py:73 templates/circuits/circuit.html:15 -#: templates/circuits/circuitgroupassignment.html:26 -#: templates/circuits/circuittermination.html:19 -#: templates/dcim/inc/cable_termination.html:55 -#: templates/dcim/trace/circuit.html:4 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 +#: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 +#: netbox/templates/circuits/circuittermination.html:19 +#: netbox/templates/dcim/inc/cable_termination.html:55 +#: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "" -#: circuits/filtersets.py:278 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "" -#: circuits/filtersets.py:335 +#: netbox/circuits/filtersets.py:335 msgid "Circuit (ID)" msgstr "" -#: circuits/filtersets.py:341 +#: netbox/circuits/filtersets.py:341 msgid "Circuit (CID)" msgstr "" -#: circuits/filtersets.py:345 +#: netbox/circuits/filtersets.py:345 msgid "Circuit group (ID)" msgstr "" -#: circuits/filtersets.py:351 +#: netbox/circuits/filtersets.py:351 msgid "Circuit group (slug)" msgstr "" -#: circuits/forms/bulk_edit.py:30 circuits/forms/filtersets.py:56 -#: circuits/forms/model_forms.py:29 circuits/tables/providers.py:33 -#: dcim/forms/bulk_edit.py:128 dcim/forms/filtersets.py:195 -#: dcim/forms/model_forms.py:123 dcim/tables/sites.py:94 -#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:213 -#: netbox/navigation/menu.py:172 netbox/navigation/menu.py:175 -#: templates/circuits/provider.html:23 +#: netbox/circuits/forms/bulk_edit.py:30 netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 +#: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 +#: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 +#: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "" -#: circuits/forms/bulk_edit.py:34 circuits/forms/bulk_edit.py:56 -#: circuits/forms/bulk_edit.py:83 circuits/forms/bulk_edit.py:104 -#: circuits/forms/bulk_edit.py:164 circuits/forms/bulk_edit.py:183 -#: circuits/forms/bulk_edit.py:228 core/forms/bulk_edit.py:28 -#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:73 -#: dcim/forms/bulk_edit.py:92 dcim/forms/bulk_edit.py:151 -#: dcim/forms/bulk_edit.py:192 dcim/forms/bulk_edit.py:210 -#: dcim/forms/bulk_edit.py:288 dcim/forms/bulk_edit.py:432 -#: dcim/forms/bulk_edit.py:466 dcim/forms/bulk_edit.py:481 -#: dcim/forms/bulk_edit.py:540 dcim/forms/bulk_edit.py:584 -#: dcim/forms/bulk_edit.py:618 dcim/forms/bulk_edit.py:642 -#: dcim/forms/bulk_edit.py:715 dcim/forms/bulk_edit.py:767 -#: dcim/forms/bulk_edit.py:819 dcim/forms/bulk_edit.py:842 -#: dcim/forms/bulk_edit.py:890 dcim/forms/bulk_edit.py:960 -#: dcim/forms/bulk_edit.py:1013 dcim/forms/bulk_edit.py:1048 -#: dcim/forms/bulk_edit.py:1088 dcim/forms/bulk_edit.py:1132 -#: dcim/forms/bulk_edit.py:1177 dcim/forms/bulk_edit.py:1204 -#: dcim/forms/bulk_edit.py:1222 dcim/forms/bulk_edit.py:1240 -#: dcim/forms/bulk_edit.py:1258 dcim/forms/bulk_edit.py:1682 -#: extras/forms/bulk_edit.py:39 extras/forms/bulk_edit.py:149 -#: extras/forms/bulk_edit.py:178 extras/forms/bulk_edit.py:208 -#: extras/forms/bulk_edit.py:256 extras/forms/bulk_edit.py:274 -#: extras/forms/bulk_edit.py:298 extras/forms/bulk_edit.py:312 -#: extras/forms/bulk_edit.py:339 extras/tables/tables.py:79 -#: ipam/forms/bulk_edit.py:52 ipam/forms/bulk_edit.py:72 -#: ipam/forms/bulk_edit.py:92 ipam/forms/bulk_edit.py:116 -#: ipam/forms/bulk_edit.py:145 ipam/forms/bulk_edit.py:174 -#: ipam/forms/bulk_edit.py:193 ipam/forms/bulk_edit.py:275 -#: ipam/forms/bulk_edit.py:320 ipam/forms/bulk_edit.py:368 -#: ipam/forms/bulk_edit.py:411 ipam/forms/bulk_edit.py:427 -#: ipam/forms/bulk_edit.py:561 ipam/forms/bulk_edit.py:592 -#: templates/account/token.html:35 templates/circuits/circuit.html:59 -#: templates/circuits/circuitgroup.html:32 -#: templates/circuits/circuittype.html:26 -#: templates/circuits/inc/circuit_termination_fields.html:88 -#: templates/circuits/provider.html:33 -#: templates/circuits/providernetwork.html:32 templates/core/datasource.html:54 -#: templates/core/plugin.html:79 templates/dcim/cable.html:36 -#: templates/dcim/consoleport.html:44 templates/dcim/consoleserverport.html:44 -#: templates/dcim/device.html:94 templates/dcim/devicebay.html:32 -#: templates/dcim/devicerole.html:30 templates/dcim/devicetype.html:33 -#: templates/dcim/frontport.html:58 templates/dcim/interface.html:69 -#: templates/dcim/inventoryitem.html:60 -#: templates/dcim/inventoryitemrole.html:22 templates/dcim/location.html:33 -#: templates/dcim/manufacturer.html:40 templates/dcim/module.html:73 -#: templates/dcim/modulebay.html:42 templates/dcim/moduletype.html:26 -#: templates/dcim/platform.html:33 templates/dcim/powerfeed.html:40 -#: templates/dcim/poweroutlet.html:40 templates/dcim/powerpanel.html:30 -#: templates/dcim/powerport.html:40 templates/dcim/rack.html:53 -#: templates/dcim/rackreservation.html:62 templates/dcim/rackrole.html:26 -#: templates/dcim/racktype.html:24 templates/dcim/rearport.html:54 -#: templates/dcim/region.html:33 templates/dcim/site.html:60 -#: templates/dcim/sitegroup.html:33 templates/dcim/virtualchassis.html:31 -#: templates/extras/configcontext.html:21 -#: templates/extras/configtemplate.html:17 templates/extras/customfield.html:34 -#: templates/extras/dashboard/widget_add.html:14 -#: templates/extras/eventrule.html:21 templates/extras/exporttemplate.html:19 -#: templates/extras/notificationgroup.html:20 -#: templates/extras/savedfilter.html:17 templates/extras/script_list.html:45 -#: templates/extras/tag.html:20 templates/extras/webhook.html:17 -#: templates/generic/bulk_import.html:120 templates/ipam/aggregate.html:43 -#: templates/ipam/asn.html:42 templates/ipam/asnrange.html:38 -#: templates/ipam/fhrpgroup.html:34 templates/ipam/ipaddress.html:55 -#: templates/ipam/iprange.html:67 templates/ipam/prefix.html:81 -#: templates/ipam/rir.html:26 templates/ipam/role.html:26 -#: templates/ipam/routetarget.html:21 templates/ipam/service.html:50 -#: templates/ipam/servicetemplate.html:27 templates/ipam/vlan.html:62 -#: templates/ipam/vlangroup.html:34 templates/ipam/vrf.html:33 -#: templates/tenancy/contact.html:67 templates/tenancy/contactgroup.html:25 -#: templates/tenancy/contactrole.html:22 templates/tenancy/tenant.html:24 -#: templates/tenancy/tenantgroup.html:33 templates/users/group.html:21 -#: templates/users/objectpermission.html:21 templates/users/token.html:27 -#: templates/virtualization/cluster.html:25 -#: templates/virtualization/clustergroup.html:26 -#: templates/virtualization/clustertype.html:26 -#: templates/virtualization/virtualdisk.html:39 -#: templates/virtualization/virtualmachine.html:31 -#: templates/virtualization/vminterface.html:51 templates/vpn/ikepolicy.html:17 -#: templates/vpn/ikeproposal.html:17 templates/vpn/ipsecpolicy.html:17 -#: templates/vpn/ipsecprofile.html:17 templates/vpn/ipsecprofile.html:40 -#: templates/vpn/ipsecprofile.html:73 templates/vpn/ipsecproposal.html:17 -#: templates/vpn/l2vpn.html:26 templates/vpn/tunnel.html:33 -#: templates/vpn/tunnelgroup.html:30 templates/wireless/wirelesslan.html:26 -#: templates/wireless/wirelesslangroup.html:33 -#: templates/wireless/wirelesslink.html:34 tenancy/forms/bulk_edit.py:32 -#: tenancy/forms/bulk_edit.py:80 tenancy/forms/bulk_edit.py:122 -#: users/forms/bulk_edit.py:64 users/forms/bulk_edit.py:82 -#: users/forms/bulk_edit.py:112 virtualization/forms/bulk_edit.py:32 -#: virtualization/forms/bulk_edit.py:46 virtualization/forms/bulk_edit.py:100 -#: virtualization/forms/bulk_edit.py:177 virtualization/forms/bulk_edit.py:228 -#: virtualization/forms/bulk_edit.py:337 vpn/forms/bulk_edit.py:28 -#: vpn/forms/bulk_edit.py:64 vpn/forms/bulk_edit.py:121 -#: vpn/forms/bulk_edit.py:155 vpn/forms/bulk_edit.py:190 -#: vpn/forms/bulk_edit.py:215 vpn/forms/bulk_edit.py:247 -#: vpn/forms/bulk_edit.py:274 wireless/forms/bulk_edit.py:29 -#: wireless/forms/bulk_edit.py:82 wireless/forms/bulk_edit.py:140 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 +#: netbox/templates/account/token.html:35 +#: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 +#: netbox/templates/circuits/circuittype.html:26 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:88 +#: netbox/templates/circuits/provider.html:33 +#: netbox/templates/circuits/providernetwork.html:32 +#: netbox/templates/core/datasource.html:54 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 +#: netbox/templates/dcim/consoleport.html:44 +#: netbox/templates/dcim/consoleserverport.html:44 +#: netbox/templates/dcim/device.html:94 netbox/templates/dcim/devicebay.html:32 +#: netbox/templates/dcim/devicerole.html:30 +#: netbox/templates/dcim/devicetype.html:33 +#: netbox/templates/dcim/frontport.html:58 +#: netbox/templates/dcim/interface.html:69 +#: netbox/templates/dcim/inventoryitem.html:60 +#: netbox/templates/dcim/inventoryitemrole.html:22 +#: netbox/templates/dcim/location.html:33 +#: netbox/templates/dcim/manufacturer.html:40 +#: netbox/templates/dcim/module.html:73 netbox/templates/dcim/modulebay.html:42 +#: netbox/templates/dcim/moduletype.html:26 +#: netbox/templates/dcim/platform.html:33 +#: netbox/templates/dcim/powerfeed.html:40 +#: netbox/templates/dcim/poweroutlet.html:40 +#: netbox/templates/dcim/powerpanel.html:30 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 +#: netbox/templates/dcim/rackreservation.html:62 +#: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 +#: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 +#: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 +#: netbox/templates/dcim/virtualchassis.html:31 +#: netbox/templates/extras/configcontext.html:21 +#: netbox/templates/extras/configtemplate.html:17 +#: netbox/templates/extras/customfield.html:34 +#: netbox/templates/extras/dashboard/widget_add.html:14 +#: netbox/templates/extras/eventrule.html:21 +#: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 +#: netbox/templates/extras/savedfilter.html:17 +#: netbox/templates/extras/script_list.html:45 +#: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 +#: netbox/templates/generic/bulk_import.html:120 +#: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 +#: netbox/templates/ipam/asnrange.html:38 +#: netbox/templates/ipam/fhrpgroup.html:34 +#: netbox/templates/ipam/ipaddress.html:55 +#: netbox/templates/ipam/iprange.html:67 netbox/templates/ipam/prefix.html:81 +#: netbox/templates/ipam/rir.html:26 netbox/templates/ipam/role.html:26 +#: netbox/templates/ipam/routetarget.html:21 +#: netbox/templates/ipam/service.html:50 +#: netbox/templates/ipam/servicetemplate.html:27 +#: netbox/templates/ipam/vlan.html:62 netbox/templates/ipam/vlangroup.html:34 +#: netbox/templates/ipam/vrf.html:33 netbox/templates/tenancy/contact.html:67 +#: netbox/templates/tenancy/contactgroup.html:25 +#: netbox/templates/tenancy/contactrole.html:22 +#: netbox/templates/tenancy/tenant.html:24 +#: netbox/templates/tenancy/tenantgroup.html:33 +#: netbox/templates/users/group.html:21 +#: netbox/templates/users/objectpermission.html:21 +#: netbox/templates/users/token.html:27 +#: netbox/templates/virtualization/cluster.html:25 +#: netbox/templates/virtualization/clustergroup.html:26 +#: netbox/templates/virtualization/clustertype.html:26 +#: netbox/templates/virtualization/virtualdisk.html:39 +#: netbox/templates/virtualization/virtualmachine.html:31 +#: netbox/templates/virtualization/vminterface.html:51 +#: netbox/templates/vpn/ikepolicy.html:17 +#: netbox/templates/vpn/ikeproposal.html:17 +#: netbox/templates/vpn/ipsecpolicy.html:17 +#: netbox/templates/vpn/ipsecprofile.html:17 +#: netbox/templates/vpn/ipsecprofile.html:40 +#: netbox/templates/vpn/ipsecprofile.html:73 +#: netbox/templates/vpn/ipsecproposal.html:17 +#: netbox/templates/vpn/l2vpn.html:26 netbox/templates/vpn/tunnel.html:33 +#: netbox/templates/vpn/tunnelgroup.html:30 +#: netbox/templates/wireless/wirelesslan.html:26 +#: netbox/templates/wireless/wirelesslangroup.html:33 +#: netbox/templates/wireless/wirelesslink.html:34 +#: netbox/tenancy/forms/bulk_edit.py:32 netbox/tenancy/forms/bulk_edit.py:80 +#: netbox/tenancy/forms/bulk_edit.py:122 netbox/users/forms/bulk_edit.py:64 +#: netbox/users/forms/bulk_edit.py:82 netbox/users/forms/bulk_edit.py:112 +#: netbox/virtualization/forms/bulk_edit.py:32 +#: netbox/virtualization/forms/bulk_edit.py:46 +#: netbox/virtualization/forms/bulk_edit.py:100 +#: netbox/virtualization/forms/bulk_edit.py:177 +#: netbox/virtualization/forms/bulk_edit.py:228 +#: netbox/virtualization/forms/bulk_edit.py:337 +#: netbox/vpn/forms/bulk_edit.py:28 netbox/vpn/forms/bulk_edit.py:64 +#: netbox/vpn/forms/bulk_edit.py:121 netbox/vpn/forms/bulk_edit.py:155 +#: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 +#: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 +#: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "" -#: circuits/forms/bulk_edit.py:51 circuits/forms/bulk_edit.py:73 -#: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:37 -#: circuits/forms/bulk_import.py:52 circuits/forms/bulk_import.py:75 -#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 -#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 -#: circuits/forms/filtersets.py:199 circuits/forms/filtersets.py:232 -#: circuits/forms/filtersets.py:255 circuits/forms/model_forms.py:47 -#: circuits/forms/model_forms.py:61 circuits/forms/model_forms.py:93 -#: circuits/tables/circuits.py:58 circuits/tables/circuits.py:108 -#: circuits/tables/circuits.py:160 circuits/tables/providers.py:72 -#: circuits/tables/providers.py:103 templates/circuits/circuit.html:18 -#: templates/circuits/circuittermination.html:25 -#: templates/circuits/provider.html:20 -#: templates/circuits/provideraccount.html:20 -#: templates/circuits/providernetwork.html:20 -#: templates/dcim/inc/cable_termination.html:51 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 +#: netbox/circuits/tables/providers.py:72 +#: netbox/circuits/tables/providers.py:103 +#: netbox/templates/circuits/circuit.html:18 +#: netbox/templates/circuits/circuittermination.html:25 +#: netbox/templates/circuits/provider.html:20 +#: netbox/templates/circuits/provideraccount.html:20 +#: netbox/templates/circuits/providernetwork.html:20 +#: netbox/templates/dcim/inc/cable_termination.html:51 msgid "Provider" msgstr "" -#: circuits/forms/bulk_edit.py:80 circuits/forms/filtersets.py:91 -#: templates/circuits/providernetwork.html:28 +#: netbox/circuits/forms/bulk_edit.py:80 netbox/circuits/forms/filtersets.py:91 +#: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "" -#: circuits/forms/bulk_edit.py:100 circuits/forms/filtersets.py:107 -#: dcim/forms/bulk_edit.py:206 dcim/forms/bulk_edit.py:604 -#: dcim/forms/bulk_edit.py:804 dcim/forms/bulk_edit.py:1173 -#: dcim/forms/bulk_edit.py:1200 dcim/forms/bulk_edit.py:1678 -#: dcim/forms/filtersets.py:1064 dcim/forms/filtersets.py:1455 -#: dcim/forms/filtersets.py:1479 dcim/tables/devices.py:700 -#: dcim/tables/devices.py:757 dcim/tables/devices.py:999 -#: dcim/tables/devicetypes.py:250 dcim/tables/devicetypes.py:265 -#: dcim/tables/racks.py:33 extras/forms/bulk_edit.py:270 -#: extras/tables/tables.py:443 templates/circuits/circuittype.html:30 -#: templates/dcim/cable.html:40 templates/dcim/devicerole.html:34 -#: templates/dcim/frontport.html:40 templates/dcim/inventoryitemrole.html:26 -#: templates/dcim/rackrole.html:30 templates/dcim/rearport.html:40 -#: templates/extras/tag.html:26 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 +#: netbox/templates/circuits/circuittype.html:30 +#: netbox/templates/dcim/cable.html:40 netbox/templates/dcim/devicerole.html:34 +#: netbox/templates/dcim/frontport.html:40 +#: netbox/templates/dcim/inventoryitemrole.html:26 +#: netbox/templates/dcim/rackrole.html:30 +#: netbox/templates/dcim/rearport.html:40 netbox/templates/extras/tag.html:26 msgid "Color" msgstr "" -#: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:88 -#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:18 -#: core/forms/filtersets.py:33 core/tables/change_logging.py:32 -#: core/tables/data.py:20 core/tables/jobs.py:18 dcim/forms/bulk_edit.py:782 -#: dcim/forms/bulk_edit.py:921 dcim/forms/bulk_edit.py:989 -#: dcim/forms/bulk_edit.py:1008 dcim/forms/bulk_edit.py:1031 -#: dcim/forms/bulk_edit.py:1073 dcim/forms/bulk_edit.py:1117 -#: dcim/forms/bulk_edit.py:1168 dcim/forms/bulk_edit.py:1195 -#: dcim/forms/bulk_import.py:188 dcim/forms/bulk_import.py:260 -#: dcim/forms/bulk_import.py:708 dcim/forms/bulk_import.py:734 -#: dcim/forms/bulk_import.py:760 dcim/forms/bulk_import.py:780 -#: dcim/forms/bulk_import.py:863 dcim/forms/bulk_import.py:957 -#: dcim/forms/bulk_import.py:999 dcim/forms/bulk_import.py:1213 -#: dcim/forms/bulk_import.py:1376 dcim/forms/filtersets.py:955 -#: dcim/forms/filtersets.py:1054 dcim/forms/filtersets.py:1175 -#: dcim/forms/filtersets.py:1247 dcim/forms/filtersets.py:1272 -#: dcim/forms/filtersets.py:1296 dcim/forms/filtersets.py:1316 -#: dcim/forms/filtersets.py:1353 dcim/forms/filtersets.py:1450 -#: dcim/forms/filtersets.py:1474 dcim/forms/model_forms.py:703 -#: dcim/forms/model_forms.py:709 dcim/forms/object_import.py:84 -#: dcim/forms/object_import.py:113 dcim/forms/object_import.py:145 -#: dcim/tables/devices.py:178 dcim/tables/devices.py:810 -#: dcim/tables/power.py:77 dcim/tables/racks.py:138 -#: extras/forms/bulk_import.py:42 extras/tables/tables.py:405 -#: extras/tables/tables.py:465 netbox/tables/tables.py:240 -#: templates/circuits/circuit.html:30 templates/core/datasource.html:38 -#: templates/dcim/cable.html:15 templates/dcim/consoleport.html:36 -#: templates/dcim/consoleserverport.html:36 templates/dcim/frontport.html:36 -#: templates/dcim/interface.html:46 templates/dcim/interface.html:169 -#: templates/dcim/interface.html:311 templates/dcim/powerfeed.html:32 -#: templates/dcim/poweroutlet.html:36 templates/dcim/powerport.html:36 -#: templates/dcim/rearport.html:36 templates/extras/eventrule.html:74 -#: templates/virtualization/cluster.html:17 templates/vpn/l2vpn.html:22 -#: templates/wireless/inc/authentication_attrs.html:8 -#: templates/wireless/inc/wirelesslink_interface.html:14 -#: virtualization/forms/bulk_edit.py:60 virtualization/forms/bulk_import.py:41 -#: virtualization/forms/filtersets.py:54 virtualization/forms/model_forms.py:62 -#: virtualization/tables/clusters.py:66 vpn/forms/bulk_edit.py:264 -#: vpn/forms/bulk_import.py:264 vpn/forms/filtersets.py:217 -#: vpn/forms/model_forms.py:84 vpn/forms/model_forms.py:119 -#: vpn/forms/model_forms.py:231 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 +#: netbox/dcim/forms/object_import.py:84 netbox/dcim/forms/object_import.py:113 +#: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 +#: netbox/netbox/tables/tables.py:240 netbox/templates/circuits/circuit.html:30 +#: netbox/templates/core/datasource.html:38 netbox/templates/dcim/cable.html:15 +#: netbox/templates/dcim/consoleport.html:36 +#: netbox/templates/dcim/consoleserverport.html:36 +#: netbox/templates/dcim/frontport.html:36 +#: netbox/templates/dcim/interface.html:46 +#: netbox/templates/dcim/interface.html:169 +#: netbox/templates/dcim/interface.html:311 +#: netbox/templates/dcim/powerfeed.html:32 +#: netbox/templates/dcim/poweroutlet.html:36 +#: netbox/templates/dcim/powerport.html:36 +#: netbox/templates/dcim/rearport.html:36 +#: netbox/templates/extras/eventrule.html:74 +#: netbox/templates/virtualization/cluster.html:17 +#: netbox/templates/vpn/l2vpn.html:22 +#: netbox/templates/wireless/inc/authentication_attrs.html:8 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:14 +#: netbox/virtualization/forms/bulk_edit.py:60 +#: netbox/virtualization/forms/bulk_import.py:41 +#: netbox/virtualization/forms/filtersets.py:54 +#: netbox/virtualization/forms/model_forms.py:62 +#: netbox/virtualization/tables/clusters.py:66 +#: netbox/vpn/forms/bulk_edit.py:264 netbox/vpn/forms/bulk_import.py:264 +#: netbox/vpn/forms/filtersets.py:217 netbox/vpn/forms/model_forms.py:84 +#: netbox/vpn/forms/model_forms.py:119 netbox/vpn/forms/model_forms.py:231 msgid "Type" msgstr "" -#: circuits/forms/bulk_edit.py:128 circuits/forms/bulk_import.py:81 -#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:98 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "" -#: circuits/forms/bulk_edit.py:136 circuits/forms/bulk_import.py:94 -#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:38 -#: core/forms/filtersets.py:79 core/tables/data.py:23 core/tables/jobs.py:26 -#: core/tables/tasks.py:88 dcim/forms/bulk_edit.py:106 -#: dcim/forms/bulk_edit.py:181 dcim/forms/bulk_edit.py:351 -#: dcim/forms/bulk_edit.py:700 dcim/forms/bulk_edit.py:756 -#: dcim/forms/bulk_edit.py:788 dcim/forms/bulk_edit.py:915 -#: dcim/forms/bulk_edit.py:1701 dcim/forms/bulk_import.py:88 -#: dcim/forms/bulk_import.py:147 dcim/forms/bulk_import.py:248 -#: dcim/forms/bulk_import.py:505 dcim/forms/bulk_import.py:659 -#: dcim/forms/bulk_import.py:1207 dcim/forms/bulk_import.py:1371 -#: dcim/forms/bulk_import.py:1435 dcim/forms/filtersets.py:178 -#: dcim/forms/filtersets.py:237 dcim/forms/filtersets.py:359 -#: dcim/forms/filtersets.py:799 dcim/forms/filtersets.py:924 -#: dcim/forms/filtersets.py:958 dcim/forms/filtersets.py:1059 -#: dcim/forms/filtersets.py:1170 dcim/tables/devices.py:140 -#: dcim/tables/devices.py:813 dcim/tables/devices.py:1059 -#: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:126 -#: dcim/tables/sites.py:82 dcim/tables/sites.py:138 ipam/forms/bulk_edit.py:255 -#: ipam/forms/bulk_edit.py:305 ipam/forms/bulk_edit.py:353 -#: ipam/forms/bulk_edit.py:551 ipam/forms/bulk_import.py:192 -#: ipam/forms/bulk_import.py:257 ipam/forms/bulk_import.py:293 -#: ipam/forms/bulk_import.py:450 ipam/forms/filtersets.py:210 -#: ipam/forms/filtersets.py:281 ipam/forms/filtersets.py:355 -#: ipam/forms/filtersets.py:501 ipam/forms/model_forms.py:468 -#: ipam/tables/ip.py:237 ipam/tables/ip.py:312 ipam/tables/ip.py:363 -#: ipam/tables/ip.py:426 ipam/tables/ip.py:453 ipam/tables/vlans.py:126 -#: ipam/tables/vlans.py:232 templates/circuits/circuit.html:34 -#: templates/core/datasource.html:46 templates/core/job.html:48 -#: templates/core/rq_task.html:81 templates/core/system.html:18 -#: templates/dcim/cable.html:19 templates/dcim/device.html:178 -#: templates/dcim/location.html:45 templates/dcim/module.html:69 -#: templates/dcim/powerfeed.html:36 templates/dcim/rack.html:41 -#: templates/dcim/site.html:43 templates/extras/script_list.html:47 -#: templates/ipam/ipaddress.html:37 templates/ipam/iprange.html:54 -#: templates/ipam/prefix.html:73 templates/ipam/vlan.html:48 -#: templates/virtualization/cluster.html:21 -#: templates/virtualization/virtualmachine.html:19 templates/vpn/tunnel.html:25 -#: templates/wireless/wirelesslan.html:22 -#: templates/wireless/wirelesslink.html:17 users/forms/filtersets.py:32 -#: users/forms/model_forms.py:195 virtualization/forms/bulk_edit.py:70 -#: virtualization/forms/bulk_edit.py:118 virtualization/forms/bulk_import.py:54 -#: virtualization/forms/bulk_import.py:80 virtualization/forms/filtersets.py:62 -#: virtualization/forms/filtersets.py:160 virtualization/tables/clusters.py:74 -#: virtualization/tables/virtualmachines.py:60 vpn/forms/bulk_edit.py:39 -#: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:47 -#: vpn/tables/tunnels.py:48 wireless/forms/bulk_edit.py:43 -#: wireless/forms/bulk_edit.py:105 wireless/forms/bulk_import.py:43 -#: wireless/forms/bulk_import.py:84 wireless/forms/filtersets.py:49 -#: wireless/forms/filtersets.py:83 wireless/tables/wirelesslan.py:52 -#: wireless/tables/wirelesslink.py:20 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 +#: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 +#: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 +#: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 +#: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 +#: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 +#: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 +#: netbox/templates/circuits/circuit.html:34 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 +#: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 +#: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 +#: netbox/templates/dcim/site.html:43 +#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/ipam/ipaddress.html:37 +#: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 +#: netbox/templates/ipam/vlan.html:48 +#: netbox/templates/virtualization/cluster.html:21 +#: netbox/templates/virtualization/virtualmachine.html:19 +#: netbox/templates/vpn/tunnel.html:25 +#: netbox/templates/wireless/wirelesslan.html:22 +#: netbox/templates/wireless/wirelesslink.html:17 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 +#: netbox/virtualization/forms/bulk_edit.py:70 +#: netbox/virtualization/forms/bulk_edit.py:118 +#: netbox/virtualization/forms/bulk_import.py:54 +#: netbox/virtualization/forms/bulk_import.py:80 +#: netbox/virtualization/forms/filtersets.py:62 +#: netbox/virtualization/forms/filtersets.py:160 +#: netbox/virtualization/tables/clusters.py:74 +#: netbox/virtualization/tables/virtualmachines.py:60 +#: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 +#: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 +#: netbox/wireless/forms/bulk_edit.py:43 netbox/wireless/forms/bulk_edit.py:105 +#: netbox/wireless/forms/bulk_import.py:43 +#: netbox/wireless/forms/bulk_import.py:84 +#: netbox/wireless/forms/filtersets.py:49 +#: netbox/wireless/forms/filtersets.py:83 +#: netbox/wireless/tables/wirelesslan.py:52 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "" -#: circuits/forms/bulk_edit.py:142 circuits/forms/bulk_edit.py:233 -#: circuits/forms/bulk_import.py:99 circuits/forms/bulk_import.py:159 -#: circuits/forms/filtersets.py:119 circuits/forms/filtersets.py:241 -#: dcim/forms/bulk_edit.py:122 dcim/forms/bulk_edit.py:187 -#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:461 -#: dcim/forms/bulk_edit.py:690 dcim/forms/bulk_edit.py:794 -#: dcim/forms/bulk_edit.py:1706 dcim/forms/bulk_import.py:107 -#: dcim/forms/bulk_import.py:152 dcim/forms/bulk_import.py:241 -#: dcim/forms/bulk_import.py:334 dcim/forms/bulk_import.py:479 -#: dcim/forms/bulk_import.py:1219 dcim/forms/bulk_import.py:1428 -#: dcim/forms/filtersets.py:173 dcim/forms/filtersets.py:205 -#: dcim/forms/filtersets.py:323 dcim/forms/filtersets.py:399 -#: dcim/forms/filtersets.py:420 dcim/forms/filtersets.py:722 -#: dcim/forms/filtersets.py:916 dcim/forms/filtersets.py:978 -#: dcim/forms/filtersets.py:1008 dcim/forms/filtersets.py:1130 -#: dcim/tables/power.py:88 extras/filtersets.py:612 -#: extras/forms/filtersets.py:323 extras/forms/filtersets.py:396 -#: ipam/forms/bulk_edit.py:42 ipam/forms/bulk_edit.py:67 -#: ipam/forms/bulk_edit.py:111 ipam/forms/bulk_edit.py:140 -#: ipam/forms/bulk_edit.py:165 ipam/forms/bulk_edit.py:250 -#: ipam/forms/bulk_edit.py:300 ipam/forms/bulk_edit.py:348 -#: ipam/forms/bulk_edit.py:546 ipam/forms/bulk_import.py:38 -#: ipam/forms/bulk_import.py:67 ipam/forms/bulk_import.py:95 -#: ipam/forms/bulk_import.py:115 ipam/forms/bulk_import.py:135 -#: ipam/forms/bulk_import.py:164 ipam/forms/bulk_import.py:250 -#: ipam/forms/bulk_import.py:286 ipam/forms/bulk_import.py:443 -#: ipam/forms/filtersets.py:48 ipam/forms/filtersets.py:68 -#: ipam/forms/filtersets.py:100 ipam/forms/filtersets.py:120 -#: ipam/forms/filtersets.py:143 ipam/forms/filtersets.py:174 -#: ipam/forms/filtersets.py:267 ipam/forms/filtersets.py:310 -#: ipam/forms/filtersets.py:469 ipam/tables/ip.py:456 ipam/tables/vlans.py:229 -#: templates/circuits/circuit.html:38 templates/circuits/circuitgroup.html:36 -#: templates/dcim/cable.html:23 templates/dcim/device.html:79 -#: templates/dcim/location.html:49 templates/dcim/powerfeed.html:44 -#: templates/dcim/rack.html:32 templates/dcim/rackreservation.html:49 -#: templates/dcim/site.html:47 templates/dcim/virtualdevicecontext.html:52 -#: templates/ipam/aggregate.html:30 templates/ipam/asn.html:33 -#: templates/ipam/asnrange.html:29 templates/ipam/ipaddress.html:28 -#: templates/ipam/iprange.html:58 templates/ipam/prefix.html:29 -#: templates/ipam/routetarget.html:17 templates/ipam/vlan.html:39 -#: templates/ipam/vrf.html:20 templates/tenancy/tenant.html:17 -#: templates/virtualization/cluster.html:33 -#: templates/virtualization/virtualmachine.html:39 templates/vpn/l2vpn.html:30 -#: templates/vpn/tunnel.html:49 templates/wireless/wirelesslan.html:34 -#: templates/wireless/wirelesslink.html:25 tenancy/forms/forms.py:25 -#: tenancy/forms/forms.py:48 tenancy/forms/model_forms.py:52 -#: tenancy/tables/columns.py:64 virtualization/forms/bulk_edit.py:76 -#: virtualization/forms/bulk_edit.py:155 virtualization/forms/bulk_import.py:66 -#: virtualization/forms/bulk_import.py:115 -#: virtualization/forms/filtersets.py:47 virtualization/forms/filtersets.py:105 -#: vpn/forms/bulk_edit.py:59 vpn/forms/bulk_edit.py:269 -#: vpn/forms/bulk_import.py:59 vpn/forms/bulk_import.py:258 -#: vpn/forms/filtersets.py:214 wireless/forms/bulk_edit.py:63 -#: wireless/forms/bulk_edit.py:110 wireless/forms/bulk_import.py:55 -#: wireless/forms/bulk_import.py:97 wireless/forms/filtersets.py:35 -#: wireless/forms/filtersets.py:75 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 +#: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 +#: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 +#: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 +#: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 +#: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 +#: netbox/templates/dcim/location.html:49 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 +#: netbox/templates/dcim/rackreservation.html:49 +#: netbox/templates/dcim/site.html:47 +#: netbox/templates/dcim/virtualdevicecontext.html:52 +#: netbox/templates/ipam/aggregate.html:30 netbox/templates/ipam/asn.html:33 +#: netbox/templates/ipam/asnrange.html:29 +#: netbox/templates/ipam/ipaddress.html:28 +#: netbox/templates/ipam/iprange.html:58 netbox/templates/ipam/prefix.html:29 +#: netbox/templates/ipam/routetarget.html:17 netbox/templates/ipam/vlan.html:39 +#: netbox/templates/ipam/vrf.html:20 netbox/templates/tenancy/tenant.html:17 +#: netbox/templates/virtualization/cluster.html:33 +#: netbox/templates/virtualization/virtualmachine.html:39 +#: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 +#: netbox/templates/wireless/wirelesslan.html:34 +#: netbox/templates/wireless/wirelesslink.html:25 +#: netbox/tenancy/forms/forms.py:25 netbox/tenancy/forms/forms.py:48 +#: netbox/tenancy/forms/model_forms.py:52 netbox/tenancy/tables/columns.py:64 +#: netbox/virtualization/forms/bulk_edit.py:76 +#: netbox/virtualization/forms/bulk_edit.py:155 +#: netbox/virtualization/forms/bulk_import.py:66 +#: netbox/virtualization/forms/bulk_import.py:115 +#: netbox/virtualization/forms/filtersets.py:47 +#: netbox/virtualization/forms/filtersets.py:105 +#: netbox/vpn/forms/bulk_edit.py:59 netbox/vpn/forms/bulk_edit.py:269 +#: netbox/vpn/forms/bulk_import.py:59 netbox/vpn/forms/bulk_import.py:258 +#: netbox/vpn/forms/filtersets.py:214 netbox/wireless/forms/bulk_edit.py:63 +#: netbox/wireless/forms/bulk_edit.py:110 +#: netbox/wireless/forms/bulk_import.py:55 +#: netbox/wireless/forms/bulk_import.py:97 +#: netbox/wireless/forms/filtersets.py:35 +#: netbox/wireless/forms/filtersets.py:75 msgid "Tenant" msgstr "" -#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:174 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "" -#: circuits/forms/bulk_edit.py:152 circuits/forms/filtersets.py:179 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "" -#: circuits/forms/bulk_edit.py:158 circuits/forms/filtersets.py:186 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:173 circuits/forms/model_forms.py:112 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "" -#: circuits/forms/bulk_edit.py:174 circuits/forms/model_forms.py:113 -#: circuits/forms/model_forms.py:183 dcim/forms/model_forms.py:139 -#: dcim/forms/model_forms.py:181 dcim/forms/model_forms.py:266 -#: dcim/forms/model_forms.py:323 dcim/forms/model_forms.py:768 -#: dcim/forms/model_forms.py:1691 ipam/forms/model_forms.py:64 -#: ipam/forms/model_forms.py:81 ipam/forms/model_forms.py:115 -#: ipam/forms/model_forms.py:136 ipam/forms/model_forms.py:160 -#: ipam/forms/model_forms.py:232 ipam/forms/model_forms.py:261 -#: ipam/forms/model_forms.py:316 netbox/navigation/menu.py:24 -#: templates/dcim/device_edit.html:85 templates/dcim/htmx/cable_edit.html:72 -#: templates/ipam/ipaddress_bulk_add.html:27 templates/ipam/vlan_edit.html:22 -#: virtualization/forms/model_forms.py:80 -#: virtualization/forms/model_forms.py:222 vpn/forms/bulk_edit.py:78 -#: vpn/forms/filtersets.py:44 vpn/forms/model_forms.py:62 -#: vpn/forms/model_forms.py:147 vpn/forms/model_forms.py:411 -#: wireless/forms/model_forms.py:54 wireless/forms/model_forms.py:170 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 +#: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 +#: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 +#: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 +#: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 +#: netbox/netbox/navigation/menu.py:24 +#: netbox/templates/dcim/device_edit.html:85 +#: netbox/templates/dcim/htmx/cable_edit.html:72 +#: netbox/templates/ipam/ipaddress_bulk_add.html:27 +#: netbox/templates/ipam/vlan_edit.html:22 +#: netbox/virtualization/forms/model_forms.py:80 +#: netbox/virtualization/forms/model_forms.py:222 +#: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 +#: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 +#: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "" -#: circuits/forms/bulk_edit.py:193 circuits/forms/bulk_edit.py:217 -#: circuits/forms/model_forms.py:155 circuits/tables/circuits.py:117 -#: templates/circuits/inc/circuit_termination_fields.html:62 -#: templates/circuits/providernetwork.html:17 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:62 +#: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "" -#: circuits/forms/bulk_edit.py:199 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:203 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "" -#: circuits/forms/bulk_edit.py:206 dcim/forms/bulk_edit.py:951 -#: dcim/forms/bulk_edit.py:1315 dcim/forms/bulk_edit.py:1332 -#: dcim/forms/bulk_edit.py:1349 dcim/forms/bulk_edit.py:1367 -#: dcim/forms/bulk_edit.py:1455 dcim/forms/bulk_edit.py:1594 -#: dcim/forms/bulk_edit.py:1611 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "" -#: circuits/forms/bulk_edit.py:219 circuits/forms/model_forms.py:157 -#: templates/circuits/inc/circuit_termination_fields.html:54 -#: templates/dcim/frontport.html:121 templates/dcim/interface.html:193 -#: templates/dcim/rearport.html:111 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:54 +#: netbox/templates/dcim/frontport.html:121 +#: netbox/templates/dcim/interface.html:193 +#: netbox/templates/dcim/rearport.html:111 msgid "Circuit Termination" msgstr "" -#: circuits/forms/bulk_edit.py:221 circuits/forms/model_forms.py:159 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "" -#: circuits/forms/bulk_edit.py:251 circuits/forms/filtersets.py:268 -#: circuits/tables/circuits.py:168 dcim/forms/model_forms.py:551 -#: templates/circuits/circuitgroupassignment.html:30 -#: templates/dcim/device.html:133 templates/dcim/virtualchassis.html:68 -#: templates/dcim/virtualchassis_edit.html:56 -#: templates/ipam/inc/panels/fhrp_groups.html:26 tenancy/forms/bulk_edit.py:147 -#: tenancy/forms/filtersets.py:110 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 netbox/tenancy/forms/filtersets.py:110 msgid "Priority" msgstr "" -#: circuits/forms/bulk_import.py:40 circuits/forms/bulk_import.py:55 -#: circuits/forms/bulk_import.py:78 +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "" -#: circuits/forms/bulk_import.py:84 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "" -#: circuits/forms/bulk_import.py:91 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "" -#: circuits/forms/bulk_import.py:96 dcim/forms/bulk_import.py:90 -#: dcim/forms/bulk_import.py:149 dcim/forms/bulk_import.py:250 -#: dcim/forms/bulk_import.py:507 dcim/forms/bulk_import.py:661 -#: dcim/forms/bulk_import.py:1373 ipam/forms/bulk_import.py:194 -#: ipam/forms/bulk_import.py:259 ipam/forms/bulk_import.py:295 -#: ipam/forms/bulk_import.py:452 virtualization/forms/bulk_import.py:56 -#: virtualization/forms/bulk_import.py:82 vpn/forms/bulk_import.py:39 -#: wireless/forms/bulk_import.py:45 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 +#: netbox/virtualization/forms/bulk_import.py:56 +#: netbox/virtualization/forms/bulk_import.py:82 +#: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "" -#: circuits/forms/bulk_import.py:103 circuits/forms/bulk_import.py:163 -#: dcim/forms/bulk_import.py:111 dcim/forms/bulk_import.py:156 -#: dcim/forms/bulk_import.py:338 dcim/forms/bulk_import.py:483 -#: dcim/forms/bulk_import.py:1223 dcim/forms/bulk_import.py:1368 -#: dcim/forms/bulk_import.py:1432 ipam/forms/bulk_import.py:42 -#: ipam/forms/bulk_import.py:71 ipam/forms/bulk_import.py:99 -#: ipam/forms/bulk_import.py:119 ipam/forms/bulk_import.py:139 -#: ipam/forms/bulk_import.py:168 ipam/forms/bulk_import.py:254 -#: ipam/forms/bulk_import.py:290 ipam/forms/bulk_import.py:447 -#: virtualization/forms/bulk_import.py:70 -#: virtualization/forms/bulk_import.py:119 vpn/forms/bulk_import.py:63 -#: wireless/forms/bulk_import.py:59 wireless/forms/bulk_import.py:101 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 +#: netbox/virtualization/forms/bulk_import.py:70 +#: netbox/virtualization/forms/bulk_import.py:119 +#: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 +#: netbox/wireless/forms/bulk_import.py:101 msgid "Assigned tenant" msgstr "" -#: circuits/forms/bulk_import.py:121 -#: templates/circuits/inc/circuit_termination.html:6 -#: templates/circuits/inc/circuit_termination_fields.html:15 -#: templates/dcim/cable.html:68 templates/dcim/cable.html:72 -#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:77 +#: netbox/circuits/forms/bulk_import.py:121 +#: netbox/templates/circuits/inc/circuit_termination.html:6 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:15 +#: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 +#: netbox/vpn/forms/bulk_import.py:100 netbox/vpn/forms/filtersets.py:77 msgid "Termination" msgstr "" -#: circuits/forms/bulk_import.py:131 circuits/forms/filtersets.py:147 -#: circuits/forms/filtersets.py:227 circuits/forms/model_forms.py:144 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "" -#: circuits/forms/filtersets.py:30 circuits/forms/filtersets.py:118 -#: circuits/forms/filtersets.py:200 dcim/forms/bulk_edit.py:338 -#: dcim/forms/bulk_edit.py:441 dcim/forms/bulk_edit.py:682 -#: dcim/forms/bulk_edit.py:729 dcim/forms/bulk_edit.py:882 -#: dcim/forms/bulk_import.py:235 dcim/forms/bulk_import.py:315 -#: dcim/forms/bulk_import.py:546 dcim/forms/bulk_import.py:1317 -#: dcim/forms/bulk_import.py:1351 dcim/forms/filtersets.py:95 -#: dcim/forms/filtersets.py:322 dcim/forms/filtersets.py:356 -#: dcim/forms/filtersets.py:396 dcim/forms/filtersets.py:447 -#: dcim/forms/filtersets.py:719 dcim/forms/filtersets.py:762 -#: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1006 -#: dcim/forms/filtersets.py:1026 dcim/forms/filtersets.py:1090 -#: dcim/forms/filtersets.py:1120 dcim/forms/filtersets.py:1129 -#: dcim/forms/filtersets.py:1240 dcim/forms/filtersets.py:1264 -#: dcim/forms/filtersets.py:1289 dcim/forms/filtersets.py:1308 -#: dcim/forms/filtersets.py:1331 dcim/forms/filtersets.py:1442 -#: dcim/forms/filtersets.py:1466 dcim/forms/filtersets.py:1490 -#: dcim/forms/filtersets.py:1508 dcim/forms/filtersets.py:1525 -#: dcim/forms/model_forms.py:180 dcim/forms/model_forms.py:243 -#: dcim/forms/model_forms.py:468 dcim/forms/model_forms.py:728 -#: dcim/tables/devices.py:157 dcim/tables/power.py:30 dcim/tables/racks.py:118 -#: dcim/tables/racks.py:212 extras/filtersets.py:536 -#: extras/forms/filtersets.py:320 ipam/forms/bulk_edit.py:460 -#: ipam/forms/filtersets.py:173 ipam/forms/filtersets.py:414 -#: ipam/forms/filtersets.py:437 ipam/forms/filtersets.py:467 -#: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 -#: templates/dcim/inc/cable_termination.html:12 templates/dcim/location.html:26 -#: templates/dcim/powerpanel.html:26 templates/dcim/rack.html:24 -#: templates/dcim/rackreservation.html:32 virtualization/forms/filtersets.py:46 -#: virtualization/forms/filtersets.py:100 wireless/forms/model_forms.py:87 -#: wireless/forms/model_forms.py:129 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 +#: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 +#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 +#: netbox/templates/dcim/device_edit.html:30 +#: netbox/templates/dcim/inc/cable_termination.html:12 +#: netbox/templates/dcim/location.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 +#: netbox/templates/dcim/rackreservation.html:32 +#: netbox/virtualization/forms/filtersets.py:46 +#: netbox/virtualization/forms/filtersets.py:100 +#: netbox/wireless/forms/model_forms.py:87 +#: netbox/wireless/forms/model_forms.py:129 msgid "Location" msgstr "" -#: circuits/forms/filtersets.py:32 circuits/forms/filtersets.py:120 -#: dcim/forms/filtersets.py:144 dcim/forms/filtersets.py:158 -#: dcim/forms/filtersets.py:174 dcim/forms/filtersets.py:206 -#: dcim/forms/filtersets.py:328 dcim/forms/filtersets.py:400 -#: dcim/forms/filtersets.py:471 dcim/forms/filtersets.py:723 -#: dcim/forms/filtersets.py:1091 netbox/navigation/menu.py:31 -#: netbox/navigation/menu.py:33 tenancy/forms/filtersets.py:42 -#: tenancy/tables/columns.py:70 tenancy/tables/contacts.py:25 -#: tenancy/views.py:19 virtualization/forms/filtersets.py:37 -#: virtualization/forms/filtersets.py:48 virtualization/forms/filtersets.py:106 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 +#: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 +#: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 +#: netbox/virtualization/forms/filtersets.py:37 +#: netbox/virtualization/forms/filtersets.py:48 +#: netbox/virtualization/forms/filtersets.py:106 msgid "Contacts" msgstr "" -#: circuits/forms/filtersets.py:37 circuits/forms/filtersets.py:157 -#: dcim/forms/bulk_edit.py:112 dcim/forms/bulk_edit.py:313 -#: dcim/forms/bulk_edit.py:857 dcim/forms/bulk_import.py:93 -#: dcim/forms/filtersets.py:73 dcim/forms/filtersets.py:185 -#: dcim/forms/filtersets.py:211 dcim/forms/filtersets.py:334 -#: dcim/forms/filtersets.py:425 dcim/forms/filtersets.py:739 -#: dcim/forms/filtersets.py:983 dcim/forms/filtersets.py:1013 -#: dcim/forms/filtersets.py:1097 dcim/forms/filtersets.py:1136 -#: dcim/forms/filtersets.py:1576 dcim/forms/filtersets.py:1600 -#: dcim/forms/filtersets.py:1624 dcim/forms/model_forms.py:112 -#: dcim/forms/object_create.py:375 dcim/tables/devices.py:143 -#: dcim/tables/sites.py:85 extras/filtersets.py:503 ipam/forms/bulk_edit.py:207 -#: ipam/forms/bulk_edit.py:441 ipam/forms/bulk_edit.py:519 -#: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:422 -#: ipam/forms/filtersets.py:475 templates/dcim/device.html:18 -#: templates/dcim/rack.html:16 templates/dcim/rackreservation.html:22 -#: templates/dcim/region.html:26 templates/dcim/site.html:31 -#: templates/ipam/prefix.html:49 templates/ipam/vlan.html:16 -#: virtualization/forms/bulk_edit.py:81 virtualization/forms/filtersets.py:59 -#: virtualization/forms/filtersets.py:133 -#: virtualization/forms/model_forms.py:92 vpn/forms/filtersets.py:257 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 +#: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 +#: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 +#: netbox/templates/dcim/rack.html:16 +#: netbox/templates/dcim/rackreservation.html:22 +#: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 +#: netbox/templates/ipam/prefix.html:49 netbox/templates/ipam/vlan.html:16 +#: netbox/virtualization/forms/bulk_edit.py:81 +#: netbox/virtualization/forms/filtersets.py:59 +#: netbox/virtualization/forms/filtersets.py:133 +#: netbox/virtualization/forms/model_forms.py:92 +#: netbox/vpn/forms/filtersets.py:257 msgid "Region" msgstr "" -#: circuits/forms/filtersets.py:42 circuits/forms/filtersets.py:162 -#: dcim/forms/bulk_edit.py:321 dcim/forms/bulk_edit.py:865 -#: dcim/forms/filtersets.py:78 dcim/forms/filtersets.py:190 -#: dcim/forms/filtersets.py:216 dcim/forms/filtersets.py:347 -#: dcim/forms/filtersets.py:430 dcim/forms/filtersets.py:744 -#: dcim/forms/filtersets.py:988 dcim/forms/filtersets.py:1102 -#: dcim/forms/filtersets.py:1141 dcim/forms/object_create.py:383 -#: extras/filtersets.py:520 ipam/forms/bulk_edit.py:212 -#: ipam/forms/bulk_edit.py:448 ipam/forms/bulk_edit.py:524 -#: ipam/forms/filtersets.py:222 ipam/forms/filtersets.py:427 -#: ipam/forms/filtersets.py:480 virtualization/forms/bulk_edit.py:86 -#: virtualization/forms/filtersets.py:69 virtualization/forms/filtersets.py:138 -#: virtualization/forms/model_forms.py:98 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 +#: netbox/virtualization/forms/bulk_edit.py:86 +#: netbox/virtualization/forms/filtersets.py:69 +#: netbox/virtualization/forms/filtersets.py:138 +#: netbox/virtualization/forms/model_forms.py:98 msgid "Site group" msgstr "" -#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 -#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 -#: core/forms/filtersets.py:67 core/forms/filtersets.py:135 -#: dcim/forms/bulk_edit.py:828 dcim/forms/filtersets.py:172 -#: dcim/forms/filtersets.py:204 dcim/forms/filtersets.py:915 -#: dcim/forms/filtersets.py:1007 dcim/forms/filtersets.py:1131 -#: dcim/forms/filtersets.py:1239 dcim/forms/filtersets.py:1263 -#: dcim/forms/filtersets.py:1288 dcim/forms/filtersets.py:1307 -#: dcim/forms/filtersets.py:1327 dcim/forms/filtersets.py:1441 -#: dcim/forms/filtersets.py:1465 dcim/forms/filtersets.py:1489 -#: dcim/forms/filtersets.py:1507 dcim/forms/filtersets.py:1523 -#: extras/forms/bulk_edit.py:90 extras/forms/filtersets.py:44 -#: extras/forms/filtersets.py:134 extras/forms/filtersets.py:165 -#: extras/forms/filtersets.py:205 extras/forms/filtersets.py:221 -#: extras/forms/filtersets.py:252 extras/forms/filtersets.py:276 -#: extras/forms/filtersets.py:441 ipam/forms/filtersets.py:99 -#: ipam/forms/filtersets.py:266 ipam/forms/filtersets.py:307 -#: ipam/forms/filtersets.py:382 ipam/forms/filtersets.py:468 -#: ipam/forms/filtersets.py:527 ipam/forms/filtersets.py:545 -#: netbox/tables/tables.py:256 virtualization/forms/filtersets.py:45 -#: virtualization/forms/filtersets.py:103 -#: virtualization/forms/filtersets.py:198 -#: virtualization/forms/filtersets.py:243 vpn/forms/filtersets.py:213 -#: wireless/forms/bulk_edit.py:150 wireless/forms/filtersets.py:34 -#: wireless/forms/filtersets.py:74 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 +#: netbox/virtualization/forms/filtersets.py:45 +#: netbox/virtualization/forms/filtersets.py:103 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 +#: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "" -#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:63 -#: circuits/tables/providers.py:66 templates/circuits/circuit.html:22 -#: templates/circuits/provideraccount.html:24 +#: netbox/circuits/forms/filtersets.py:73 netbox/circuits/tables/circuits.py:63 +#: netbox/circuits/tables/providers.py:66 +#: netbox/templates/circuits/circuit.html:22 +#: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "" -#: circuits/forms/filtersets.py:217 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "" -#: circuits/forms/filtersets.py:250 extras/forms/model_forms.py:582 -#: ipam/forms/filtersets.py:142 ipam/forms/filtersets.py:546 -#: ipam/forms/model_forms.py:323 templates/extras/configcontext.html:60 -#: templates/ipam/ipaddress.html:59 templates/ipam/vlan_edit.html:30 -#: tenancy/forms/filtersets.py:87 users/forms/model_forms.py:315 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 msgid "Assignment" msgstr "" -#: circuits/forms/filtersets.py:265 circuits/forms/model_forms.py:195 -#: circuits/tables/circuits.py:155 dcim/forms/bulk_edit.py:117 -#: dcim/forms/bulk_import.py:100 dcim/forms/model_forms.py:117 -#: dcim/tables/sites.py:89 extras/forms/filtersets.py:480 -#: ipam/filtersets.py:999 ipam/forms/bulk_edit.py:538 -#: ipam/forms/bulk_import.py:436 ipam/forms/model_forms.py:528 -#: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:122 ipam/tables/vlans.py:226 -#: templates/circuits/circuitgroupassignment.html:22 -#: templates/dcim/interface.html:284 templates/dcim/site.html:37 -#: templates/ipam/inc/panels/fhrp_groups.html:23 templates/ipam/vlan.html:27 -#: templates/tenancy/contact.html:21 templates/tenancy/tenant.html:20 -#: templates/users/group.html:6 templates/users/group.html:14 -#: templates/virtualization/cluster.html:29 templates/vpn/tunnel.html:29 -#: templates/wireless/wirelesslan.html:18 tenancy/forms/bulk_edit.py:43 -#: tenancy/forms/bulk_edit.py:94 tenancy/forms/bulk_import.py:40 -#: tenancy/forms/bulk_import.py:81 tenancy/forms/filtersets.py:48 -#: tenancy/forms/filtersets.py:78 tenancy/forms/filtersets.py:97 -#: tenancy/forms/model_forms.py:45 tenancy/forms/model_forms.py:97 -#: tenancy/forms/model_forms.py:122 tenancy/tables/contacts.py:60 -#: tenancy/tables/contacts.py:107 tenancy/tables/tenants.py:42 -#: users/filtersets.py:62 users/filtersets.py:185 users/forms/filtersets.py:31 -#: users/forms/filtersets.py:37 users/forms/filtersets.py:79 -#: virtualization/forms/bulk_edit.py:65 virtualization/forms/bulk_import.py:47 -#: virtualization/forms/filtersets.py:85 virtualization/forms/model_forms.py:66 -#: virtualization/tables/clusters.py:70 vpn/forms/bulk_edit.py:112 -#: vpn/forms/bulk_import.py:158 vpn/forms/filtersets.py:116 -#: vpn/tables/crypto.py:31 vpn/tables/tunnels.py:44 -#: wireless/forms/bulk_edit.py:48 wireless/forms/bulk_import.py:36 -#: wireless/forms/filtersets.py:46 wireless/forms/model_forms.py:40 -#: wireless/tables/wirelesslan.py:48 +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 netbox/tenancy/forms/filtersets.py:48 +#: netbox/tenancy/forms/filtersets.py:78 netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 netbox/tenancy/tables/contacts.py:60 +#: netbox/tenancy/tables/contacts.py:107 netbox/tenancy/tables/tenants.py:42 +#: netbox/users/filtersets.py:62 netbox/users/filtersets.py:185 +#: netbox/users/forms/filtersets.py:31 netbox/users/forms/filtersets.py:37 +#: netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 msgid "Group" msgstr "" -#: circuits/forms/model_forms.py:182 templates/circuits/circuitgroup.html:25 +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 msgid "Circuit Group" msgstr "" -#: circuits/models/circuits.py:27 dcim/models/cables.py:67 -#: dcim/models/device_component_templates.py:518 -#: dcim/models/device_component_templates.py:618 -#: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 -#: dcim/models/device_components.py:1205 dcim/models/devices.py:479 -#: dcim/models/racks.py:224 extras/models/tags.py:28 +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 +#: netbox/dcim/models/device_components.py:976 +#: netbox/dcim/models/device_components.py:1050 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 +#: netbox/extras/models/tags.py:28 msgid "color" msgstr "" -#: circuits/models/circuits.py:36 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "" -#: circuits/models/circuits.py:37 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "" -#: circuits/models/circuits.py:48 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "" -#: circuits/models/circuits.py:49 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "" -#: circuits/models/circuits.py:69 core/models/data.py:52 core/models/jobs.py:86 -#: dcim/models/cables.py:49 dcim/models/devices.py:653 -#: dcim/models/devices.py:1166 dcim/models/devices.py:1392 -#: dcim/models/power.py:96 dcim/models/racks.py:297 dcim/models/sites.py:154 -#: dcim/models/sites.py:266 ipam/models/ip.py:253 ipam/models/ip.py:522 -#: ipam/models/ip.py:730 ipam/models/vlans.py:195 -#: virtualization/models/clusters.py:74 -#: virtualization/models/virtualmachines.py:84 vpn/models/tunnels.py:40 -#: wireless/models.py:95 wireless/models.py:159 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 +#: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 +#: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 +#: netbox/virtualization/models/virtualmachines.py:84 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "" -#: circuits/models/circuits.py:84 templates/core/plugin.html:19 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "" -#: circuits/models/circuits.py:89 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "" -#: circuits/models/circuits.py:94 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "" -#: circuits/models/circuits.py:95 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "" -#: circuits/models/circuits.py:137 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "" -#: circuits/models/circuits.py:138 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "" -#: circuits/models/circuits.py:170 +#: netbox/circuits/models/circuits.py:170 msgid "circuit group" msgstr "" -#: circuits/models/circuits.py:171 +#: netbox/circuits/models/circuits.py:171 msgid "circuit groups" msgstr "" -#: circuits/models/circuits.py:195 ipam/models/fhrp.py:93 -#: tenancy/models/contacts.py:134 +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 msgid "priority" msgstr "" -#: circuits/models/circuits.py:213 +#: netbox/circuits/models/circuits.py:213 msgid "Circuit group assignment" msgstr "" -#: circuits/models/circuits.py:214 +#: netbox/circuits/models/circuits.py:214 msgid "Circuit group assignments" msgstr "" -#: circuits/models/circuits.py:240 +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "" -#: circuits/models/circuits.py:257 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "" -#: circuits/models/circuits.py:260 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "" -#: circuits/models/circuits.py:265 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "" -#: circuits/models/circuits.py:266 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "" -#: circuits/models/circuits.py:271 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "" -#: circuits/models/circuits.py:272 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "" -#: circuits/models/circuits.py:277 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "" -#: circuits/models/circuits.py:278 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "" -#: circuits/models/circuits.py:281 dcim/models/device_component_templates.py:61 -#: dcim/models/device_components.py:69 dcim/models/racks.py:685 -#: extras/models/configs.py:45 extras/models/configs.py:219 -#: extras/models/customfields.py:125 extras/models/models.py:61 -#: extras/models/models.py:158 extras/models/models.py:396 -#: extras/models/models.py:511 extras/models/notifications.py:131 -#: extras/models/staging.py:31 extras/models/tags.py:32 -#: netbox/models/__init__.py:110 netbox/models/__init__.py:145 -#: netbox/models/__init__.py:191 users/models/permissions.py:24 -#: users/models/tokens.py:57 users/models/users.py:33 -#: virtualization/models/virtualmachines.py:289 +#: netbox/circuits/models/circuits.py:281 +#: netbox/dcim/models/device_component_templates.py:61 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 +#: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "" -#: circuits/models/circuits.py:294 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "" -#: circuits/models/circuits.py:295 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "" -#: circuits/models/circuits.py:308 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" -#: circuits/models/circuits.py:310 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" -#: circuits/models/providers.py:22 circuits/models/providers.py:66 -#: circuits/models/providers.py:104 core/models/data.py:39 -#: core/models/jobs.py:47 dcim/models/device_component_templates.py:43 -#: dcim/models/device_components.py:54 dcim/models/devices.py:593 -#: dcim/models/devices.py:1323 dcim/models/devices.py:1388 -#: dcim/models/power.py:39 dcim/models/power.py:92 dcim/models/racks.py:262 -#: dcim/models/sites.py:138 extras/models/configs.py:36 -#: extras/models/configs.py:215 extras/models/customfields.py:92 -#: extras/models/models.py:56 extras/models/models.py:153 -#: extras/models/models.py:296 extras/models/models.py:392 -#: extras/models/models.py:501 extras/models/models.py:596 -#: extras/models/notifications.py:126 extras/models/scripts.py:30 -#: extras/models/staging.py:26 ipam/models/asns.py:18 ipam/models/fhrp.py:25 -#: ipam/models/services.py:52 ipam/models/services.py:88 -#: ipam/models/vlans.py:36 ipam/models/vlans.py:184 ipam/models/vrfs.py:22 -#: ipam/models/vrfs.py:79 netbox/models/__init__.py:137 -#: netbox/models/__init__.py:181 tenancy/models/contacts.py:64 -#: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 -#: users/models/permissions.py:20 users/models/users.py:28 -#: virtualization/models/clusters.py:57 -#: virtualization/models/virtualmachines.py:72 -#: virtualization/models/virtualmachines.py:279 vpn/models/crypto.py:24 -#: vpn/models/crypto.py:71 vpn/models/crypto.py:131 vpn/models/crypto.py:183 -#: vpn/models/crypto.py:221 vpn/models/l2vpn.py:22 vpn/models/tunnels.py:35 -#: wireless/models.py:51 +#: netbox/circuits/models/providers.py:22 +#: netbox/circuits/models/providers.py:66 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 +#: netbox/dcim/models/device_component_templates.py:43 +#: netbox/dcim/models/device_components.py:54 netbox/dcim/models/devices.py:593 +#: netbox/dcim/models/devices.py:1323 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/power.py:39 netbox/dcim/models/power.py:92 +#: netbox/dcim/models/racks.py:262 netbox/dcim/models/sites.py:138 +#: netbox/extras/models/configs.py:36 netbox/extras/models/configs.py:215 +#: netbox/extras/models/customfields.py:92 netbox/extras/models/models.py:56 +#: netbox/extras/models/models.py:153 netbox/extras/models/models.py:296 +#: netbox/extras/models/models.py:392 netbox/extras/models/models.py:501 +#: netbox/extras/models/models.py:596 netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 +#: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 +#: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 +#: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 +#: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 +#: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 +#: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 +#: netbox/virtualization/models/virtualmachines.py:72 +#: netbox/virtualization/models/virtualmachines.py:279 +#: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 +#: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 +#: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "" -#: circuits/models/providers.py:25 +#: netbox/circuits/models/providers.py:25 msgid "Full name of the provider" msgstr "" -#: circuits/models/providers.py:28 dcim/models/devices.py:86 -#: dcim/models/racks.py:137 dcim/models/sites.py:149 -#: extras/models/models.py:506 ipam/models/asns.py:23 ipam/models/vlans.py:40 -#: netbox/models/__init__.py:141 netbox/models/__init__.py:186 -#: tenancy/models/tenants.py:25 tenancy/models/tenants.py:49 -#: vpn/models/l2vpn.py:27 wireless/models.py:56 +#: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "" -#: circuits/models/providers.py:42 +#: netbox/circuits/models/providers.py:42 msgid "provider" msgstr "" -#: circuits/models/providers.py:43 +#: netbox/circuits/models/providers.py:43 msgid "providers" msgstr "" -#: circuits/models/providers.py:63 +#: netbox/circuits/models/providers.py:63 msgid "account ID" msgstr "" -#: circuits/models/providers.py:86 +#: netbox/circuits/models/providers.py:86 msgid "provider account" msgstr "" -#: circuits/models/providers.py:87 +#: netbox/circuits/models/providers.py:87 msgid "provider accounts" msgstr "" -#: circuits/models/providers.py:115 +#: netbox/circuits/models/providers.py:115 msgid "service ID" msgstr "" -#: circuits/models/providers.py:126 +#: netbox/circuits/models/providers.py:126 msgid "provider network" msgstr "" -#: circuits/models/providers.py:127 +#: netbox/circuits/models/providers.py:127 msgid "provider networks" msgstr "" -#: circuits/tables/circuits.py:32 circuits/tables/circuits.py:132 -#: circuits/tables/providers.py:18 circuits/tables/providers.py:69 -#: circuits/tables/providers.py:99 core/tables/data.py:16 -#: core/tables/jobs.py:14 core/tables/plugins.py:44 core/tables/tasks.py:11 -#: core/tables/tasks.py:115 dcim/forms/filtersets.py:63 -#: dcim/forms/object_create.py:43 dcim/tables/devices.py:52 -#: dcim/tables/devices.py:92 dcim/tables/devices.py:134 -#: dcim/tables/devices.py:289 dcim/tables/devices.py:392 -#: dcim/tables/devices.py:433 dcim/tables/devices.py:482 -#: dcim/tables/devices.py:531 dcim/tables/devices.py:645 -#: dcim/tables/devices.py:727 dcim/tables/devices.py:774 -#: dcim/tables/devices.py:837 dcim/tables/devices.py:907 -#: dcim/tables/devices.py:970 dcim/tables/devices.py:990 -#: dcim/tables/devices.py:1019 dcim/tables/devices.py:1049 -#: dcim/tables/devicetypes.py:32 dcim/tables/power.py:22 -#: dcim/tables/power.py:62 dcim/tables/racks.py:24 dcim/tables/racks.py:113 -#: dcim/tables/sites.py:24 dcim/tables/sites.py:51 dcim/tables/sites.py:78 -#: dcim/tables/sites.py:130 extras/forms/filtersets.py:213 -#: extras/tables/tables.py:58 extras/tables/tables.py:122 -#: extras/tables/tables.py:155 extras/tables/tables.py:180 -#: extras/tables/tables.py:246 extras/tables/tables.py:361 -#: extras/tables/tables.py:378 extras/tables/tables.py:401 -#: extras/tables/tables.py:439 extras/tables/tables.py:491 -#: extras/tables/tables.py:514 ipam/forms/bulk_edit.py:406 -#: ipam/forms/filtersets.py:386 ipam/tables/asn.py:16 ipam/tables/ip.py:85 -#: ipam/tables/ip.py:160 ipam/tables/services.py:15 ipam/tables/services.py:40 -#: ipam/tables/vlans.py:64 ipam/tables/vlans.py:114 ipam/tables/vrfs.py:26 -#: ipam/tables/vrfs.py:68 templates/circuits/circuitgroup.html:28 -#: templates/circuits/circuittype.html:22 -#: templates/circuits/provideraccount.html:28 -#: templates/circuits/providernetwork.html:24 templates/core/datasource.html:34 -#: templates/core/job.html:44 templates/core/plugin.html:53 -#: templates/core/rq_worker.html:43 templates/dcim/consoleport.html:28 -#: templates/dcim/consoleserverport.html:28 templates/dcim/devicebay.html:24 -#: templates/dcim/devicerole.html:26 templates/dcim/frontport.html:28 -#: templates/dcim/inc/interface_vlans_table.html:5 -#: templates/dcim/inc/panels/inventory_items.html:18 -#: templates/dcim/interface.html:38 templates/dcim/interface.html:165 -#: templates/dcim/inventoryitem.html:28 -#: templates/dcim/inventoryitemrole.html:18 templates/dcim/location.html:29 -#: templates/dcim/manufacturer.html:36 templates/dcim/modulebay.html:30 -#: templates/dcim/platform.html:29 templates/dcim/poweroutlet.html:28 -#: templates/dcim/powerport.html:28 templates/dcim/rackrole.html:22 -#: templates/dcim/rearport.html:28 templates/dcim/region.html:29 -#: templates/dcim/sitegroup.html:29 templates/dcim/virtualdevicecontext.html:18 -#: templates/extras/configcontext.html:13 -#: templates/extras/configtemplate.html:13 templates/extras/customfield.html:13 -#: templates/extras/customlink.html:13 templates/extras/eventrule.html:13 -#: templates/extras/exporttemplate.html:15 -#: templates/extras/notificationgroup.html:14 -#: templates/extras/savedfilter.html:13 templates/extras/script_list.html:44 -#: templates/extras/tag.html:14 templates/extras/webhook.html:13 -#: templates/ipam/asnrange.html:15 templates/ipam/fhrpgroup.html:30 -#: templates/ipam/rir.html:22 templates/ipam/role.html:22 -#: templates/ipam/routetarget.html:13 templates/ipam/service.html:24 -#: templates/ipam/servicetemplate.html:15 templates/ipam/vlan.html:35 -#: templates/ipam/vlangroup.html:30 templates/tenancy/contact.html:25 -#: templates/tenancy/contactgroup.html:21 templates/tenancy/contactrole.html:18 -#: templates/tenancy/tenantgroup.html:29 templates/users/group.html:17 -#: templates/users/objectpermission.html:17 -#: templates/virtualization/cluster.html:13 -#: templates/virtualization/clustergroup.html:22 -#: templates/virtualization/clustertype.html:22 -#: templates/virtualization/virtualdisk.html:25 -#: templates/virtualization/virtualmachine.html:15 -#: templates/virtualization/vminterface.html:25 templates/vpn/ikepolicy.html:13 -#: templates/vpn/ikeproposal.html:13 templates/vpn/ipsecpolicy.html:13 -#: templates/vpn/ipsecprofile.html:13 templates/vpn/ipsecprofile.html:36 -#: templates/vpn/ipsecprofile.html:69 templates/vpn/ipsecproposal.html:13 -#: templates/vpn/l2vpn.html:14 templates/vpn/tunnel.html:21 -#: templates/vpn/tunnelgroup.html:26 -#: templates/wireless/wirelesslangroup.html:29 tenancy/tables/contacts.py:19 -#: tenancy/tables/contacts.py:41 tenancy/tables/contacts.py:56 -#: tenancy/tables/tenants.py:16 tenancy/tables/tenants.py:38 users/tables.py:62 -#: users/tables.py:76 virtualization/forms/bulk_create.py:20 -#: virtualization/forms/object_create.py:13 -#: virtualization/forms/object_create.py:23 -#: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 -#: virtualization/tables/clusters.py:62 -#: virtualization/tables/virtualmachines.py:55 -#: virtualization/tables/virtualmachines.py:139 -#: virtualization/tables/virtualmachines.py:194 vpn/tables/crypto.py:18 -#: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 -#: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 -#: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 -#: wireless/tables/wirelesslan.py:79 +#: netbox/circuits/tables/circuits.py:32 netbox/circuits/tables/circuits.py:132 +#: netbox/circuits/tables/providers.py:18 +#: netbox/circuits/tables/providers.py:69 +#: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 +#: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 +#: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 +#: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 +#: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 +#: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 +#: netbox/templates/circuits/provideraccount.html:28 +#: netbox/templates/circuits/providernetwork.html:24 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 netbox/templates/core/rq_worker.html:43 +#: netbox/templates/dcim/consoleport.html:28 +#: netbox/templates/dcim/consoleserverport.html:28 +#: netbox/templates/dcim/devicebay.html:24 +#: netbox/templates/dcim/devicerole.html:26 +#: netbox/templates/dcim/frontport.html:28 +#: netbox/templates/dcim/inc/interface_vlans_table.html:5 +#: netbox/templates/dcim/inc/panels/inventory_items.html:18 +#: netbox/templates/dcim/interface.html:38 +#: netbox/templates/dcim/interface.html:165 +#: netbox/templates/dcim/inventoryitem.html:28 +#: netbox/templates/dcim/inventoryitemrole.html:18 +#: netbox/templates/dcim/location.html:29 +#: netbox/templates/dcim/manufacturer.html:36 +#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/platform.html:29 +#: netbox/templates/dcim/poweroutlet.html:28 +#: netbox/templates/dcim/powerport.html:28 +#: netbox/templates/dcim/rackrole.html:22 +#: netbox/templates/dcim/rearport.html:28 netbox/templates/dcim/region.html:29 +#: netbox/templates/dcim/sitegroup.html:29 +#: netbox/templates/dcim/virtualdevicecontext.html:18 +#: netbox/templates/extras/configcontext.html:13 +#: netbox/templates/extras/configtemplate.html:13 +#: netbox/templates/extras/customfield.html:13 +#: netbox/templates/extras/customlink.html:13 +#: netbox/templates/extras/eventrule.html:13 +#: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 +#: netbox/templates/extras/savedfilter.html:13 +#: netbox/templates/extras/script_list.html:44 +#: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 +#: netbox/templates/ipam/asnrange.html:15 +#: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 +#: netbox/templates/ipam/role.html:22 netbox/templates/ipam/routetarget.html:13 +#: netbox/templates/ipam/service.html:24 +#: netbox/templates/ipam/servicetemplate.html:15 +#: netbox/templates/ipam/vlan.html:35 netbox/templates/ipam/vlangroup.html:30 +#: netbox/templates/tenancy/contact.html:25 +#: netbox/templates/tenancy/contactgroup.html:21 +#: netbox/templates/tenancy/contactrole.html:18 +#: netbox/templates/tenancy/tenantgroup.html:29 +#: netbox/templates/users/group.html:17 +#: netbox/templates/users/objectpermission.html:17 +#: netbox/templates/virtualization/cluster.html:13 +#: netbox/templates/virtualization/clustergroup.html:22 +#: netbox/templates/virtualization/clustertype.html:22 +#: netbox/templates/virtualization/virtualdisk.html:25 +#: netbox/templates/virtualization/virtualmachine.html:15 +#: netbox/templates/virtualization/vminterface.html:25 +#: netbox/templates/vpn/ikepolicy.html:13 +#: netbox/templates/vpn/ikeproposal.html:13 +#: netbox/templates/vpn/ipsecpolicy.html:13 +#: netbox/templates/vpn/ipsecprofile.html:13 +#: netbox/templates/vpn/ipsecprofile.html:36 +#: netbox/templates/vpn/ipsecprofile.html:69 +#: netbox/templates/vpn/ipsecproposal.html:13 +#: netbox/templates/vpn/l2vpn.html:14 netbox/templates/vpn/tunnel.html:21 +#: netbox/templates/vpn/tunnelgroup.html:26 +#: netbox/templates/wireless/wirelesslangroup.html:29 +#: netbox/tenancy/tables/contacts.py:19 netbox/tenancy/tables/contacts.py:41 +#: netbox/tenancy/tables/contacts.py:56 netbox/tenancy/tables/tenants.py:16 +#: netbox/tenancy/tables/tenants.py:38 netbox/users/tables.py:62 +#: netbox/users/tables.py:76 netbox/virtualization/forms/bulk_create.py:20 +#: netbox/virtualization/forms/object_create.py:13 +#: netbox/virtualization/forms/object_create.py:23 +#: netbox/virtualization/tables/clusters.py:17 +#: netbox/virtualization/tables/clusters.py:39 +#: netbox/virtualization/tables/clusters.py:62 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 +#: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 +#: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 +#: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 +#: netbox/vpn/tables/tunnels.py:18 netbox/vpn/tables/tunnels.py:40 +#: netbox/wireless/tables/wirelesslan.py:18 +#: netbox/wireless/tables/wirelesslan.py:79 msgid "Name" msgstr "" -#: circuits/tables/circuits.py:41 circuits/tables/circuits.py:138 -#: circuits/tables/providers.py:45 circuits/tables/providers.py:79 -#: netbox/navigation/menu.py:266 netbox/navigation/menu.py:270 -#: netbox/navigation/menu.py:272 templates/circuits/provider.html:57 -#: templates/circuits/provideraccount.html:44 -#: templates/circuits/providernetwork.html:50 +#: netbox/circuits/tables/circuits.py:41 netbox/circuits/tables/circuits.py:138 +#: netbox/circuits/tables/providers.py:45 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 +#: netbox/templates/circuits/provider.html:57 +#: netbox/templates/circuits/provideraccount.html:44 +#: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "" -#: circuits/tables/circuits.py:55 templates/circuits/circuit.html:26 +#: netbox/circuits/tables/circuits.py:55 +#: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "" -#: circuits/tables/circuits.py:69 wireless/forms/model_forms.py:160 +#: netbox/circuits/tables/circuits.py:69 +#: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "" -#: circuits/tables/circuits.py:74 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "" -#: circuits/tables/circuits.py:77 templates/circuits/circuit.html:55 +#: netbox/circuits/tables/circuits.py:77 +#: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "" -#: circuits/tables/circuits.py:80 circuits/tables/providers.py:48 -#: circuits/tables/providers.py:82 circuits/tables/providers.py:107 -#: dcim/tables/devices.py:1032 dcim/tables/devicetypes.py:93 -#: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 -#: dcim/tables/power.py:96 dcim/tables/racks.py:84 dcim/tables/racks.py:145 -#: dcim/tables/racks.py:225 dcim/tables/sites.py:108 -#: extras/tables/tables.py:582 ipam/tables/asn.py:69 ipam/tables/fhrp.py:34 -#: ipam/tables/ip.py:136 ipam/tables/ip.py:275 ipam/tables/ip.py:329 -#: ipam/tables/ip.py:397 ipam/tables/services.py:24 ipam/tables/services.py:54 -#: ipam/tables/vlans.py:145 ipam/tables/vrfs.py:47 ipam/tables/vrfs.py:72 -#: templates/dcim/htmx/cable_edit.html:89 templates/generic/bulk_edit.html:86 -#: templates/inc/panels/comments.html:5 tenancy/tables/contacts.py:68 -#: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 -#: virtualization/tables/clusters.py:91 -#: virtualization/tables/virtualmachines.py:82 vpn/tables/crypto.py:37 -#: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 -#: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:61 -#: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 +#: netbox/circuits/tables/circuits.py:80 netbox/circuits/tables/providers.py:48 +#: netbox/circuits/tables/providers.py:82 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 +#: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 +#: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/templates/generic/bulk_edit.html:86 +#: netbox/templates/inc/panels/comments.html:5 +#: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 +#: netbox/utilities/forms/fields/fields.py:29 +#: netbox/virtualization/tables/clusters.py:91 +#: netbox/virtualization/tables/virtualmachines.py:82 +#: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 +#: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 +#: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 +#: netbox/vpn/tables/tunnels.py:61 netbox/wireless/tables/wirelesslan.py:27 +#: netbox/wireless/tables/wirelesslan.py:58 msgid "Comments" msgstr "" -#: circuits/tables/circuits.py:86 templates/tenancy/contact.html:84 -#: tenancy/tables/contacts.py:73 +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 msgid "Assignments" msgstr "" -#: circuits/tables/providers.py:23 +#: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "" -#: circuits/tables/providers.py:29 +#: netbox/circuits/tables/providers.py:29 msgid "Account Count" msgstr "" -#: circuits/tables/providers.py:39 dcim/tables/sites.py:100 +#: netbox/circuits/tables/providers.py:39 netbox/dcim/tables/sites.py:100 msgid "ASN Count" msgstr "" -#: circuits/views.py:331 +#: netbox/circuits/views.py:331 #, python-brace-format msgid "No terminations have been defined for circuit {circuit}." msgstr "" -#: circuits/views.py:380 +#: netbox/circuits/views.py:380 #, python-brace-format msgid "Swapped terminations for circuit {circuit}." msgstr "" -#: core/api/views.py:39 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "" -#: core/choices.py:18 +#: netbox/core/choices.py:18 msgid "New" msgstr "" -#: core/choices.py:19 core/constants.py:18 core/tables/tasks.py:15 -#: templates/core/rq_task.html:77 +#: netbox/core/choices.py:19 netbox/core/constants.py:18 +#: netbox/core/tables/tasks.py:15 netbox/templates/core/rq_task.html:77 msgid "Queued" msgstr "" -#: core/choices.py:20 +#: netbox/core/choices.py:20 msgid "Syncing" msgstr "" -#: core/choices.py:21 core/choices.py:57 core/tables/jobs.py:41 -#: templates/core/job.html:86 +#: netbox/core/choices.py:21 netbox/core/choices.py:57 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "" -#: core/choices.py:22 core/choices.py:59 core/constants.py:20 -#: core/tables/tasks.py:34 dcim/choices.py:187 dcim/choices.py:233 -#: dcim/choices.py:1568 virtualization/choices.py:47 +#: netbox/core/choices.py:22 netbox/core/choices.py:59 +#: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "" -#: core/choices.py:35 netbox/navigation/menu.py:335 -#: netbox/navigation/menu.py:339 templates/extras/script/base.html:14 -#: templates/extras/script_list.html:7 templates/extras/script_list.html:12 -#: templates/extras/script_result.html:17 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 +#: netbox/templates/extras/script/base.html:14 +#: netbox/templates/extras/script_list.html:7 +#: netbox/templates/extras/script_list.html:12 +#: netbox/templates/extras/script_result.html:17 msgid "Scripts" msgstr "" -#: core/choices.py:36 templates/extras/report/base.html:13 +#: netbox/core/choices.py:36 netbox/templates/extras/report/base.html:13 msgid "Reports" msgstr "" -#: core/choices.py:54 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "" -#: core/choices.py:55 core/constants.py:23 core/tables/jobs.py:32 -#: core/tables/tasks.py:38 templates/core/job.html:73 +#: netbox/core/choices.py:55 netbox/core/constants.py:23 +#: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "" -#: core/choices.py:56 +#: netbox/core/choices.py:56 msgid "Running" msgstr "" -#: core/choices.py:58 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "" -#: core/choices.py:87 core/tables/plugins.py:63 -#: templates/generic/object.html:61 +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 msgid "Updated" msgstr "" -#: core/choices.py:88 +#: netbox/core/choices.py:88 msgid "Deleted" msgstr "" -#: core/constants.py:19 core/tables/tasks.py:30 +#: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "" -#: core/constants.py:21 core/tables/jobs.py:38 templates/core/job.html:82 -#: templates/extras/htmx/script_result.html:8 +#: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 +#: netbox/templates/core/job.html:82 +#: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "" -#: core/constants.py:22 core/tables/tasks.py:26 +#: netbox/core/constants.py:22 netbox/core/tables/tasks.py:26 msgid "Deferred" msgstr "" -#: core/constants.py:24 +#: netbox/core/constants.py:24 msgid "Stopped" msgstr "" -#: core/constants.py:25 +#: netbox/core/constants.py:25 msgid "Cancelled" msgstr "" -#: core/data_backends.py:29 core/tables/plugins.py:51 -#: templates/core/plugin.html:87 templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "" -#: core/data_backends.py:47 core/tables/change_logging.py:20 -#: templates/account/profile.html:15 templates/users/user.html:17 -#: users/tables.py:31 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 +#: netbox/templates/account/profile.html:15 netbox/templates/users/user.html:17 +#: netbox/users/tables.py:31 msgid "Username" msgstr "" -#: core/data_backends.py:49 core/data_backends.py:55 +#: netbox/core/data_backends.py:49 netbox/core/data_backends.py:55 msgid "Only used for cloning with HTTP(S)" msgstr "" -#: core/data_backends.py:53 templates/account/base.html:23 -#: templates/account/password.html:12 users/forms/model_forms.py:171 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 +#: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "" -#: core/data_backends.py:59 +#: netbox/core/data_backends.py:59 msgid "Branch" msgstr "" -#: core/data_backends.py:106 +#: netbox/core/data_backends.py:106 #, python-brace-format msgid "Fetching remote data failed ({name}): {error}" msgstr "" -#: core/data_backends.py:119 +#: netbox/core/data_backends.py:119 msgid "AWS access key ID" msgstr "" -#: core/data_backends.py:123 +#: netbox/core/data_backends.py:123 msgid "AWS secret access key" msgstr "" -#: core/events.py:27 +#: netbox/core/events.py:27 msgid "Object created" msgstr "" -#: core/events.py:28 +#: netbox/core/events.py:28 msgid "Object updated" msgstr "" -#: core/events.py:29 +#: netbox/core/events.py:29 msgid "Object deleted" msgstr "" -#: core/events.py:30 +#: netbox/core/events.py:30 msgid "Job started" msgstr "" -#: core/events.py:31 +#: netbox/core/events.py:31 msgid "Job completed" msgstr "" -#: core/events.py:32 +#: netbox/core/events.py:32 msgid "Job failed" msgstr "" -#: core/events.py:33 +#: netbox/core/events.py:33 msgid "Job errored" msgstr "" -#: core/filtersets.py:53 extras/filtersets.py:250 extras/filtersets.py:633 -#: extras/filtersets.py:661 +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "" -#: core/filtersets.py:59 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "" -#: core/filtersets.py:145 dcim/filtersets.py:501 extras/filtersets.py:287 -#: extras/filtersets.py:331 extras/filtersets.py:353 extras/filtersets.py:413 -#: users/filtersets.py:28 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 msgid "User (ID)" msgstr "" -#: core/filtersets.py:151 +#: netbox/core/filtersets.py:151 msgid "User name" msgstr "" -#: core/forms/bulk_edit.py:25 core/forms/filtersets.py:43 -#: core/tables/data.py:26 dcim/forms/bulk_edit.py:1122 -#: dcim/forms/bulk_edit.py:1400 dcim/forms/filtersets.py:1370 -#: dcim/tables/devices.py:553 dcim/tables/devicetypes.py:225 -#: extras/forms/bulk_edit.py:123 extras/forms/bulk_edit.py:187 -#: extras/forms/bulk_edit.py:246 extras/forms/filtersets.py:142 -#: extras/forms/filtersets.py:229 extras/forms/filtersets.py:294 -#: extras/tables/tables.py:162 extras/tables/tables.py:253 -#: extras/tables/tables.py:415 netbox/preferences.py:22 -#: templates/core/datasource.html:42 templates/dcim/interface.html:61 -#: templates/extras/customlink.html:17 templates/extras/eventrule.html:17 -#: templates/extras/savedfilter.html:25 -#: templates/users/objectpermission.html:25 -#: templates/virtualization/vminterface.html:29 users/forms/bulk_edit.py:89 -#: users/forms/filtersets.py:70 users/tables.py:83 -#: virtualization/forms/bulk_edit.py:217 virtualization/forms/filtersets.py:215 +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 +#: netbox/templates/core/datasource.html:42 +#: netbox/templates/dcim/interface.html:61 +#: netbox/templates/extras/customlink.html:17 +#: netbox/templates/extras/eventrule.html:17 +#: netbox/templates/extras/savedfilter.html:25 +#: netbox/templates/users/objectpermission.html:25 +#: netbox/templates/virtualization/vminterface.html:29 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 +#: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "" -#: core/forms/bulk_edit.py:34 extras/forms/model_forms.py:285 -#: templates/extras/savedfilter.html:52 vpn/forms/filtersets.py:97 -#: vpn/forms/filtersets.py:127 vpn/forms/filtersets.py:151 -#: vpn/forms/filtersets.py:170 vpn/forms/model_forms.py:301 -#: vpn/forms/model_forms.py:321 vpn/forms/model_forms.py:337 -#: vpn/forms/model_forms.py:357 vpn/forms/model_forms.py:380 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 +#: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 +#: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 +#: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 +#: netbox/vpn/forms/model_forms.py:337 netbox/vpn/forms/model_forms.py:357 +#: netbox/vpn/forms/model_forms.py:380 msgid "Parameters" msgstr "" -#: core/forms/bulk_edit.py:38 templates/core/datasource.html:68 +#: netbox/core/forms/bulk_edit.py:38 netbox/templates/core/datasource.html:68 msgid "Ignore rules" msgstr "" -#: core/forms/filtersets.py:30 core/forms/model_forms.py:97 -#: extras/forms/model_forms.py:248 extras/forms/model_forms.py:578 -#: extras/forms/model_forms.py:632 extras/tables/tables.py:191 -#: extras/tables/tables.py:483 extras/tables/tables.py:518 -#: templates/core/datasource.html:31 -#: templates/dcim/device/render_config.html:18 -#: templates/extras/configcontext.html:29 -#: templates/extras/configtemplate.html:21 -#: templates/extras/exporttemplate.html:35 -#: templates/virtualization/virtualmachine/render_config.html:18 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 +#: netbox/templates/core/datasource.html:31 +#: netbox/templates/dcim/device/render_config.html:18 +#: netbox/templates/extras/configcontext.html:29 +#: netbox/templates/extras/configtemplate.html:21 +#: netbox/templates/extras/exporttemplate.html:35 +#: netbox/templates/virtualization/virtualmachine/render_config.html:18 msgid "Data Source" msgstr "" -#: core/forms/filtersets.py:55 core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "" -#: core/forms/filtersets.py:60 core/forms/mixins.py:16 -#: extras/forms/filtersets.py:170 extras/forms/filtersets.py:328 -#: extras/forms/filtersets.py:413 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "" -#: core/forms/filtersets.py:70 extras/forms/filtersets.py:440 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "" -#: core/forms/filtersets.py:74 core/forms/filtersets.py:160 -#: extras/forms/filtersets.py:461 extras/tables/tables.py:220 -#: extras/tables/tables.py:294 extras/tables/tables.py:326 -#: extras/tables/tables.py:571 templates/core/job.html:38 -#: templates/core/objectchange.html:52 tenancy/tables/contacts.py:90 -#: vpn/tables/l2vpn.py:59 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 +#: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "" -#: core/forms/filtersets.py:84 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "" -#: core/forms/filtersets.py:89 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "" -#: core/forms/filtersets.py:94 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "" -#: core/forms/filtersets.py:99 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "" -#: core/forms/filtersets.py:104 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "" -#: core/forms/filtersets.py:109 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "" -#: core/forms/filtersets.py:114 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "" -#: core/forms/filtersets.py:119 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "" -#: core/forms/filtersets.py:126 core/forms/filtersets.py:155 -#: dcim/forms/bulk_edit.py:456 dcim/forms/filtersets.py:418 -#: dcim/forms/filtersets.py:462 dcim/forms/model_forms.py:316 -#: extras/forms/filtersets.py:456 extras/forms/filtersets.py:475 -#: extras/tables/tables.py:302 extras/tables/tables.py:342 -#: templates/core/objectchange.html:36 templates/dcim/rackreservation.html:58 -#: templates/extras/savedfilter.html:21 templates/inc/user_menu.html:33 -#: templates/users/token.html:21 templates/users/user.html:6 -#: templates/users/user.html:14 users/filtersets.py:107 users/filtersets.py:174 -#: users/forms/filtersets.py:84 users/forms/filtersets.py:125 -#: users/forms/model_forms.py:156 users/forms/model_forms.py:193 -#: users/tables.py:19 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 +#: netbox/templates/dcim/rackreservation.html:58 +#: netbox/templates/extras/savedfilter.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 +#: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 +#: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 +#: netbox/users/tables.py:19 msgid "User" msgstr "" -#: core/forms/filtersets.py:134 core/tables/change_logging.py:15 -#: extras/tables/tables.py:609 extras/tables/tables.py:646 -#: templates/core/objectchange.html:32 +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 msgid "Time" msgstr "" -#: core/forms/filtersets.py:139 extras/forms/filtersets.py:445 +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 msgid "After" msgstr "" -#: core/forms/filtersets.py:144 extras/forms/filtersets.py:450 +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 msgid "Before" msgstr "" -#: core/forms/filtersets.py:148 core/tables/change_logging.py:29 -#: extras/forms/model_forms.py:396 templates/core/objectchange.html:46 -#: templates/extras/eventrule.html:71 +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 msgid "Action" msgstr "" -#: core/forms/model_forms.py:54 core/tables/data.py:46 -#: templates/core/datafile.html:27 templates/extras/report/base.html:33 -#: templates/extras/script/base.html:32 +#: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 +#: netbox/templates/core/datafile.html:27 +#: netbox/templates/extras/report/base.html:33 +#: netbox/templates/extras/script/base.html:32 msgid "Source" msgstr "" -#: core/forms/model_forms.py:58 +#: netbox/core/forms/model_forms.py:58 msgid "Backend Parameters" msgstr "" -#: core/forms/model_forms.py:96 +#: netbox/core/forms/model_forms.py:96 msgid "File Upload" msgstr "" -#: core/forms/model_forms.py:108 +#: netbox/core/forms/model_forms.py:108 msgid "Cannot upload a file and sync from an existing file" msgstr "" -#: core/forms/model_forms.py:110 +#: netbox/core/forms/model_forms.py:110 msgid "Must upload a file or select a data file to sync" msgstr "" -#: core/forms/model_forms.py:153 templates/dcim/rack_elevation_list.html:6 +#: netbox/core/forms/model_forms.py:153 +#: netbox/templates/dcim/rack_elevation_list.html:6 msgid "Rack Elevations" msgstr "" -#: core/forms/model_forms.py:157 dcim/choices.py:1479 -#: dcim/forms/bulk_edit.py:969 dcim/forms/bulk_edit.py:1357 -#: dcim/forms/bulk_edit.py:1375 dcim/tables/racks.py:158 -#: netbox/navigation/menu.py:291 netbox/navigation/menu.py:295 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "" -#: core/forms/model_forms.py:159 netbox/navigation/menu.py:154 -#: templates/core/inc/config_data.html:37 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 +#: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "" -#: core/forms/model_forms.py:160 netbox/navigation/menu.py:230 -#: templates/core/inc/config_data.html:50 vpn/forms/bulk_edit.py:77 -#: vpn/forms/filtersets.py:43 vpn/forms/model_forms.py:61 -#: vpn/forms/model_forms.py:146 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 +#: netbox/templates/core/inc/config_data.html:50 +#: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 +#: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 msgid "Security" msgstr "" -#: core/forms/model_forms.py:161 templates/core/inc/config_data.html:59 +#: netbox/core/forms/model_forms.py:161 +#: netbox/templates/core/inc/config_data.html:59 msgid "Banners" msgstr "" -#: core/forms/model_forms.py:162 templates/core/inc/config_data.html:80 +#: netbox/core/forms/model_forms.py:162 +#: netbox/templates/core/inc/config_data.html:80 msgid "Pagination" msgstr "" -#: core/forms/model_forms.py:163 extras/forms/bulk_edit.py:92 -#: extras/forms/filtersets.py:47 extras/forms/model_forms.py:116 -#: extras/forms/model_forms.py:129 templates/core/inc/config_data.html:93 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 +#: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "" -#: core/forms/model_forms.py:164 templates/account/preferences.html:6 +#: netbox/core/forms/model_forms.py:164 +#: netbox/templates/account/preferences.html:6 msgid "User Preferences" msgstr "" -#: core/forms/model_forms.py:167 dcim/forms/filtersets.py:732 -#: templates/core/inc/config_data.html:127 users/forms/model_forms.py:65 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 +#: netbox/templates/core/inc/config_data.html:127 +#: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" msgstr "" -#: core/forms/model_forms.py:169 +#: netbox/core/forms/model_forms.py:169 msgid "Config Revision" msgstr "" -#: core/forms/model_forms.py:208 +#: netbox/core/forms/model_forms.py:208 msgid "This parameter has been defined statically and cannot be modified." msgstr "" -#: core/forms/model_forms.py:216 +#: netbox/core/forms/model_forms.py:216 #, python-brace-format msgid "Current value: {value}" msgstr "" -#: core/forms/model_forms.py:218 +#: netbox/core/forms/model_forms.py:218 msgid " (default)" msgstr "" -#: core/models/change_logging.py:29 +#: netbox/core/models/change_logging.py:29 msgid "time" msgstr "" -#: core/models/change_logging.py:42 +#: netbox/core/models/change_logging.py:42 msgid "user name" msgstr "" -#: core/models/change_logging.py:47 +#: netbox/core/models/change_logging.py:47 msgid "request ID" msgstr "" -#: core/models/change_logging.py:52 extras/models/staging.py:69 +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 msgid "action" msgstr "" -#: core/models/change_logging.py:86 +#: netbox/core/models/change_logging.py:86 msgid "pre-change data" msgstr "" -#: core/models/change_logging.py:92 +#: netbox/core/models/change_logging.py:92 msgid "post-change data" msgstr "" -#: core/models/change_logging.py:106 +#: netbox/core/models/change_logging.py:106 msgid "object change" msgstr "" -#: core/models/change_logging.py:107 +#: netbox/core/models/change_logging.py:107 msgid "object changes" msgstr "" -#: core/models/change_logging.py:123 +#: netbox/core/models/change_logging.py:123 #, python-brace-format msgid "Change logging is not supported for this object type ({type})." msgstr "" -#: core/models/config.py:18 core/models/data.py:266 core/models/files.py:27 -#: core/models/jobs.py:51 extras/models/models.py:730 -#: extras/models/notifications.py:39 extras/models/notifications.py:186 -#: netbox/models/features.py:53 users/models/tokens.py:32 +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "" -#: core/models/config.py:22 +#: netbox/core/models/config.py:22 msgid "comment" msgstr "" -#: core/models/config.py:29 +#: netbox/core/models/config.py:29 msgid "configuration data" msgstr "" -#: core/models/config.py:36 +#: netbox/core/models/config.py:36 msgid "config revision" msgstr "" -#: core/models/config.py:37 +#: netbox/core/models/config.py:37 msgid "config revisions" msgstr "" -#: core/models/config.py:41 +#: netbox/core/models/config.py:41 msgid "Default configuration" msgstr "" -#: core/models/config.py:43 +#: netbox/core/models/config.py:43 msgid "Current configuration" msgstr "" -#: core/models/config.py:44 +#: netbox/core/models/config.py:44 #, python-brace-format msgid "Config revision #{id}" msgstr "" -#: core/models/data.py:44 dcim/models/cables.py:43 -#: dcim/models/device_component_templates.py:204 -#: dcim/models/device_component_templates.py:238 -#: dcim/models/device_component_templates.py:273 -#: dcim/models/device_component_templates.py:335 -#: dcim/models/device_component_templates.py:414 -#: dcim/models/device_component_templates.py:513 -#: dcim/models/device_component_templates.py:613 -#: dcim/models/device_components.py:284 dcim/models/device_components.py:313 -#: dcim/models/device_components.py:346 dcim/models/device_components.py:464 -#: dcim/models/device_components.py:606 dcim/models/device_components.py:971 -#: dcim/models/device_components.py:1045 dcim/models/power.py:102 -#: extras/models/customfields.py:78 extras/models/search.py:41 -#: virtualization/models/clusters.py:61 vpn/models/l2vpn.py:32 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 +#: netbox/dcim/models/device_components.py:284 +#: netbox/dcim/models/device_components.py:313 +#: netbox/dcim/models/device_components.py:346 +#: netbox/dcim/models/device_components.py:464 +#: netbox/dcim/models/device_components.py:606 +#: netbox/dcim/models/device_components.py:971 +#: netbox/dcim/models/device_components.py:1045 netbox/dcim/models/power.py:102 +#: netbox/extras/models/customfields.py:78 netbox/extras/models/search.py:41 +#: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "" -#: core/models/data.py:49 extras/choices.py:37 extras/models/models.py:164 -#: extras/tables/tables.py:656 templates/core/datasource.html:58 -#: templates/core/plugin.html:65 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 +#: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "" -#: core/models/data.py:59 dcim/models/device_component_templates.py:419 -#: dcim/models/device_components.py:513 extras/models/models.py:70 -#: extras/models/models.py:301 extras/models/models.py:526 -#: users/models/permissions.py:29 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 +#: netbox/dcim/models/device_components.py:513 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "" -#: core/models/data.py:63 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "" -#: core/models/data.py:65 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" -#: core/models/data.py:68 extras/models/models.py:534 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "" -#: core/models/data.py:73 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "" -#: core/models/data.py:81 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "" -#: core/models/data.py:82 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "" -#: core/models/data.py:122 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "" -#: core/models/data.py:164 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "" -#: core/models/data.py:177 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " msgstr "" -#: core/models/data.py:270 core/models/files.py:31 netbox/models/features.py:59 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "" -#: core/models/data.py:280 dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "" -#: core/models/data.py:283 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "" -#: core/models/data.py:287 ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "" -#: core/models/data.py:290 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "" -#: core/models/data.py:294 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "" -#: core/models/data.py:296 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "" -#: core/models/data.py:313 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "" -#: core/models/data.py:314 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "" -#: core/models/data.py:401 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "" -#: core/models/data.py:402 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "" -#: core/models/files.py:37 +#: netbox/core/models/files.py:37 msgid "file root" msgstr "" -#: core/models/files.py:42 +#: netbox/core/models/files.py:42 msgid "file path" msgstr "" -#: core/models/files.py:44 +#: netbox/core/models/files.py:44 msgid "File path relative to the designated root path" msgstr "" -#: core/models/files.py:61 +#: netbox/core/models/files.py:61 msgid "managed file" msgstr "" -#: core/models/files.py:62 +#: netbox/core/models/files.py:62 msgid "managed files" msgstr "" -#: core/models/jobs.py:55 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "" -#: core/models/jobs.py:60 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "" -#: core/models/jobs.py:66 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "" -#: core/models/jobs.py:69 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "" -#: core/models/jobs.py:74 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "" -#: core/models/jobs.py:92 extras/models/models.py:101 -#: extras/models/staging.py:87 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "" -#: core/models/jobs.py:97 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "" -#: core/models/jobs.py:102 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "" -#: core/models/jobs.py:113 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "" -#: core/models/jobs.py:114 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "" -#: core/models/jobs.py:136 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "" -#: core/models/jobs.py:186 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" -#: core/models/jobs.py:217 +#: netbox/core/models/jobs.py:217 msgid "" "enqueue() cannot be called with values for both schedule_at and immediate." msgstr "" -#: core/signals.py:126 +#: netbox/core/signals.py:126 #, python-brace-format msgid "Deletion is prevented by a protection rule: {message}" msgstr "" -#: core/tables/change_logging.py:25 templates/account/profile.html:19 -#: templates/users/user.html:21 +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 netbox/templates/users/user.html:21 msgid "Full Name" msgstr "" -#: core/tables/change_logging.py:37 core/tables/jobs.py:21 extras/choices.py:41 -#: extras/tables/tables.py:279 extras/tables/tables.py:297 -#: extras/tables/tables.py:329 extras/tables/tables.py:409 -#: extras/tables/tables.py:470 extras/tables/tables.py:576 -#: extras/tables/tables.py:616 extras/tables/tables.py:653 -#: netbox/tables/tables.py:244 templates/core/objectchange.html:58 -#: templates/extras/eventrule.html:78 templates/extras/journalentry.html:18 -#: tenancy/tables/contacts.py:93 vpn/tables/l2vpn.py:64 +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 msgid "Object" msgstr "" -#: core/tables/change_logging.py:42 templates/core/objectchange.html:68 +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 msgid "Request ID" msgstr "" -#: core/tables/config.py:21 users/forms/filtersets.py:44 users/tables.py:39 +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 +#: netbox/users/tables.py:39 msgid "Is Active" msgstr "" -#: core/tables/data.py:50 templates/core/datafile.html:31 +#: netbox/core/tables/data.py:50 netbox/templates/core/datafile.html:31 msgid "Path" msgstr "" -#: core/tables/data.py:54 templates/extras/inc/result_pending.html:7 +#: netbox/core/tables/data.py:54 +#: netbox/templates/extras/inc/result_pending.html:7 msgid "Last updated" msgstr "" -#: core/tables/jobs.py:10 core/tables/tasks.py:76 -#: dcim/tables/devicetypes.py:165 extras/tables/tables.py:216 -#: extras/tables/tables.py:460 netbox/tables/tables.py:189 -#: templates/dcim/virtualchassis_edit.html:52 utilities/forms/forms.py:73 -#: wireless/tables/wirelesslink.py:17 +#: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 +#: netbox/templates/dcim/virtualchassis_edit.html:52 +#: netbox/utilities/forms/forms.py:73 netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "" -#: core/tables/jobs.py:35 +#: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "" -#: core/tables/plugins.py:14 templates/vpn/ipsecprofile.html:44 -#: vpn/forms/bulk_edit.py:141 vpn/forms/bulk_import.py:172 -#: vpn/tables/crypto.py:61 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 +#: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "" -#: core/tables/plugins.py:19 templates/core/datafile.html:38 +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 msgid "Last Updated" msgstr "" -#: core/tables/plugins.py:23 +#: netbox/core/tables/plugins.py:23 msgid "Minimum NetBox Version" msgstr "" -#: core/tables/plugins.py:27 +#: netbox/core/tables/plugins.py:27 msgid "Maximum NetBox Version" msgstr "" -#: core/tables/plugins.py:31 core/tables/plugins.py:74 +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 msgid "No plugin data found" msgstr "" -#: core/tables/plugins.py:48 templates/core/plugin.html:61 +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "" -#: core/tables/plugins.py:54 +#: netbox/core/tables/plugins.py:54 msgid "Installed" msgstr "" -#: core/tables/plugins.py:57 templates/core/plugin.html:83 +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 msgid "Certified" msgstr "" -#: core/tables/plugins.py:60 +#: netbox/core/tables/plugins.py:60 msgid "Published" msgstr "" -#: core/tables/plugins.py:66 +#: netbox/core/tables/plugins.py:66 msgid "Installed Version" msgstr "" -#: core/tables/plugins.py:70 +#: netbox/core/tables/plugins.py:70 msgid "Latest Version" msgstr "" -#: core/tables/tasks.py:18 +#: netbox/core/tables/tasks.py:18 msgid "Oldest Task" msgstr "" -#: core/tables/tasks.py:42 templates/core/rq_worker_list.html:39 +#: netbox/core/tables/tasks.py:42 netbox/templates/core/rq_worker_list.html:39 msgid "Workers" msgstr "" -#: core/tables/tasks.py:46 vpn/tables/tunnels.py:88 +#: netbox/core/tables/tasks.py:46 netbox/vpn/tables/tunnels.py:88 msgid "Host" msgstr "" -#: core/tables/tasks.py:50 ipam/forms/filtersets.py:535 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "" -#: core/tables/tasks.py:54 +#: netbox/core/tables/tasks.py:54 msgid "DB" msgstr "" -#: core/tables/tasks.py:58 +#: netbox/core/tables/tasks.py:58 msgid "Scheduler PID" msgstr "" -#: core/tables/tasks.py:62 +#: netbox/core/tables/tasks.py:62 msgid "No queues found" msgstr "" -#: core/tables/tasks.py:82 +#: netbox/core/tables/tasks.py:82 msgid "Enqueued" msgstr "" -#: core/tables/tasks.py:85 +#: netbox/core/tables/tasks.py:85 msgid "Ended" msgstr "" -#: core/tables/tasks.py:93 templates/core/rq_task.html:85 +#: netbox/core/tables/tasks.py:93 netbox/templates/core/rq_task.html:85 msgid "Callable" msgstr "" -#: core/tables/tasks.py:97 +#: netbox/core/tables/tasks.py:97 msgid "No tasks found" msgstr "" -#: core/tables/tasks.py:118 templates/core/rq_worker.html:47 +#: netbox/core/tables/tasks.py:118 netbox/templates/core/rq_worker.html:47 msgid "State" msgstr "" -#: core/tables/tasks.py:121 templates/core/rq_worker.html:51 +#: netbox/core/tables/tasks.py:121 netbox/templates/core/rq_worker.html:51 msgid "Birth" msgstr "" -#: core/tables/tasks.py:124 templates/core/rq_worker.html:59 +#: netbox/core/tables/tasks.py:124 netbox/templates/core/rq_worker.html:59 msgid "PID" msgstr "" -#: core/tables/tasks.py:128 +#: netbox/core/tables/tasks.py:128 msgid "No workers found" msgstr "" -#: core/views.py:90 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "" -#: core/views.py:319 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "" -#: core/views.py:412 core/views.py:455 core/views.py:531 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "" -#: core/views.py:463 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "" -#: core/views.py:465 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "" -#: core/views.py:478 core/views.py:496 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "" -#: core/views.py:484 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "" -#: core/views.py:519 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "" -#: core/views.py:538 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "" -#: core/views.py:540 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "" -#: core/views.py:678 +#: netbox/core/views.py:678 msgid "Plugins catalog could not be loaded" msgstr "" -#: core/views.py:712 +#: netbox/core/views.py:712 #, python-brace-format msgid "Plugin {name} not found" msgstr "" -#: dcim/api/serializers_/devices.py:49 dcim/api/serializers_/devicetypes.py:25 +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "" -#: dcim/api/serializers_/racks.py:112 templates/dcim/rack.html:28 +#: netbox/dcim/api/serializers_/racks.py:112 netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "" -#: dcim/choices.py:21 virtualization/choices.py:21 +#: netbox/dcim/choices.py:21 netbox/virtualization/choices.py:21 msgid "Staging" msgstr "" -#: dcim/choices.py:23 dcim/choices.py:189 dcim/choices.py:234 -#: dcim/choices.py:1492 virtualization/choices.py:23 -#: virtualization/choices.py:48 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 +#: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "" -#: dcim/choices.py:24 +#: netbox/dcim/choices.py:24 msgid "Retired" msgstr "" -#: dcim/choices.py:65 +#: netbox/dcim/choices.py:65 msgid "2-post frame" msgstr "" -#: dcim/choices.py:66 +#: netbox/dcim/choices.py:66 msgid "4-post frame" msgstr "" -#: dcim/choices.py:67 +#: netbox/dcim/choices.py:67 msgid "4-post cabinet" msgstr "" -#: dcim/choices.py:68 +#: netbox/dcim/choices.py:68 msgid "Wall-mounted frame" msgstr "" -#: dcim/choices.py:69 +#: netbox/dcim/choices.py:69 msgid "Wall-mounted frame (vertical)" msgstr "" -#: dcim/choices.py:70 +#: netbox/dcim/choices.py:70 msgid "Wall-mounted cabinet" msgstr "" -#: dcim/choices.py:71 +#: netbox/dcim/choices.py:71 msgid "Wall-mounted cabinet (vertical)" msgstr "" -#: dcim/choices.py:83 dcim/choices.py:84 dcim/choices.py:85 dcim/choices.py:86 +#: netbox/dcim/choices.py:83 netbox/dcim/choices.py:84 +#: netbox/dcim/choices.py:85 netbox/dcim/choices.py:86 #, python-brace-format msgid "{n} inches" msgstr "" -#: dcim/choices.py:100 ipam/choices.py:32 ipam/choices.py:50 ipam/choices.py:70 -#: ipam/choices.py:155 wireless/choices.py:26 +#: netbox/dcim/choices.py:100 netbox/ipam/choices.py:32 +#: netbox/ipam/choices.py:50 netbox/ipam/choices.py:70 +#: netbox/ipam/choices.py:155 netbox/wireless/choices.py:26 msgid "Reserved" msgstr "" -#: dcim/choices.py:101 templates/dcim/device.html:259 +#: netbox/dcim/choices.py:101 netbox/templates/dcim/device.html:259 msgid "Available" msgstr "" -#: dcim/choices.py:104 ipam/choices.py:33 ipam/choices.py:51 ipam/choices.py:71 -#: ipam/choices.py:156 wireless/choices.py:28 +#: netbox/dcim/choices.py:104 netbox/ipam/choices.py:33 +#: netbox/ipam/choices.py:51 netbox/ipam/choices.py:71 +#: netbox/ipam/choices.py:156 netbox/wireless/choices.py:28 msgid "Deprecated" msgstr "" -#: dcim/choices.py:114 templates/dcim/inc/panels/racktype_dimensions.html:41 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "" -#: dcim/choices.py:115 dcim/choices.py:1514 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "" -#: dcim/choices.py:136 dcim/choices.py:204 dcim/choices.py:248 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 msgid "Front to rear" msgstr "" -#: dcim/choices.py:137 dcim/choices.py:205 dcim/choices.py:249 +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 msgid "Rear to front" msgstr "" -#: dcim/choices.py:151 dcim/forms/bulk_edit.py:68 dcim/forms/bulk_edit.py:87 -#: dcim/forms/bulk_edit.py:173 dcim/forms/bulk_edit.py:1405 -#: dcim/forms/bulk_import.py:60 dcim/forms/bulk_import.py:74 -#: dcim/forms/bulk_import.py:137 dcim/forms/bulk_import.py:566 -#: dcim/forms/bulk_import.py:833 dcim/forms/bulk_import.py:1088 -#: dcim/forms/filtersets.py:234 dcim/forms/model_forms.py:74 -#: dcim/forms/model_forms.py:93 dcim/forms/model_forms.py:170 -#: dcim/forms/model_forms.py:1062 dcim/forms/model_forms.py:1501 -#: dcim/forms/object_import.py:176 dcim/tables/devices.py:653 -#: dcim/tables/devices.py:865 dcim/tables/devices.py:950 -#: extras/tables/tables.py:223 ipam/tables/fhrp.py:59 ipam/tables/ip.py:378 -#: ipam/tables/services.py:44 templates/dcim/interface.html:102 -#: templates/dcim/interface.html:309 templates/dcim/location.html:41 -#: templates/dcim/region.html:37 templates/dcim/sitegroup.html:37 -#: templates/ipam/service.html:28 templates/tenancy/contactgroup.html:29 -#: templates/tenancy/tenantgroup.html:37 -#: templates/virtualization/vminterface.html:39 -#: templates/wireless/wirelesslangroup.html:37 tenancy/forms/bulk_edit.py:27 -#: tenancy/forms/bulk_edit.py:61 tenancy/forms/bulk_import.py:24 -#: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:25 -#: tenancy/forms/model_forms.py:68 virtualization/forms/bulk_edit.py:207 -#: virtualization/forms/bulk_import.py:151 -#: virtualization/tables/virtualmachines.py:162 wireless/forms/bulk_edit.py:24 -#: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:21 +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 netbox/dcim/forms/object_import.py:176 +#: netbox/dcim/tables/devices.py:653 netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:950 netbox/extras/tables/tables.py:223 +#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 +#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/templates/dcim/interface.html:309 +#: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 +#: netbox/templates/dcim/sitegroup.html:37 +#: netbox/templates/ipam/service.html:28 +#: netbox/templates/tenancy/contactgroup.html:29 +#: netbox/templates/tenancy/tenantgroup.html:37 +#: netbox/templates/virtualization/vminterface.html:39 +#: netbox/templates/wireless/wirelesslangroup.html:37 +#: netbox/tenancy/forms/bulk_edit.py:27 netbox/tenancy/forms/bulk_edit.py:61 +#: netbox/tenancy/forms/bulk_import.py:24 +#: netbox/tenancy/forms/bulk_import.py:58 +#: netbox/tenancy/forms/model_forms.py:25 +#: netbox/tenancy/forms/model_forms.py:68 +#: netbox/virtualization/forms/bulk_edit.py:207 +#: netbox/virtualization/forms/bulk_import.py:151 +#: netbox/virtualization/tables/virtualmachines.py:162 +#: netbox/wireless/forms/bulk_edit.py:24 +#: netbox/wireless/forms/bulk_import.py:21 +#: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "" -#: dcim/choices.py:152 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "" -#: dcim/choices.py:166 templates/dcim/device.html:339 -#: templates/dcim/rack.html:129 templates/dcim/rack_elevation_list.html:20 -#: templates/dcim/rackreservation.html:76 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 +#: netbox/templates/dcim/rack_elevation_list.html:20 +#: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "" -#: dcim/choices.py:167 templates/dcim/device.html:345 -#: templates/dcim/rack.html:135 templates/dcim/rack_elevation_list.html:21 -#: templates/dcim/rackreservation.html:82 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 +#: netbox/templates/dcim/rack_elevation_list.html:21 +#: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "" -#: dcim/choices.py:186 dcim/choices.py:232 virtualization/choices.py:46 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 +#: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "" -#: dcim/choices.py:188 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "" -#: dcim/choices.py:206 dcim/choices.py:250 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "" -#: dcim/choices.py:207 dcim/choices.py:251 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "" -#: dcim/choices.py:208 dcim/choices.py:252 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "" -#: dcim/choices.py:209 dcim/choices.py:253 dcim/choices.py:1287 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "" -#: dcim/choices.py:210 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "" -#: dcim/choices.py:477 dcim/choices.py:723 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "" -#: dcim/choices.py:499 dcim/choices.py:745 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "" -#: dcim/choices.py:522 dcim/choices.py:768 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "" -#: dcim/choices.py:530 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "" -#: dcim/choices.py:565 dcim/choices.py:803 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "" -#: dcim/choices.py:573 dcim/choices.py:812 dcim/choices.py:1203 -#: dcim/choices.py:1205 dcim/choices.py:1410 dcim/choices.py:1412 -#: netbox/navigation/menu.py:200 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "" -#: dcim/choices.py:776 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "" -#: dcim/choices.py:842 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "" -#: dcim/choices.py:843 dcim/choices.py:1009 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "" -#: dcim/choices.py:844 dcim/choices.py:1082 dcim/forms/bulk_edit.py:1515 -#: dcim/forms/filtersets.py:1330 dcim/forms/model_forms.py:988 -#: dcim/forms/model_forms.py:1396 netbox/navigation/menu.py:140 -#: netbox/navigation/menu.py:144 templates/dcim/interface.html:210 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 +#: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "" -#: dcim/choices.py:1007 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "" -#: dcim/choices.py:1010 dcim/forms/bulk_edit.py:1410 -#: dcim/forms/bulk_import.py:840 dcim/forms/model_forms.py:974 -#: dcim/tables/devices.py:657 templates/dcim/interface.html:106 -#: templates/virtualization/vminterface.html:43 -#: virtualization/forms/bulk_edit.py:212 -#: virtualization/forms/bulk_import.py:158 -#: virtualization/tables/virtualmachines.py:166 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 +#: netbox/templates/virtualization/vminterface.html:43 +#: netbox/virtualization/forms/bulk_edit.py:212 +#: netbox/virtualization/forms/bulk_import.py:158 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "" -#: dcim/choices.py:1011 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "" -#: dcim/choices.py:1015 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "" -#: dcim/choices.py:1030 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "" -#: dcim/choices.py:1066 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "" -#: dcim/choices.py:1097 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "" -#: dcim/choices.py:1149 dcim/forms/filtersets.py:383 -#: dcim/forms/filtersets.py:809 dcim/forms/filtersets.py:963 -#: dcim/forms/filtersets.py:1542 templates/dcim/inventoryitem.html:52 -#: templates/dcim/virtualchassis_edit.html:54 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 +#: netbox/templates/dcim/inventoryitem.html:52 +#: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "" -#: dcim/choices.py:1164 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "" -#: dcim/choices.py:1184 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "" -#: dcim/choices.py:1234 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "" -#: dcim/choices.py:1235 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "" -#: dcim/choices.py:1236 netbox/preferences.py:31 wireless/choices.py:480 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 +#: netbox/wireless/choices.py:480 msgid "Auto" msgstr "" -#: dcim/choices.py:1247 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "" -#: dcim/choices.py:1248 ipam/tables/vlans.py:172 ipam/tables/vlans.py:217 -#: templates/dcim/inc/interface_vlans_table.html:7 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 +#: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "" -#: dcim/choices.py:1249 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "" -#: dcim/choices.py:1278 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "" -#: dcim/choices.py:1289 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "" -#: dcim/choices.py:1290 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "" -#: dcim/choices.py:1291 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "" -#: dcim/choices.py:1292 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "" -#: dcim/choices.py:1354 dcim/choices.py:1450 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "" -#: dcim/choices.py:1377 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "" -#: dcim/choices.py:1466 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "" -#: dcim/choices.py:1490 dcim/forms/filtersets.py:1227 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "" -#: dcim/choices.py:1509 wireless/choices.py:497 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "" -#: dcim/choices.py:1510 templates/dcim/cable_trace.html:65 -#: wireless/choices.py:498 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "" -#: dcim/choices.py:1511 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "" -#: dcim/choices.py:1512 wireless/choices.py:499 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "" -#: dcim/choices.py:1513 templates/dcim/cable_trace.html:66 -#: wireless/choices.py:500 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "" -#: dcim/choices.py:1529 templates/dcim/device.html:327 -#: templates/dcim/rack.html:106 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "" -#: dcim/choices.py:1530 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "" -#: dcim/choices.py:1531 templates/dcim/rack.html:107 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "" -#: dcim/choices.py:1532 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "" -#: dcim/choices.py:1579 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "" -#: dcim/choices.py:1600 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "" -#: dcim/choices.py:1601 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "" -#: dcim/fields.py:45 +#: netbox/dcim/fields.py:45 #, python-brace-format msgid "Invalid MAC address format: {value}" msgstr "" -#: dcim/fields.py:71 +#: netbox/dcim/fields.py:71 #, python-brace-format msgid "Invalid WWN format: {value}" msgstr "" -#: dcim/filtersets.py:86 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "" -#: dcim/filtersets.py:92 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "" -#: dcim/filtersets.py:116 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "" -#: dcim/filtersets.py:122 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "" -#: dcim/filtersets.py:164 extras/filtersets.py:364 ipam/filtersets.py:841 -#: ipam/filtersets.py:993 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "" -#: dcim/filtersets.py:170 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "" -#: dcim/filtersets.py:176 dcim/filtersets.py:181 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "" -#: dcim/filtersets.py:246 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "" -#: dcim/filtersets.py:252 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "" -#: dcim/filtersets.py:258 dcim/filtersets.py:369 dcim/filtersets.py:490 -#: dcim/filtersets.py:1057 dcim/filtersets.py:1404 dcim/filtersets.py:2182 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "" -#: dcim/filtersets.py:265 dcim/filtersets.py:376 dcim/filtersets.py:497 -#: dcim/filtersets.py:1410 extras/filtersets.py:542 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "" -#: dcim/filtersets.py:296 dcim/filtersets.py:381 dcim/filtersets.py:539 -#: dcim/filtersets.py:678 dcim/filtersets.py:882 dcim/filtersets.py:933 -#: dcim/filtersets.py:973 dcim/filtersets.py:1306 dcim/filtersets.py:1840 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 msgid "Manufacturer (ID)" msgstr "" -#: dcim/filtersets.py:302 dcim/filtersets.py:387 dcim/filtersets.py:545 -#: dcim/filtersets.py:684 dcim/filtersets.py:888 dcim/filtersets.py:939 -#: dcim/filtersets.py:979 dcim/filtersets.py:1312 dcim/filtersets.py:1846 +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 msgid "Manufacturer (slug)" msgstr "" -#: dcim/filtersets.py:393 +#: netbox/dcim/filtersets.py:393 msgid "Rack type (slug)" msgstr "" -#: dcim/filtersets.py:397 +#: netbox/dcim/filtersets.py:397 msgid "Rack type (ID)" msgstr "" -#: dcim/filtersets.py:411 dcim/filtersets.py:892 dcim/filtersets.py:994 -#: dcim/filtersets.py:1850 ipam/filtersets.py:381 ipam/filtersets.py:493 -#: ipam/filtersets.py:1003 virtualization/filtersets.py:210 +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 +#: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "" -#: dcim/filtersets.py:417 dcim/filtersets.py:898 dcim/filtersets.py:1000 -#: dcim/filtersets.py:1856 extras/filtersets.py:558 ipam/filtersets.py:387 -#: ipam/filtersets.py:499 ipam/filtersets.py:1009 -#: virtualization/filtersets.py:216 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 +#: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "" -#: dcim/filtersets.py:447 dcim/filtersets.py:1062 dcim/filtersets.py:1415 -#: dcim/filtersets.py:2244 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "" -#: dcim/filtersets.py:507 extras/filtersets.py:293 extras/filtersets.py:337 -#: extras/filtersets.py:359 extras/filtersets.py:419 users/filtersets.py:113 -#: users/filtersets.py:180 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "" -#: dcim/filtersets.py:549 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "" -#: dcim/filtersets.py:555 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "" -#: dcim/filtersets.py:558 dcim/forms/filtersets.py:517 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "" -#: dcim/filtersets.py:562 dcim/forms/filtersets.py:524 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "" -#: dcim/filtersets.py:567 dcim/filtersets.py:688 dcim/filtersets.py:1131 -#: dcim/forms/filtersets.py:531 dcim/forms/filtersets.py:627 -#: dcim/forms/filtersets.py:848 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "" -#: dcim/filtersets.py:571 dcim/filtersets.py:692 dcim/filtersets.py:1135 -#: dcim/forms/filtersets.py:538 dcim/forms/filtersets.py:634 -#: dcim/forms/filtersets.py:855 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "" -#: dcim/filtersets.py:575 dcim/filtersets.py:696 dcim/filtersets.py:1139 -#: dcim/forms/filtersets.py:545 dcim/forms/filtersets.py:641 -#: dcim/forms/filtersets.py:862 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "" -#: dcim/filtersets.py:579 dcim/filtersets.py:700 dcim/filtersets.py:1143 -#: dcim/forms/filtersets.py:552 dcim/forms/filtersets.py:648 -#: dcim/forms/filtersets.py:869 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "" -#: dcim/filtersets.py:583 dcim/filtersets.py:704 dcim/filtersets.py:1147 -#: dcim/forms/filtersets.py:559 dcim/forms/filtersets.py:655 -#: dcim/forms/filtersets.py:876 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "" -#: dcim/filtersets.py:587 dcim/filtersets.py:708 dcim/filtersets.py:1151 -#: dcim/forms/filtersets.py:566 dcim/forms/filtersets.py:662 -#: dcim/forms/filtersets.py:883 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "" -#: dcim/filtersets.py:591 dcim/filtersets.py:1155 dcim/forms/filtersets.py:580 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "" -#: dcim/filtersets.py:595 dcim/filtersets.py:1159 dcim/forms/filtersets.py:573 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "" -#: dcim/filtersets.py:599 dcim/forms/filtersets.py:587 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "" -#: dcim/filtersets.py:756 dcim/filtersets.py:989 dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "" -#: dcim/filtersets.py:772 dcim/filtersets.py:1317 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "" -#: dcim/filtersets.py:804 dcim/filtersets.py:1591 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "" -#: dcim/filtersets.py:878 dcim/filtersets.py:1836 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "" -#: dcim/filtersets.py:921 dcim/filtersets.py:947 dcim/filtersets.py:1127 -#: virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "" -#: dcim/filtersets.py:985 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "" -#: dcim/filtersets.py:1005 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "" -#: dcim/filtersets.py:1009 virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "" -#: dcim/filtersets.py:1015 extras/filtersets.py:569 -#: virtualization/filtersets.py:226 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 +#: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "" -#: dcim/filtersets.py:1051 dcim/filtersets.py:1399 dcim/filtersets.py:1934 -#: dcim/filtersets.py:2176 dcim/filtersets.py:2235 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "" -#: dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "" -#: dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "" -#: dcim/filtersets.py:1077 extras/filtersets.py:591 -#: virtualization/filtersets.py:136 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 +#: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "" -#: dcim/filtersets.py:1082 virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "" -#: dcim/filtersets.py:1088 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "" -#: dcim/filtersets.py:1099 dcim/forms/bulk_edit.py:516 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "" -#: dcim/filtersets.py:1103 dcim/forms/common.py:18 dcim/forms/filtersets.py:818 -#: dcim/forms/filtersets.py:1385 dcim/models/device_components.py:519 -#: virtualization/filtersets.py:230 virtualization/filtersets.py:301 -#: virtualization/forms/filtersets.py:172 -#: virtualization/forms/filtersets.py:223 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 +#: netbox/dcim/models/device_components.py:519 +#: netbox/virtualization/filtersets.py:230 +#: netbox/virtualization/filtersets.py:301 +#: netbox/virtualization/forms/filtersets.py:172 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "" -#: dcim/filtersets.py:1110 dcim/filtersets.py:1274 dcim/forms/filtersets.py:827 -#: dcim/forms/filtersets.py:930 virtualization/filtersets.py:234 -#: virtualization/forms/filtersets.py:176 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 +#: netbox/virtualization/filtersets.py:234 +#: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "" -#: dcim/filtersets.py:1114 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "" -#: dcim/filtersets.py:1119 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "" -#: dcim/filtersets.py:1123 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "" -#: dcim/filtersets.py:1164 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "" -#: dcim/filtersets.py:1168 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "" -#: dcim/filtersets.py:1257 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "" -#: dcim/filtersets.py:1262 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "" -#: dcim/filtersets.py:1267 ipam/filtersets.py:632 vpn/filtersets.py:102 -#: vpn/filtersets.py:412 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "" -#: dcim/filtersets.py:1323 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "" -#: dcim/filtersets.py:1329 +#: netbox/dcim/filtersets.py:1329 msgid "Module bay (ID)" msgstr "" -#: dcim/filtersets.py:1333 dcim/filtersets.py:1425 ipam/filtersets.py:611 -#: ipam/filtersets.py:851 ipam/filtersets.py:1089 -#: virtualization/filtersets.py:161 vpn/filtersets.py:390 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 +#: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "" -#: dcim/filtersets.py:1421 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "" -#: dcim/filtersets.py:1431 ipam/filtersets.py:606 ipam/filtersets.py:846 -#: ipam/filtersets.py:1095 vpn/filtersets.py:385 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "" -#: dcim/filtersets.py:1442 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "" -#: dcim/filtersets.py:1447 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "" -#: dcim/filtersets.py:1453 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "" -#: dcim/filtersets.py:1458 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "" -#: dcim/filtersets.py:1464 dcim/forms/filtersets.py:109 -#: dcim/tables/devices.py:206 netbox/navigation/menu.py:79 -#: templates/dcim/device.html:120 templates/dcim/device_edit.html:93 -#: templates/dcim/virtualchassis.html:20 -#: templates/dcim/virtualchassis_add.html:8 -#: templates/dcim/virtualchassis_edit.html:24 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 +#: netbox/templates/dcim/device.html:120 +#: netbox/templates/dcim/device_edit.html:93 +#: netbox/templates/dcim/virtualchassis.html:20 +#: netbox/templates/dcim/virtualchassis_add.html:8 +#: netbox/templates/dcim/virtualchassis_edit.html:24 msgid "Virtual Chassis" msgstr "" -#: dcim/filtersets.py:1488 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "" -#: dcim/filtersets.py:1495 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "" -#: dcim/filtersets.py:1604 ipam/forms/bulk_import.py:189 -#: vpn/forms/bulk_import.py:308 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 +#: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "" -#: dcim/filtersets.py:1608 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "" -#: dcim/filtersets.py:1613 dcim/forms/bulk_edit.py:1489 -#: dcim/forms/bulk_import.py:891 dcim/forms/filtersets.py:1428 -#: dcim/forms/model_forms.py:1377 dcim/models/device_components.py:712 -#: dcim/tables/devices.py:623 ipam/filtersets.py:316 ipam/filtersets.py:327 -#: ipam/filtersets.py:483 ipam/filtersets.py:584 ipam/filtersets.py:595 -#: ipam/forms/bulk_edit.py:241 ipam/forms/bulk_edit.py:297 -#: ipam/forms/bulk_edit.py:339 ipam/forms/bulk_import.py:157 -#: ipam/forms/bulk_import.py:243 ipam/forms/bulk_import.py:279 -#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:172 -#: ipam/forms/filtersets.py:309 ipam/forms/model_forms.py:62 -#: ipam/forms/model_forms.py:202 ipam/forms/model_forms.py:247 -#: ipam/forms/model_forms.py:300 ipam/forms/model_forms.py:431 -#: ipam/forms/model_forms.py:445 ipam/forms/model_forms.py:459 -#: ipam/models/ip.py:233 ipam/models/ip.py:512 ipam/models/ip.py:720 -#: ipam/models/vrfs.py:62 ipam/tables/ip.py:242 ipam/tables/ip.py:309 -#: ipam/tables/ip.py:360 ipam/tables/ip.py:450 -#: templates/dcim/interface.html:133 templates/ipam/ipaddress.html:18 -#: templates/ipam/iprange.html:40 templates/ipam/prefix.html:19 -#: templates/ipam/vrf.html:7 templates/ipam/vrf.html:13 -#: templates/virtualization/vminterface.html:47 -#: virtualization/forms/bulk_edit.py:261 -#: virtualization/forms/bulk_import.py:171 -#: virtualization/forms/filtersets.py:228 -#: virtualization/forms/model_forms.py:344 -#: virtualization/models/virtualmachines.py:355 -#: virtualization/tables/virtualmachines.py:143 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 +#: netbox/dcim/models/device_components.py:712 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 +#: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 +#: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 +#: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 +#: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 +#: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 +#: netbox/ipam/forms/model_forms.py:300 netbox/ipam/forms/model_forms.py:431 +#: netbox/ipam/forms/model_forms.py:445 netbox/ipam/forms/model_forms.py:459 +#: netbox/ipam/models/ip.py:233 netbox/ipam/models/ip.py:512 +#: netbox/ipam/models/ip.py:720 netbox/ipam/models/vrfs.py:62 +#: netbox/ipam/tables/ip.py:242 netbox/ipam/tables/ip.py:309 +#: netbox/ipam/tables/ip.py:360 netbox/ipam/tables/ip.py:450 +#: netbox/templates/dcim/interface.html:133 +#: netbox/templates/ipam/ipaddress.html:18 +#: netbox/templates/ipam/iprange.html:40 netbox/templates/ipam/prefix.html:19 +#: netbox/templates/ipam/vrf.html:7 netbox/templates/ipam/vrf.html:13 +#: netbox/templates/virtualization/vminterface.html:47 +#: netbox/virtualization/forms/bulk_edit.py:261 +#: netbox/virtualization/forms/bulk_import.py:171 +#: netbox/virtualization/forms/filtersets.py:228 +#: netbox/virtualization/forms/model_forms.py:344 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "" -#: dcim/filtersets.py:1619 ipam/filtersets.py:322 ipam/filtersets.py:333 -#: ipam/filtersets.py:489 ipam/filtersets.py:590 ipam/filtersets.py:601 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 +#: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 +#: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "" -#: dcim/filtersets.py:1624 ipam/filtersets.py:1030 vpn/filtersets.py:353 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "" -#: dcim/filtersets.py:1630 dcim/forms/filtersets.py:1433 -#: dcim/tables/devices.py:570 ipam/filtersets.py:1036 -#: ipam/forms/filtersets.py:518 ipam/tables/vlans.py:137 -#: templates/dcim/interface.html:93 templates/ipam/vlan.html:66 -#: templates/vpn/l2vpntermination.html:12 -#: virtualization/forms/filtersets.py:233 vpn/forms/bulk_import.py:280 -#: vpn/forms/filtersets.py:246 vpn/forms/model_forms.py:409 -#: vpn/forms/model_forms.py:427 vpn/models/l2vpn.py:63 vpn/tables/l2vpn.py:55 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 +#: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 +#: netbox/templates/vpn/l2vpntermination.html:12 +#: netbox/virtualization/forms/filtersets.py:233 +#: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 +#: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 +#: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "" -#: dcim/filtersets.py:1662 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "" -#: dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "" -#: dcim/filtersets.py:1671 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "" -#: dcim/filtersets.py:1676 virtualization/filtersets.py:293 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "" -#: dcim/filtersets.py:1681 virtualization/filtersets.py:298 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "" -#: dcim/filtersets.py:1686 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "" -#: dcim/filtersets.py:1713 dcim/filtersets.py:1725 -#: dcim/forms/filtersets.py:1345 dcim/forms/model_forms.py:1689 -#: templates/dcim/virtualdevicecontext.html:15 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 +#: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "" -#: dcim/filtersets.py:1719 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "" -#: dcim/filtersets.py:1730 templates/wireless/wirelesslan.html:11 -#: wireless/forms/model_forms.py:53 +#: netbox/dcim/filtersets.py:1730 netbox/templates/wireless/wirelesslan.html:11 +#: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "" -#: dcim/filtersets.py:1734 dcim/tables/devices.py:610 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "" -#: dcim/filtersets.py:1803 +#: netbox/dcim/filtersets.py:1803 msgid "Parent module bay (ID)" msgstr "" -#: dcim/filtersets.py:1808 +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "" -#: dcim/filtersets.py:1819 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "" -#: dcim/filtersets.py:1825 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "" -#: dcim/filtersets.py:1891 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "" -#: dcim/filtersets.py:1897 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "" -#: dcim/filtersets.py:1939 tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "" -#: dcim/filtersets.py:1945 extras/filtersets.py:618 tenancy/filtersets.py:252 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 +#: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "" -#: dcim/filtersets.py:1981 dcim/forms/filtersets.py:1077 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "" -#: dcim/filtersets.py:2239 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "" -#: dcim/forms/bulk_create.py:40 extras/forms/filtersets.py:401 -#: extras/forms/model_forms.py:567 extras/forms/model_forms.py:619 -#: netbox/forms/base.py:86 netbox/forms/mixins.py:81 -#: netbox/tables/columns.py:478 -#: templates/circuits/inc/circuit_termination.html:32 -#: templates/generic/bulk_edit.html:65 templates/inc/panels/tags.html:5 -#: utilities/forms/fields/fields.py:81 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 +#: netbox/templates/circuits/inc/circuit_termination.html:32 +#: netbox/templates/generic/bulk_edit.html:65 +#: netbox/templates/inc/panels/tags.html:5 +#: netbox/utilities/forms/fields/fields.py:81 msgid "Tags" msgstr "" -#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1498 -#: dcim/forms/model_forms.py:488 dcim/forms/model_forms.py:546 -#: dcim/forms/object_create.py:197 dcim/forms/object_create.py:353 -#: dcim/tables/devices.py:165 dcim/tables/devices.py:703 -#: dcim/tables/devicetypes.py:247 templates/dcim/device.html:43 -#: templates/dcim/device.html:131 templates/dcim/modulebay.html:38 -#: templates/dcim/virtualchassis.html:66 -#: templates/dcim/virtualchassis_edit.html:55 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 +#: netbox/dcim/forms/object_create.py:197 +#: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 +#: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 +#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/virtualchassis.html:66 +#: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" msgstr "" -#: dcim/forms/bulk_create.py:114 +#: netbox/dcim/forms/bulk_create.py:114 msgid "" "Alphanumeric ranges are supported. (Must match the number of names being " "created.)" msgstr "" -#: dcim/forms/bulk_edit.py:132 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "" -#: dcim/forms/bulk_edit.py:137 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "" -#: dcim/forms/bulk_edit.py:143 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "" -#: dcim/forms/bulk_edit.py:146 dcim/forms/bulk_import.py:123 -#: dcim/forms/model_forms.py:128 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "" -#: dcim/forms/bulk_edit.py:224 dcim/forms/bulk_edit.py:495 -#: dcim/forms/bulk_edit.py:559 dcim/forms/bulk_edit.py:632 -#: dcim/forms/bulk_edit.py:656 dcim/forms/bulk_edit.py:740 -#: dcim/forms/bulk_edit.py:1267 dcim/forms/bulk_edit.py:1660 -#: dcim/forms/bulk_import.py:182 dcim/forms/bulk_import.py:371 -#: dcim/forms/bulk_import.py:405 dcim/forms/bulk_import.py:450 -#: dcim/forms/bulk_import.py:486 dcim/forms/bulk_import.py:1082 -#: dcim/forms/filtersets.py:313 dcim/forms/filtersets.py:372 -#: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:619 -#: dcim/forms/filtersets.py:700 dcim/forms/filtersets.py:782 -#: dcim/forms/filtersets.py:947 dcim/forms/filtersets.py:1539 -#: dcim/forms/model_forms.py:207 dcim/forms/model_forms.py:337 -#: dcim/forms/model_forms.py:349 dcim/forms/model_forms.py:395 -#: dcim/forms/model_forms.py:436 dcim/forms/model_forms.py:1075 -#: dcim/forms/model_forms.py:1514 dcim/forms/object_import.py:187 -#: dcim/tables/devices.py:96 dcim/tables/devices.py:172 -#: dcim/tables/devices.py:936 dcim/tables/devicetypes.py:81 -#: dcim/tables/devicetypes.py:309 dcim/tables/modules.py:20 -#: dcim/tables/modules.py:60 dcim/tables/racks.py:58 dcim/tables/racks.py:132 -#: templates/dcim/devicetype.html:14 templates/dcim/inventoryitem.html:44 -#: templates/dcim/manufacturer.html:33 templates/dcim/modulebay.html:62 -#: templates/dcim/moduletype.html:14 templates/dcim/platform.html:37 -#: templates/dcim/racktype.html:16 +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:187 +#: netbox/dcim/tables/devices.py:96 netbox/dcim/tables/devices.py:172 +#: netbox/dcim/tables/devices.py:936 netbox/dcim/tables/devicetypes.py:81 +#: netbox/dcim/tables/devicetypes.py:309 netbox/dcim/tables/modules.py:20 +#: netbox/dcim/tables/modules.py:60 netbox/dcim/tables/racks.py:58 +#: netbox/dcim/tables/racks.py:132 netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 msgid "Manufacturer" msgstr "" -#: dcim/forms/bulk_edit.py:229 dcim/forms/bulk_edit.py:372 -#: dcim/forms/bulk_import.py:191 dcim/forms/bulk_import.py:263 -#: dcim/forms/filtersets.py:255 -#: templates/dcim/inc/panels/racktype_dimensions.html:6 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 msgid "Form factor" msgstr "" -#: dcim/forms/bulk_edit.py:234 dcim/forms/bulk_edit.py:377 -#: dcim/forms/bulk_import.py:199 dcim/forms/bulk_import.py:266 -#: dcim/forms/filtersets.py:260 -#: templates/dcim/inc/panels/racktype_dimensions.html:10 +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "" -#: dcim/forms/bulk_edit.py:240 dcim/forms/bulk_edit.py:383 -#: templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "" -#: dcim/forms/bulk_edit.py:249 dcim/forms/bulk_edit.py:388 -#: dcim/forms/filtersets.py:274 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "" -#: dcim/forms/bulk_edit.py:252 dcim/forms/bulk_edit.py:391 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "" -#: dcim/forms/bulk_edit.py:257 dcim/forms/bulk_edit.py:396 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "" -#: dcim/forms/bulk_edit.py:262 dcim/forms/bulk_edit.py:401 -#: dcim/forms/bulk_import.py:204 dcim/forms/bulk_import.py:271 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "" -#: dcim/forms/bulk_edit.py:267 dcim/forms/bulk_edit.py:406 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "" -#: dcim/forms/bulk_edit.py:272 dcim/forms/bulk_edit.py:299 -#: dcim/forms/bulk_edit.py:416 dcim/forms/bulk_edit.py:446 -#: dcim/forms/bulk_edit.py:529 dcim/forms/bulk_edit.py:552 -#: dcim/forms/bulk_edit.py:573 dcim/forms/bulk_edit.py:595 -#: dcim/forms/bulk_import.py:384 dcim/forms/bulk_import.py:416 -#: dcim/forms/filtersets.py:285 dcim/forms/filtersets.py:307 -#: dcim/forms/filtersets.py:327 dcim/forms/filtersets.py:401 -#: dcim/forms/filtersets.py:488 dcim/forms/filtersets.py:594 -#: dcim/forms/filtersets.py:613 dcim/forms/filtersets.py:674 -#: dcim/forms/model_forms.py:221 dcim/forms/model_forms.py:298 -#: dcim/tables/devicetypes.py:107 dcim/tables/modules.py:35 -#: dcim/tables/racks.py:74 dcim/tables/racks.py:172 -#: extras/forms/bulk_edit.py:53 extras/forms/bulk_edit.py:133 -#: extras/forms/bulk_edit.py:183 extras/forms/bulk_edit.py:288 -#: extras/forms/filtersets.py:64 extras/forms/filtersets.py:156 -#: extras/forms/filtersets.py:243 ipam/forms/bulk_edit.py:189 -#: templates/dcim/device.html:324 templates/dcim/devicetype.html:49 -#: templates/dcim/moduletype.html:34 templates/dcim/rack.html:81 -#: templates/dcim/racktype.html:41 templates/extras/configcontext.html:17 -#: templates/extras/customlink.html:25 templates/extras/savedfilter.html:33 -#: templates/ipam/role.html:30 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 +#: netbox/templates/dcim/device.html:324 +#: netbox/templates/dcim/devicetype.html:49 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 +#: netbox/templates/extras/configcontext.html:17 +#: netbox/templates/extras/customlink.html:25 +#: netbox/templates/extras/savedfilter.html:33 +#: netbox/templates/ipam/role.html:30 msgid "Weight" msgstr "" -#: dcim/forms/bulk_edit.py:277 dcim/forms/bulk_edit.py:421 -#: dcim/forms/filtersets.py:290 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "" -#: dcim/forms/bulk_edit.py:282 dcim/forms/bulk_edit.py:426 -#: dcim/forms/bulk_edit.py:534 dcim/forms/bulk_edit.py:578 -#: dcim/forms/bulk_import.py:210 dcim/forms/bulk_import.py:283 -#: dcim/forms/bulk_import.py:389 dcim/forms/bulk_import.py:421 -#: dcim/forms/filtersets.py:295 dcim/forms/filtersets.py:598 -#: dcim/forms/filtersets.py:678 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "" -#: dcim/forms/bulk_edit.py:296 dcim/forms/filtersets.py:305 -#: dcim/forms/model_forms.py:217 dcim/forms/model_forms.py:256 -#: templates/dcim/rack.html:45 templates/dcim/racktype.html:13 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 msgid "Rack Type" msgstr "" -#: dcim/forms/bulk_edit.py:298 dcim/forms/model_forms.py:220 -#: dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 msgid "Outer Dimensions" msgstr "" -#: dcim/forms/bulk_edit.py:301 dcim/forms/model_forms.py:222 -#: dcim/forms/model_forms.py:299 templates/dcim/device.html:315 -#: templates/dcim/inc/panels/racktype_dimensions.html:3 +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 msgid "Dimensions" msgstr "" -#: dcim/forms/bulk_edit.py:303 dcim/forms/filtersets.py:306 -#: dcim/forms/filtersets.py:326 dcim/forms/model_forms.py:224 -#: templates/dcim/inc/panels/racktype_numbering.html:3 +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 msgid "Numbering" msgstr "" -#: dcim/forms/bulk_edit.py:357 dcim/forms/bulk_edit.py:1262 -#: dcim/forms/bulk_edit.py:1655 dcim/forms/bulk_import.py:253 -#: dcim/forms/bulk_import.py:1076 dcim/forms/filtersets.py:367 -#: dcim/forms/filtersets.py:777 dcim/forms/filtersets.py:1534 -#: dcim/forms/model_forms.py:251 dcim/forms/model_forms.py:1070 -#: dcim/forms/model_forms.py:1509 dcim/forms/object_import.py:181 -#: dcim/tables/devices.py:169 dcim/tables/devices.py:805 -#: dcim/tables/devices.py:933 dcim/tables/devicetypes.py:305 -#: dcim/tables/racks.py:129 extras/filtersets.py:552 -#: ipam/forms/bulk_edit.py:260 ipam/forms/bulk_edit.py:310 -#: ipam/forms/bulk_edit.py:358 ipam/forms/bulk_edit.py:556 -#: ipam/forms/bulk_import.py:197 ipam/forms/bulk_import.py:262 -#: ipam/forms/bulk_import.py:298 ipam/forms/bulk_import.py:455 -#: ipam/forms/filtersets.py:237 ipam/forms/filtersets.py:289 -#: ipam/forms/filtersets.py:360 ipam/forms/filtersets.py:509 -#: ipam/forms/model_forms.py:188 ipam/forms/model_forms.py:221 -#: ipam/forms/model_forms.py:250 ipam/forms/model_forms.py:643 -#: ipam/tables/ip.py:258 ipam/tables/ip.py:316 ipam/tables/ip.py:367 -#: ipam/tables/vlans.py:130 ipam/tables/vlans.py:235 -#: templates/dcim/device.html:182 -#: templates/dcim/inc/panels/inventory_items.html:20 -#: templates/dcim/interface.html:223 templates/dcim/inventoryitem.html:36 -#: templates/dcim/rack.html:49 templates/ipam/ipaddress.html:41 -#: templates/ipam/iprange.html:50 templates/ipam/prefix.html:77 -#: templates/ipam/role.html:19 templates/ipam/vlan.html:52 -#: templates/virtualization/virtualmachine.html:23 -#: templates/vpn/tunneltermination.html:17 -#: templates/wireless/inc/wirelesslink_interface.html:20 -#: tenancy/forms/bulk_edit.py:142 tenancy/forms/filtersets.py:107 -#: tenancy/forms/model_forms.py:137 tenancy/tables/contacts.py:102 -#: virtualization/forms/bulk_edit.py:145 -#: virtualization/forms/bulk_import.py:106 -#: virtualization/forms/filtersets.py:157 -#: virtualization/forms/model_forms.py:195 -#: virtualization/tables/virtualmachines.py:75 vpn/forms/bulk_edit.py:87 -#: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:85 -#: vpn/forms/model_forms.py:78 vpn/forms/model_forms.py:113 -#: vpn/tables/tunnels.py:82 +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 netbox/dcim/forms/object_import.py:181 +#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:805 +#: netbox/dcim/tables/devices.py:933 netbox/dcim/tables/devicetypes.py:305 +#: netbox/dcim/tables/racks.py:129 netbox/extras/filtersets.py:552 +#: netbox/ipam/forms/bulk_edit.py:260 netbox/ipam/forms/bulk_edit.py:310 +#: netbox/ipam/forms/bulk_edit.py:358 netbox/ipam/forms/bulk_edit.py:556 +#: netbox/ipam/forms/bulk_import.py:197 netbox/ipam/forms/bulk_import.py:262 +#: netbox/ipam/forms/bulk_import.py:298 netbox/ipam/forms/bulk_import.py:455 +#: netbox/ipam/forms/filtersets.py:237 netbox/ipam/forms/filtersets.py:289 +#: netbox/ipam/forms/filtersets.py:360 netbox/ipam/forms/filtersets.py:509 +#: netbox/ipam/forms/model_forms.py:188 netbox/ipam/forms/model_forms.py:221 +#: netbox/ipam/forms/model_forms.py:250 netbox/ipam/forms/model_forms.py:643 +#: netbox/ipam/tables/ip.py:258 netbox/ipam/tables/ip.py:316 +#: netbox/ipam/tables/ip.py:367 netbox/ipam/tables/vlans.py:130 +#: netbox/ipam/tables/vlans.py:235 netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 msgid "Role" msgstr "" -#: dcim/forms/bulk_edit.py:364 dcim/forms/bulk_edit.py:712 -#: dcim/forms/bulk_edit.py:764 templates/dcim/device.html:104 -#: templates/dcim/module.html:77 templates/dcim/modulebay.html:70 -#: templates/dcim/rack.html:57 templates/virtualization/virtualmachine.html:35 +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 netbox/templates/dcim/modulebay.html:70 +#: netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 msgid "Serial Number" msgstr "" -#: dcim/forms/bulk_edit.py:367 dcim/forms/filtersets.py:387 -#: dcim/forms/filtersets.py:813 dcim/forms/filtersets.py:967 -#: dcim/forms/filtersets.py:1546 +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 msgid "Asset tag" msgstr "" -#: dcim/forms/bulk_edit.py:411 dcim/forms/bulk_edit.py:524 -#: dcim/forms/bulk_edit.py:568 dcim/forms/bulk_edit.py:705 -#: dcim/forms/bulk_import.py:277 dcim/forms/bulk_import.py:410 -#: dcim/forms/bulk_import.py:580 dcim/forms/filtersets.py:280 -#: dcim/forms/filtersets.py:511 dcim/forms/filtersets.py:669 -#: dcim/forms/filtersets.py:804 templates/dcim/device.html:98 -#: templates/dcim/devicetype.html:65 templates/dcim/moduletype.html:30 -#: templates/dcim/rack.html:65 templates/dcim/racktype.html:28 +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 msgid "Airflow" msgstr "" -#: dcim/forms/bulk_edit.py:440 dcim/forms/bulk_edit.py:910 -#: dcim/forms/bulk_import.py:322 dcim/forms/bulk_import.py:325 -#: dcim/forms/bulk_import.py:553 dcim/forms/bulk_import.py:1358 -#: dcim/forms/bulk_import.py:1362 dcim/forms/filtersets.py:104 -#: dcim/forms/filtersets.py:324 dcim/forms/filtersets.py:405 -#: dcim/forms/filtersets.py:419 dcim/forms/filtersets.py:457 -#: dcim/forms/filtersets.py:772 dcim/forms/filtersets.py:1035 -#: dcim/forms/filtersets.py:1167 dcim/forms/model_forms.py:264 -#: dcim/forms/model_forms.py:306 dcim/forms/model_forms.py:479 -#: dcim/forms/model_forms.py:755 dcim/forms/object_create.py:400 -#: dcim/tables/devices.py:161 dcim/tables/power.py:70 dcim/tables/racks.py:217 -#: ipam/forms/bulk_edit.py:468 ipam/forms/filtersets.py:442 -#: templates/dcim/device.html:30 templates/dcim/inc/cable_termination.html:16 -#: templates/dcim/powerfeed.html:28 templates/dcim/rack.html:13 -#: templates/dcim/rack/base.html:4 templates/dcim/rackreservation.html:19 -#: templates/dcim/rackreservation.html:36 -#: virtualization/forms/model_forms.py:113 +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 +#: netbox/templates/dcim/inc/cable_termination.html:16 +#: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 +#: netbox/templates/dcim/rack/base.html:4 +#: netbox/templates/dcim/rackreservation.html:19 +#: netbox/templates/dcim/rackreservation.html:36 +#: netbox/virtualization/forms/model_forms.py:113 msgid "Rack" msgstr "" -#: dcim/forms/bulk_edit.py:444 dcim/forms/bulk_edit.py:730 -#: dcim/forms/filtersets.py:325 dcim/forms/filtersets.py:398 -#: dcim/forms/filtersets.py:481 dcim/forms/filtersets.py:608 -#: dcim/forms/filtersets.py:721 dcim/forms/filtersets.py:942 -#: dcim/forms/model_forms.py:670 dcim/forms/model_forms.py:1579 -#: templates/dcim/device_edit.html:20 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 +#: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "" -#: dcim/forms/bulk_edit.py:500 dcim/forms/bulk_import.py:377 -#: dcim/forms/filtersets.py:499 dcim/forms/model_forms.py:353 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "" -#: dcim/forms/bulk_edit.py:505 dcim/forms/bulk_edit.py:564 -#: dcim/forms/filtersets.py:502 dcim/forms/filtersets.py:622 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "" -#: dcim/forms/bulk_edit.py:509 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "" -#: dcim/forms/bulk_edit.py:521 dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "" -#: dcim/forms/bulk_edit.py:550 dcim/forms/model_forms.py:368 -#: dcim/tables/devicetypes.py:78 templates/dcim/device.html:88 -#: templates/dcim/devicebay.html:52 templates/dcim/module.html:61 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 +#: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 +#: netbox/templates/dcim/devicebay.html:52 netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "" -#: dcim/forms/bulk_edit.py:592 dcim/forms/model_forms.py:401 -#: dcim/tables/modules.py:17 dcim/tables/modules.py:65 -#: templates/dcim/module.html:65 templates/dcim/modulebay.html:66 -#: templates/dcim/moduletype.html:11 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 +#: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 +#: netbox/templates/dcim/module.html:65 netbox/templates/dcim/modulebay.html:66 +#: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "" -#: dcim/forms/bulk_edit.py:596 dcim/forms/model_forms.py:371 -#: dcim/forms/model_forms.py:402 templates/dcim/devicetype.html:11 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 msgid "Chassis" msgstr "" -#: dcim/forms/bulk_edit.py:610 dcim/models/devices.py:484 -#: dcim/tables/devices.py:67 +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 +#: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "" -#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_edit.py:637 -#: dcim/forms/bulk_edit.py:720 dcim/forms/bulk_import.py:434 -#: dcim/forms/bulk_import.py:438 dcim/forms/bulk_import.py:457 -#: dcim/forms/bulk_import.py:461 dcim/forms/bulk_import.py:586 -#: dcim/forms/bulk_import.py:590 dcim/forms/filtersets.py:689 -#: dcim/forms/filtersets.py:705 dcim/forms/filtersets.py:823 -#: dcim/forms/model_forms.py:415 dcim/forms/model_forms.py:441 -#: dcim/forms/model_forms.py:555 virtualization/forms/bulk_import.py:132 -#: virtualization/forms/bulk_import.py:133 -#: virtualization/forms/filtersets.py:188 -#: virtualization/forms/model_forms.py:215 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 +#: netbox/virtualization/forms/bulk_import.py:132 +#: netbox/virtualization/forms/bulk_import.py:133 +#: netbox/virtualization/forms/filtersets.py:188 +#: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "" -#: dcim/forms/bulk_edit.py:661 dcim/forms/bulk_edit.py:1061 -#: dcim/forms/bulk_import.py:492 dcim/forms/filtersets.py:114 -#: dcim/forms/model_forms.py:501 dcim/forms/model_forms.py:872 -#: dcim/forms/model_forms.py:889 extras/filtersets.py:547 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "" -#: dcim/forms/bulk_edit.py:672 dcim/forms/bulk_import.py:473 -#: dcim/forms/filtersets.py:119 dcim/forms/model_forms.py:509 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "" -#: dcim/forms/bulk_edit.py:695 dcim/forms/bulk_import.py:498 -#: dcim/forms/filtersets.py:796 dcim/forms/model_forms.py:451 -#: dcim/forms/model_forms.py:513 dcim/tables/devices.py:182 -#: extras/filtersets.py:563 templates/dcim/device.html:186 -#: templates/dcim/platform.html:26 -#: templates/virtualization/virtualmachine.html:27 -#: virtualization/forms/bulk_edit.py:160 -#: virtualization/forms/bulk_import.py:122 -#: virtualization/forms/filtersets.py:168 -#: virtualization/forms/model_forms.py:203 -#: virtualization/tables/virtualmachines.py:79 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 +#: netbox/templates/dcim/platform.html:26 +#: netbox/templates/virtualization/virtualmachine.html:27 +#: netbox/virtualization/forms/bulk_edit.py:160 +#: netbox/virtualization/forms/bulk_import.py:122 +#: netbox/virtualization/forms/filtersets.py:168 +#: netbox/virtualization/forms/model_forms.py:203 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "" -#: dcim/forms/bulk_edit.py:728 dcim/forms/bulk_edit.py:1281 -#: dcim/forms/bulk_edit.py:1650 dcim/forms/bulk_edit.py:1696 -#: dcim/forms/bulk_import.py:641 dcim/forms/bulk_import.py:703 -#: dcim/forms/bulk_import.py:729 dcim/forms/bulk_import.py:755 -#: dcim/forms/bulk_import.py:775 dcim/forms/bulk_import.py:828 -#: dcim/forms/bulk_import.py:946 dcim/forms/bulk_import.py:994 -#: dcim/forms/bulk_import.py:1011 dcim/forms/bulk_import.py:1023 -#: dcim/forms/bulk_import.py:1071 dcim/forms/bulk_import.py:1422 -#: dcim/forms/connections.py:24 dcim/forms/filtersets.py:131 -#: dcim/forms/filtersets.py:921 dcim/forms/filtersets.py:1051 -#: dcim/forms/filtersets.py:1242 dcim/forms/filtersets.py:1267 -#: dcim/forms/filtersets.py:1291 dcim/forms/filtersets.py:1311 -#: dcim/forms/filtersets.py:1334 dcim/forms/filtersets.py:1444 -#: dcim/forms/filtersets.py:1469 dcim/forms/filtersets.py:1493 -#: dcim/forms/filtersets.py:1511 dcim/forms/filtersets.py:1528 -#: dcim/forms/filtersets.py:1592 dcim/forms/filtersets.py:1616 -#: dcim/forms/filtersets.py:1640 dcim/forms/model_forms.py:633 -#: dcim/forms/model_forms.py:849 dcim/forms/model_forms.py:1208 -#: dcim/forms/model_forms.py:1663 dcim/forms/object_create.py:257 -#: dcim/tables/connections.py:22 dcim/tables/connections.py:41 -#: dcim/tables/connections.py:60 dcim/tables/devices.py:285 -#: dcim/tables/devices.py:371 dcim/tables/devices.py:412 -#: dcim/tables/devices.py:454 dcim/tables/devices.py:505 -#: dcim/tables/devices.py:594 dcim/tables/devices.py:693 -#: dcim/tables/devices.py:750 dcim/tables/devices.py:797 -#: dcim/tables/devices.py:857 dcim/tables/devices.py:926 -#: dcim/tables/devices.py:1053 dcim/tables/modules.py:52 -#: extras/forms/filtersets.py:321 ipam/forms/bulk_import.py:304 -#: ipam/forms/bulk_import.py:481 ipam/forms/filtersets.py:551 -#: ipam/forms/model_forms.py:319 ipam/forms/model_forms.py:679 -#: ipam/forms/model_forms.py:712 ipam/forms/model_forms.py:738 -#: ipam/tables/vlans.py:180 templates/dcim/consoleport.html:20 -#: templates/dcim/consoleserverport.html:20 templates/dcim/device.html:15 -#: templates/dcim/device.html:130 templates/dcim/device_edit.html:10 -#: templates/dcim/devicebay.html:20 templates/dcim/devicebay.html:48 -#: templates/dcim/frontport.html:20 templates/dcim/interface.html:30 -#: templates/dcim/interface.html:161 templates/dcim/inventoryitem.html:20 -#: templates/dcim/module.html:57 templates/dcim/modulebay.html:20 -#: templates/dcim/poweroutlet.html:20 templates/dcim/powerport.html:20 -#: templates/dcim/rearport.html:20 templates/dcim/virtualchassis.html:65 -#: templates/dcim/virtualchassis_edit.html:51 -#: templates/dcim/virtualdevicecontext.html:22 -#: templates/virtualization/virtualmachine.html:114 -#: templates/vpn/tunneltermination.html:23 -#: templates/wireless/inc/wirelesslink_interface.html:6 -#: virtualization/filtersets.py:167 virtualization/forms/bulk_edit.py:137 -#: virtualization/forms/bulk_import.py:99 -#: virtualization/forms/filtersets.py:128 -#: virtualization/forms/model_forms.py:185 -#: virtualization/tables/virtualmachines.py:71 vpn/choices.py:44 -#: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:283 -#: vpn/forms/filtersets.py:275 vpn/forms/model_forms.py:90 -#: vpn/forms/model_forms.py:125 vpn/forms/model_forms.py:236 -#: vpn/forms/model_forms.py:453 wireless/forms/model_forms.py:99 -#: wireless/forms/model_forms.py:141 wireless/tables/wirelesslan.py:75 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 netbox/dcim/forms/object_create.py:257 +#: netbox/dcim/tables/connections.py:22 netbox/dcim/tables/connections.py:41 +#: netbox/dcim/tables/connections.py:60 netbox/dcim/tables/devices.py:285 +#: netbox/dcim/tables/devices.py:371 netbox/dcim/tables/devices.py:412 +#: netbox/dcim/tables/devices.py:454 netbox/dcim/tables/devices.py:505 +#: netbox/dcim/tables/devices.py:594 netbox/dcim/tables/devices.py:693 +#: netbox/dcim/tables/devices.py:750 netbox/dcim/tables/devices.py:797 +#: netbox/dcim/tables/devices.py:857 netbox/dcim/tables/devices.py:926 +#: netbox/dcim/tables/devices.py:1053 netbox/dcim/tables/modules.py:52 +#: netbox/extras/forms/filtersets.py:321 netbox/ipam/forms/bulk_import.py:304 +#: netbox/ipam/forms/bulk_import.py:481 netbox/ipam/forms/filtersets.py:551 +#: netbox/ipam/forms/model_forms.py:319 netbox/ipam/forms/model_forms.py:679 +#: netbox/ipam/forms/model_forms.py:712 netbox/ipam/forms/model_forms.py:738 +#: netbox/ipam/tables/vlans.py:180 netbox/templates/dcim/consoleport.html:20 +#: netbox/templates/dcim/consoleserverport.html:20 +#: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 +#: netbox/templates/dcim/device_edit.html:10 +#: netbox/templates/dcim/devicebay.html:20 +#: netbox/templates/dcim/devicebay.html:48 +#: netbox/templates/dcim/frontport.html:20 +#: netbox/templates/dcim/interface.html:30 +#: netbox/templates/dcim/interface.html:161 +#: netbox/templates/dcim/inventoryitem.html:20 +#: netbox/templates/dcim/module.html:57 netbox/templates/dcim/modulebay.html:20 +#: netbox/templates/dcim/poweroutlet.html:20 +#: netbox/templates/dcim/powerport.html:20 +#: netbox/templates/dcim/rearport.html:20 +#: netbox/templates/dcim/virtualchassis.html:65 +#: netbox/templates/dcim/virtualchassis_edit.html:51 +#: netbox/templates/dcim/virtualdevicecontext.html:22 +#: netbox/templates/virtualization/virtualmachine.html:114 +#: netbox/templates/vpn/tunneltermination.html:23 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:6 +#: netbox/virtualization/filtersets.py:167 +#: netbox/virtualization/forms/bulk_edit.py:137 +#: netbox/virtualization/forms/bulk_import.py:99 +#: netbox/virtualization/forms/filtersets.py:128 +#: netbox/virtualization/forms/model_forms.py:185 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 +#: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 +#: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 +#: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 +#: netbox/vpn/forms/model_forms.py:453 netbox/wireless/forms/model_forms.py:99 +#: netbox/wireless/forms/model_forms.py:141 +#: netbox/wireless/tables/wirelesslan.py:75 msgid "Device" msgstr "" -#: dcim/forms/bulk_edit.py:731 templates/extras/dashboard/widget_config.html:7 -#: virtualization/forms/bulk_edit.py:191 +#: netbox/dcim/forms/bulk_edit.py:731 +#: netbox/templates/extras/dashboard/widget_config.html:7 +#: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "" -#: dcim/forms/bulk_edit.py:745 dcim/forms/bulk_import.py:653 -#: dcim/forms/model_forms.py:647 dcim/forms/model_forms.py:897 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "" -#: dcim/forms/bulk_edit.py:799 dcim/forms/bulk_edit.py:984 -#: dcim/forms/bulk_edit.py:1003 dcim/forms/bulk_edit.py:1026 -#: dcim/forms/bulk_edit.py:1068 dcim/forms/bulk_edit.py:1112 -#: dcim/forms/bulk_edit.py:1163 dcim/forms/bulk_edit.py:1190 -#: dcim/forms/bulk_edit.py:1217 dcim/forms/bulk_edit.py:1235 -#: dcim/forms/bulk_edit.py:1253 dcim/forms/filtersets.py:67 -#: dcim/forms/object_create.py:46 templates/dcim/cable.html:32 -#: templates/dcim/consoleport.html:32 templates/dcim/consoleserverport.html:32 -#: templates/dcim/devicebay.html:28 templates/dcim/frontport.html:32 -#: templates/dcim/inc/panels/inventory_items.html:19 -#: templates/dcim/interface.html:42 templates/dcim/inventoryitem.html:32 -#: templates/dcim/modulebay.html:34 templates/dcim/poweroutlet.html:32 -#: templates/dcim/powerport.html:32 templates/dcim/rearport.html:32 -#: templates/extras/customfield.html:26 templates/generic/bulk_import.html:162 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 +#: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 +#: netbox/templates/dcim/consoleport.html:32 +#: netbox/templates/dcim/consoleserverport.html:32 +#: netbox/templates/dcim/devicebay.html:28 +#: netbox/templates/dcim/frontport.html:32 +#: netbox/templates/dcim/inc/panels/inventory_items.html:19 +#: netbox/templates/dcim/interface.html:42 +#: netbox/templates/dcim/inventoryitem.html:32 +#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/poweroutlet.html:32 +#: netbox/templates/dcim/powerport.html:32 +#: netbox/templates/dcim/rearport.html:32 +#: netbox/templates/extras/customfield.html:26 +#: netbox/templates/generic/bulk_import.html:162 msgid "Label" msgstr "" -#: dcim/forms/bulk_edit.py:808 dcim/forms/filtersets.py:1068 -#: templates/dcim/cable.html:50 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 +#: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "" -#: dcim/forms/bulk_edit.py:813 dcim/forms/bulk_import.py:1226 -#: dcim/forms/bulk_import.py:1229 dcim/forms/filtersets.py:1072 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "" -#: dcim/forms/bulk_edit.py:837 templates/dcim/virtualchassis.html:23 +#: netbox/dcim/forms/bulk_edit.py:837 +#: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "" -#: dcim/forms/bulk_edit.py:905 dcim/forms/bulk_import.py:1345 -#: dcim/forms/filtersets.py:1158 dcim/forms/model_forms.py:750 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "" -#: dcim/forms/bulk_edit.py:927 dcim/forms/bulk_import.py:1381 -#: dcim/forms/filtersets.py:1180 templates/dcim/powerfeed.html:83 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "" -#: dcim/forms/bulk_edit.py:933 dcim/forms/bulk_import.py:1386 -#: dcim/forms/filtersets.py:1185 templates/dcim/powerfeed.html:95 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "" -#: dcim/forms/bulk_edit.py:939 dcim/forms/filtersets.py:1190 -#: templates/dcim/powerfeed.html:87 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 +#: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "" -#: dcim/forms/bulk_edit.py:943 dcim/forms/filtersets.py:1194 -#: templates/dcim/powerfeed.html:91 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 +#: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "" -#: dcim/forms/bulk_edit.py:947 dcim/forms/filtersets.py:1198 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "" -#: dcim/forms/bulk_edit.py:1036 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "" -#: dcim/forms/bulk_edit.py:1039 dcim/models/device_component_templates.py:283 -#: dcim/models/device_components.py:357 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 +#: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "" -#: dcim/forms/bulk_edit.py:1042 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "" -#: dcim/forms/bulk_edit.py:1045 dcim/models/device_component_templates.py:290 -#: dcim/models/device_components.py:364 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 +#: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "" -#: dcim/forms/bulk_edit.py:1078 dcim/forms/bulk_import.py:786 -#: dcim/forms/model_forms.py:953 dcim/forms/model_forms.py:1278 -#: dcim/forms/model_forms.py:1566 dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "" -#: dcim/forms/bulk_edit.py:1083 dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "" -#: dcim/forms/bulk_edit.py:1129 dcim/forms/bulk_edit.py:1440 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "" -#: dcim/forms/bulk_edit.py:1139 dcim/forms/bulk_edit.py:1446 -#: dcim/forms/bulk_import.py:876 dcim/forms/filtersets.py:1394 -#: dcim/forms/object_import.py:90 dcim/models/device_component_templates.py:438 -#: dcim/models/device_components.py:671 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 +#: netbox/dcim/forms/object_import.py:90 +#: netbox/dcim/models/device_component_templates.py:438 +#: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "" -#: dcim/forms/bulk_edit.py:1145 dcim/forms/bulk_edit.py:1452 -#: dcim/forms/bulk_import.py:882 dcim/forms/filtersets.py:1399 -#: dcim/forms/object_import.py:95 dcim/models/device_component_templates.py:444 -#: dcim/models/device_components.py:677 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 +#: netbox/dcim/forms/object_import.py:95 +#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "" -#: dcim/forms/bulk_edit.py:1151 dcim/forms/filtersets.py:1404 -#: dcim/forms/object_import.py:100 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 +#: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "" -#: dcim/forms/bulk_edit.py:1288 dcim/forms/model_forms.py:669 -#: dcim/forms/model_forms.py:1223 dcim/tables/devices.py:313 -#: templates/dcim/consoleport.html:24 templates/dcim/consoleserverport.html:24 -#: templates/dcim/frontport.html:24 templates/dcim/interface.html:34 -#: templates/dcim/module.html:54 templates/dcim/modulebay.html:26 -#: templates/dcim/modulebay.html:58 templates/dcim/poweroutlet.html:24 -#: templates/dcim/powerport.html:24 templates/dcim/rearport.html:24 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 +#: netbox/templates/dcim/consoleport.html:24 +#: netbox/templates/dcim/consoleserverport.html:24 +#: netbox/templates/dcim/frontport.html:24 +#: netbox/templates/dcim/interface.html:34 netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 +#: netbox/templates/dcim/poweroutlet.html:24 +#: netbox/templates/dcim/powerport.html:24 +#: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "" -#: dcim/forms/bulk_edit.py:1420 dcim/tables/devices.py:662 -#: templates/dcim/interface.html:110 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 +#: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "" -#: dcim/forms/bulk_edit.py:1425 dcim/forms/model_forms.py:1305 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "" -#: dcim/forms/bulk_edit.py:1431 dcim/forms/bulk_import.py:714 -#: dcim/forms/bulk_import.py:740 dcim/forms/filtersets.py:1252 -#: dcim/forms/filtersets.py:1277 dcim/forms/filtersets.py:1358 -#: dcim/tables/devices.py:607 -#: templates/circuits/inc/circuit_termination_fields.html:67 -#: templates/dcim/consoleport.html:40 templates/dcim/consoleserverport.html:40 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:67 +#: netbox/templates/dcim/consoleport.html:40 +#: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "" -#: dcim/forms/bulk_edit.py:1460 dcim/forms/bulk_import.py:885 -#: templates/vpn/ikepolicy.html:25 templates/vpn/ipsecprofile.html:21 -#: templates/vpn/ipsecprofile.html:48 virtualization/forms/bulk_edit.py:233 -#: virtualization/forms/bulk_import.py:165 vpn/forms/bulk_edit.py:146 -#: vpn/forms/bulk_edit.py:232 vpn/forms/bulk_import.py:176 -#: vpn/forms/bulk_import.py:234 vpn/forms/filtersets.py:135 -#: vpn/forms/filtersets.py:178 vpn/forms/filtersets.py:192 -#: vpn/tables/crypto.py:64 vpn/tables/crypto.py:162 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 +#: netbox/templates/vpn/ikepolicy.html:25 +#: netbox/templates/vpn/ipsecprofile.html:21 +#: netbox/templates/vpn/ipsecprofile.html:48 +#: netbox/virtualization/forms/bulk_edit.py:233 +#: netbox/virtualization/forms/bulk_import.py:165 +#: netbox/vpn/forms/bulk_edit.py:146 netbox/vpn/forms/bulk_edit.py:232 +#: netbox/vpn/forms/bulk_import.py:176 netbox/vpn/forms/bulk_import.py:234 +#: netbox/vpn/forms/filtersets.py:135 netbox/vpn/forms/filtersets.py:178 +#: netbox/vpn/forms/filtersets.py:192 netbox/vpn/tables/crypto.py:64 +#: netbox/vpn/tables/crypto.py:162 msgid "Mode" msgstr "" -#: dcim/forms/bulk_edit.py:1468 dcim/forms/model_forms.py:1354 -#: ipam/forms/bulk_import.py:178 ipam/forms/filtersets.py:498 -#: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:240 -#: virtualization/forms/model_forms.py:321 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 +#: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 +#: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "" -#: dcim/forms/bulk_edit.py:1476 dcim/forms/model_forms.py:1359 -#: dcim/tables/devices.py:579 virtualization/forms/bulk_edit.py:248 -#: virtualization/forms/model_forms.py:326 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 +#: netbox/virtualization/forms/bulk_edit.py:248 +#: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "" -#: dcim/forms/bulk_edit.py:1484 dcim/forms/model_forms.py:1368 -#: dcim/tables/devices.py:585 virtualization/forms/bulk_edit.py:256 -#: virtualization/forms/model_forms.py:335 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 +#: netbox/virtualization/forms/bulk_edit.py:256 +#: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "" -#: dcim/forms/bulk_edit.py:1494 dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "" -#: dcim/forms/bulk_edit.py:1499 dcim/forms/model_forms.py:1346 -#: dcim/tables/devices.py:616 netbox/navigation/menu.py:146 -#: templates/dcim/interface.html:280 wireless/tables/wirelesslan.py:24 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 +#: netbox/templates/dcim/interface.html:280 +#: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "" -#: dcim/forms/bulk_edit.py:1508 dcim/forms/filtersets.py:1328 -#: dcim/forms/model_forms.py:1389 ipam/forms/bulk_edit.py:285 -#: ipam/forms/bulk_edit.py:377 ipam/forms/filtersets.py:169 -#: templates/dcim/interface.html:122 templates/ipam/prefix.html:95 -#: virtualization/forms/model_forms.py:349 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 +#: netbox/templates/dcim/interface.html:122 +#: netbox/templates/ipam/prefix.html:95 +#: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "" -#: dcim/forms/bulk_edit.py:1509 dcim/forms/filtersets.py:720 -#: dcim/forms/model_forms.py:1390 virtualization/forms/model_forms.py:350 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 +#: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "" -#: dcim/forms/bulk_edit.py:1510 dcim/forms/filtersets.py:1329 -#: dcim/forms/model_forms.py:987 dcim/forms/model_forms.py:1392 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "" -#: dcim/forms/bulk_edit.py:1511 dcim/forms/model_forms.py:1391 -#: templates/dcim/interface.html:99 virtualization/forms/bulk_edit.py:267 -#: virtualization/forms/model_forms.py:351 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 +#: netbox/templates/dcim/interface.html:99 +#: netbox/virtualization/forms/bulk_edit.py:267 +#: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "" -#: dcim/forms/bulk_edit.py:1512 dcim/forms/model_forms.py:1393 -#: virtualization/forms/bulk_edit.py:268 -#: virtualization/forms/model_forms.py:352 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 +#: netbox/virtualization/forms/bulk_edit.py:268 +#: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "" -#: dcim/forms/bulk_edit.py:1574 dcim/forms/bulk_edit.py:1576 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "" -#: dcim/forms/bulk_edit.py:1581 dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "" -#: dcim/forms/bulk_import.py:64 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "" -#: dcim/forms/bulk_import.py:78 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "" -#: dcim/forms/bulk_import.py:97 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "" -#: dcim/forms/bulk_import.py:104 tenancy/forms/bulk_import.py:44 -#: tenancy/forms/bulk_import.py:85 wireless/forms/bulk_import.py:40 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/tenancy/forms/bulk_import.py:85 +#: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "" -#: dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "" -#: dcim/forms/bulk_import.py:134 dcim/forms/bulk_import.py:543 -#: dcim/forms/bulk_import.py:1342 ipam/forms/bulk_import.py:175 -#: ipam/forms/bulk_import.py:433 virtualization/forms/bulk_import.py:63 -#: virtualization/forms/bulk_import.py:89 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 +#: netbox/virtualization/forms/bulk_import.py:63 +#: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "" -#: dcim/forms/bulk_import.py:141 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "" -#: dcim/forms/bulk_import.py:143 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "" -#: dcim/forms/bulk_import.py:185 +#: netbox/dcim/forms/bulk_import.py:185 msgid "The manufacturer of this rack type" msgstr "" -#: dcim/forms/bulk_import.py:196 +#: netbox/dcim/forms/bulk_import.py:196 msgid "The lowest-numbered position in the rack" msgstr "" -#: dcim/forms/bulk_import.py:201 dcim/forms/bulk_import.py:268 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "" -#: dcim/forms/bulk_import.py:207 dcim/forms/bulk_import.py:274 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "" -#: dcim/forms/bulk_import.py:213 dcim/forms/bulk_import.py:286 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "" -#: dcim/forms/bulk_import.py:245 +#: netbox/dcim/forms/bulk_import.py:245 msgid "Name of assigned tenant" msgstr "" -#: dcim/forms/bulk_import.py:257 +#: netbox/dcim/forms/bulk_import.py:257 msgid "Name of assigned role" msgstr "" -#: dcim/forms/bulk_import.py:280 dcim/forms/bulk_import.py:413 -#: dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 msgid "Airflow direction" msgstr "" -#: dcim/forms/bulk_import.py:312 +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "" -#: dcim/forms/bulk_import.py:319 dcim/forms/bulk_import.py:1355 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "" -#: dcim/forms/bulk_import.py:328 dcim/forms/model_forms.py:311 -#: dcim/tables/racks.py:222 templates/dcim/rackreservation.html:12 -#: templates/dcim/rackreservation.html:45 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 +#: netbox/templates/dcim/rackreservation.html:12 +#: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "" -#: dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "" -#: dcim/forms/bulk_import.py:374 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "" -#: dcim/forms/bulk_import.py:381 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "" -#: dcim/forms/bulk_import.py:386 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "" -#: dcim/forms/bulk_import.py:392 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "" -#: dcim/forms/bulk_import.py:418 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "" -#: dcim/forms/bulk_import.py:424 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "" -#: dcim/forms/bulk_import.py:454 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "" -#: dcim/forms/bulk_import.py:476 dcim/forms/bulk_import.py:1425 -#: tenancy/forms/bulk_import.py:106 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 +#: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "" -#: dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "" -#: dcim/forms/bulk_import.py:495 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "" -#: dcim/forms/bulk_import.py:502 virtualization/forms/bulk_import.py:126 +#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "" -#: dcim/forms/bulk_import.py:510 dcim/forms/bulk_import.py:514 -#: dcim/forms/model_forms.py:536 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "" -#: dcim/forms/bulk_import.py:517 dcim/forms/filtersets.py:728 -#: dcim/forms/filtersets.py:898 dcim/forms/model_forms.py:522 -#: dcim/tables/devices.py:202 extras/filtersets.py:596 -#: extras/forms/filtersets.py:322 ipam/forms/bulk_edit.py:482 -#: ipam/forms/filtersets.py:415 ipam/forms/filtersets.py:447 -#: templates/dcim/device.html:239 templates/virtualization/cluster.html:10 -#: templates/virtualization/virtualmachine.html:92 -#: templates/virtualization/virtualmachine.html:101 -#: virtualization/filtersets.py:157 virtualization/filtersets.py:277 -#: virtualization/forms/bulk_edit.py:129 virtualization/forms/bulk_import.py:92 -#: virtualization/forms/filtersets.py:99 virtualization/forms/filtersets.py:123 -#: virtualization/forms/filtersets.py:204 -#: virtualization/forms/model_forms.py:79 -#: virtualization/forms/model_forms.py:176 -#: virtualization/tables/virtualmachines.py:67 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 +#: netbox/templates/dcim/device.html:239 +#: netbox/templates/virtualization/cluster.html:10 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 +#: netbox/virtualization/filtersets.py:157 +#: netbox/virtualization/filtersets.py:277 +#: netbox/virtualization/forms/bulk_edit.py:129 +#: netbox/virtualization/forms/bulk_import.py:92 +#: netbox/virtualization/forms/filtersets.py:99 +#: netbox/virtualization/forms/filtersets.py:123 +#: netbox/virtualization/forms/filtersets.py:204 +#: netbox/virtualization/forms/model_forms.py:79 +#: netbox/virtualization/forms/model_forms.py:176 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "" -#: dcim/forms/bulk_import.py:521 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "" -#: dcim/forms/bulk_import.py:550 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "" -#: dcim/forms/bulk_import.py:557 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "" -#: dcim/forms/bulk_import.py:560 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "" -#: dcim/forms/bulk_import.py:563 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "" -#: dcim/forms/bulk_import.py:570 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "" -#: dcim/forms/bulk_import.py:573 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "" -#: dcim/forms/bulk_import.py:577 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" -#: dcim/forms/bulk_import.py:644 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "" -#: dcim/forms/bulk_import.py:647 dcim/forms/model_forms.py:640 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "" -#: dcim/forms/bulk_import.py:650 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "" -#: dcim/forms/bulk_import.py:656 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "" -#: dcim/forms/bulk_import.py:664 dcim/forms/model_forms.py:656 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "" -#: dcim/forms/bulk_import.py:666 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" msgstr "" -#: dcim/forms/bulk_import.py:669 dcim/forms/model_forms.py:662 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "" -#: dcim/forms/bulk_import.py:671 dcim/forms/model_forms.py:665 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "" -#: dcim/forms/bulk_import.py:711 dcim/forms/bulk_import.py:737 -#: dcim/forms/bulk_import.py:763 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "" -#: dcim/forms/bulk_import.py:719 dcim/forms/bulk_import.py:745 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "" -#: dcim/forms/bulk_import.py:783 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "" -#: dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "" -#: dcim/forms/bulk_import.py:796 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "" -#: dcim/forms/bulk_import.py:837 dcim/forms/model_forms.py:1316 -#: virtualization/forms/bulk_import.py:155 -#: virtualization/forms/model_forms.py:305 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 +#: netbox/virtualization/forms/bulk_import.py:155 +#: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "" -#: dcim/forms/bulk_import.py:844 dcim/forms/model_forms.py:1324 -#: virtualization/forms/bulk_import.py:162 -#: virtualization/forms/model_forms.py:313 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 +#: netbox/virtualization/forms/bulk_import.py:162 +#: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "" -#: dcim/forms/bulk_import.py:847 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "" -#: dcim/forms/bulk_import.py:851 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "" -#: dcim/forms/bulk_import.py:854 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "" -#: dcim/forms/bulk_import.py:859 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" -#: dcim/forms/bulk_import.py:865 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "" -#: dcim/forms/bulk_import.py:868 dcim/forms/filtersets.py:1365 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "" -#: dcim/forms/bulk_import.py:873 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "" -#: dcim/forms/bulk_import.py:879 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "" -#: dcim/forms/bulk_import.py:888 virtualization/forms/bulk_import.py:168 +#: netbox/dcim/forms/bulk_import.py:888 +#: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "" -#: dcim/forms/bulk_import.py:895 ipam/forms/bulk_import.py:161 -#: ipam/forms/bulk_import.py:247 ipam/forms/bulk_import.py:283 -#: ipam/forms/filtersets.py:201 ipam/forms/filtersets.py:277 -#: ipam/forms/filtersets.py:336 virtualization/forms/bulk_import.py:175 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 +#: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 +#: netbox/ipam/forms/filtersets.py:336 +#: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "" -#: dcim/forms/bulk_import.py:898 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "" -#: dcim/forms/bulk_import.py:901 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "" -#: dcim/forms/bulk_import.py:937 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "" -#: dcim/forms/bulk_import.py:951 dcim/forms/model_forms.py:1000 -#: dcim/forms/model_forms.py:1574 dcim/forms/object_import.py:117 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "" -#: dcim/forms/bulk_import.py:954 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "" -#: dcim/forms/bulk_import.py:959 dcim/forms/bulk_import.py:1000 -#: dcim/forms/bulk_import.py:1216 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "" -#: dcim/forms/bulk_import.py:1028 dcim/tables/devices.py:818 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "" -#: dcim/forms/bulk_import.py:1032 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "" -#: dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "" -#: dcim/forms/bulk_import.py:1092 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "" -#: dcim/forms/bulk_import.py:1095 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "" -#: dcim/forms/bulk_import.py:1099 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "" -#: dcim/forms/bulk_import.py:1102 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "" -#: dcim/forms/bulk_import.py:1104 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "" -#: dcim/forms/bulk_import.py:1146 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "" -#: dcim/forms/bulk_import.py:1171 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "" -#: dcim/forms/bulk_import.py:1174 dcim/forms/bulk_import.py:1192 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "" -#: dcim/forms/bulk_import.py:1177 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "" -#: dcim/forms/bulk_import.py:1180 dcim/forms/bulk_import.py:1198 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "" -#: dcim/forms/bulk_import.py:1183 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "" -#: dcim/forms/bulk_import.py:1184 dcim/forms/bulk_import.py:1202 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "" -#: dcim/forms/bulk_import.py:1189 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "" -#: dcim/forms/bulk_import.py:1195 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "" -#: dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "" -#: dcim/forms/bulk_import.py:1210 wireless/forms/bulk_import.py:86 +#: netbox/dcim/forms/bulk_import.py:1210 +#: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "" -#: dcim/forms/bulk_import.py:1262 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "" -#: dcim/forms/bulk_import.py:1268 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "" -#: dcim/forms/bulk_import.py:1293 dcim/forms/model_forms.py:785 -#: dcim/tables/devices.py:1023 templates/dcim/device.html:132 -#: templates/dcim/virtualchassis.html:27 templates/dcim/virtualchassis.html:67 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 +#: netbox/templates/dcim/virtualchassis.html:27 +#: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "" -#: dcim/forms/bulk_import.py:1297 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "" -#: dcim/forms/bulk_import.py:1314 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "" -#: dcim/forms/bulk_import.py:1348 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "" -#: dcim/forms/bulk_import.py:1378 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "" -#: dcim/forms/bulk_import.py:1383 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "" -#: dcim/forms/bulk_import.py:1388 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "" -#: dcim/forms/common.py:24 dcim/models/device_components.py:528 -#: templates/dcim/interface.html:57 -#: templates/virtualization/vminterface.html:55 -#: virtualization/forms/bulk_edit.py:225 +#: netbox/dcim/forms/common.py:24 netbox/dcim/models/device_components.py:528 +#: netbox/templates/dcim/interface.html:57 +#: netbox/templates/virtualization/vminterface.html:55 +#: netbox/virtualization/forms/bulk_edit.py:225 msgid "MTU" msgstr "" -#: dcim/forms/common.py:65 +#: netbox/dcim/forms/common.py:65 #, python-brace-format msgid "" "The tagged VLANs ({vlans}) must belong to the same site as the interface's " "parent device/VM, or they must be global" msgstr "" -#: dcim/forms/common.py:126 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." msgstr "" -#: dcim/forms/common.py:131 +#: netbox/dcim/forms/common.py:131 #, python-brace-format msgid "" "Cannot install module with placeholder values in a module bay tree {level} " "in tree but {tokens} placeholders given." msgstr "" -#: dcim/forms/common.py:144 +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "" -#: dcim/forms/common.py:153 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "" -#: dcim/forms/connections.py:49 dcim/forms/model_forms.py:738 -#: dcim/tables/power.py:66 templates/dcim/inc/cable_termination.html:37 -#: templates/dcim/powerfeed.html:24 templates/dcim/powerpanel.html:19 -#: templates/dcim/trace/powerpanel.html:4 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 +#: netbox/dcim/tables/power.py:66 +#: netbox/templates/dcim/inc/cable_termination.html:37 +#: netbox/templates/dcim/powerfeed.html:24 +#: netbox/templates/dcim/powerpanel.html:19 +#: netbox/templates/dcim/trace/powerpanel.html:4 msgid "Power Panel" msgstr "" -#: dcim/forms/connections.py:58 dcim/forms/model_forms.py:765 -#: templates/dcim/powerfeed.html:21 templates/dcim/powerport.html:80 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 +#: netbox/templates/dcim/powerfeed.html:21 +#: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" msgstr "" -#: dcim/forms/connections.py:81 +#: netbox/dcim/forms/connections.py:81 msgid "Side" msgstr "" -#: dcim/forms/filtersets.py:136 dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "" -#: dcim/forms/filtersets.py:149 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "" -#: dcim/forms/filtersets.py:163 tenancy/forms/bulk_import.py:28 -#: tenancy/forms/bulk_import.py:62 tenancy/forms/filtersets.py:33 -#: tenancy/forms/filtersets.py:62 wireless/forms/bulk_import.py:25 -#: wireless/forms/filtersets.py:25 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/tenancy/forms/bulk_import.py:62 netbox/tenancy/forms/filtersets.py:33 +#: netbox/tenancy/forms/filtersets.py:62 +#: netbox/wireless/forms/bulk_import.py:25 +#: netbox/wireless/forms/filtersets.py:25 msgid "Parent group" msgstr "" -#: dcim/forms/filtersets.py:242 templates/dcim/location.html:58 -#: templates/dcim/site.html:56 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 +#: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "" -#: dcim/forms/filtersets.py:380 +#: netbox/dcim/forms/filtersets.py:380 msgid "Rack type" msgstr "" -#: dcim/forms/filtersets.py:397 +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "" -#: dcim/forms/filtersets.py:483 dcim/forms/model_forms.py:373 -#: templates/inc/panels/image_attachments.html:6 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 +#: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "" -#: dcim/forms/filtersets.py:486 dcim/forms/filtersets.py:611 -#: dcim/forms/filtersets.py:726 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "" -#: dcim/forms/filtersets.py:506 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "" -#: dcim/forms/filtersets.py:790 dcim/tables/racks.py:54 -#: templates/dcim/racktype.html:20 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "" -#: dcim/forms/filtersets.py:834 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "" -#: dcim/forms/filtersets.py:841 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "" -#: dcim/forms/filtersets.py:890 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "" -#: dcim/forms/filtersets.py:903 extras/filtersets.py:585 -#: ipam/forms/bulk_edit.py:479 ipam/forms/filtersets.py:452 -#: virtualization/forms/filtersets.py:112 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 +#: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "" -#: dcim/forms/filtersets.py:1210 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "" -#: dcim/forms/filtersets.py:1217 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "" -#: dcim/forms/filtersets.py:1244 dcim/forms/filtersets.py:1269 -#: dcim/forms/filtersets.py:1293 dcim/forms/filtersets.py:1313 -#: dcim/forms/filtersets.py:1336 dcim/tables/devices.py:364 -#: templates/dcim/consoleport.html:55 templates/dcim/consoleserverport.html:55 -#: templates/dcim/frontport.html:69 templates/dcim/interface.html:140 -#: templates/dcim/powerfeed.html:110 templates/dcim/poweroutlet.html:59 -#: templates/dcim/powerport.html:59 templates/dcim/rearport.html:65 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 +#: netbox/templates/dcim/consoleport.html:55 +#: netbox/templates/dcim/consoleserverport.html:55 +#: netbox/templates/dcim/frontport.html:69 +#: netbox/templates/dcim/interface.html:140 +#: netbox/templates/dcim/powerfeed.html:110 +#: netbox/templates/dcim/poweroutlet.html:59 +#: netbox/templates/dcim/powerport.html:59 +#: netbox/templates/dcim/rearport.html:65 msgid "Connection" msgstr "" -#: dcim/forms/filtersets.py:1348 extras/forms/bulk_edit.py:326 -#: extras/forms/bulk_import.py:247 extras/forms/filtersets.py:464 -#: extras/forms/model_forms.py:675 extras/tables/tables.py:579 -#: templates/extras/journalentry.html:30 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 +#: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "" -#: dcim/forms/filtersets.py:1377 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "" -#: dcim/forms/filtersets.py:1389 dcim/forms/model_forms.py:1382 -#: dcim/models/device_components.py:630 templates/dcim/interface.html:129 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 +#: netbox/dcim/models/device_components.py:630 +#: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "" -#: dcim/forms/filtersets.py:1409 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "" -#: dcim/forms/filtersets.py:1413 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "" -#: dcim/forms/filtersets.py:1417 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "" -#: dcim/forms/filtersets.py:1421 templates/dcim/interface.html:85 +#: netbox/dcim/forms/filtersets.py:1421 netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "" -#: dcim/forms/filtersets.py:1446 dcim/forms/filtersets.py:1471 -#: dcim/tables/devices.py:327 templates/dcim/cable.html:12 -#: templates/dcim/cable_trace.html:46 templates/dcim/frontport.html:77 -#: templates/dcim/htmx/cable_edit.html:50 -#: templates/dcim/inc/connection_endpoints.html:4 -#: templates/dcim/rearport.html:73 templates/dcim/trace/cable.html:7 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 +#: netbox/templates/dcim/cable_trace.html:46 +#: netbox/templates/dcim/frontport.html:77 +#: netbox/templates/dcim/htmx/cable_edit.html:50 +#: netbox/templates/dcim/inc/connection_endpoints.html:4 +#: netbox/templates/dcim/rearport.html:73 +#: netbox/templates/dcim/trace/cable.html:7 msgid "Cable" msgstr "" -#: dcim/forms/filtersets.py:1550 dcim/tables/devices.py:945 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "" -#: dcim/forms/formsets.py:20 +#: netbox/dcim/forms/formsets.py:20 #, python-brace-format msgid "A virtual chassis member already exists in position {vc_position}." msgstr "" -#: dcim/forms/model_forms.py:140 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "" -#: dcim/forms/model_forms.py:195 templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "" -#: dcim/forms/model_forms.py:212 dcim/forms/model_forms.py:362 -#: dcim/forms/model_forms.py:446 utilities/forms/fields/fields.py:47 +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 msgid "Slug" msgstr "" -#: dcim/forms/model_forms.py:259 +#: netbox/dcim/forms/model_forms.py:259 msgid "Select a pre-defined rack type, or set physical characteristics below." msgstr "" -#: dcim/forms/model_forms.py:265 +#: netbox/dcim/forms/model_forms.py:265 msgid "Inventory Control" msgstr "" -#: dcim/forms/model_forms.py:313 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." msgstr "" -#: dcim/forms/model_forms.py:322 dcim/tables/racks.py:202 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "" -#: dcim/forms/model_forms.py:423 templates/dcim/devicerole.html:23 +#: netbox/dcim/forms/model_forms.py:423 +#: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "" -#: dcim/forms/model_forms.py:490 dcim/models/devices.py:644 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "" -#: dcim/forms/model_forms.py:547 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" -#: dcim/forms/model_forms.py:552 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "" -#: dcim/forms/model_forms.py:659 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "" -#: dcim/forms/model_forms.py:767 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "" -#: dcim/forms/model_forms.py:1087 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "" -#: dcim/forms/model_forms.py:1095 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "" -#: dcim/forms/model_forms.py:1103 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "" -#: dcim/forms/model_forms.py:1111 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "" -#: dcim/forms/model_forms.py:1119 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "" -#: dcim/forms/model_forms.py:1127 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "" -#: dcim/forms/model_forms.py:1135 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "" -#: dcim/forms/model_forms.py:1144 dcim/forms/model_forms.py:1387 -#: dcim/forms/model_forms.py:1550 dcim/forms/model_forms.py:1582 -#: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:318 -#: ipam/forms/model_forms.py:280 ipam/forms/model_forms.py:289 -#: ipam/tables/fhrp.py:64 ipam/tables/ip.py:372 ipam/tables/vlans.py:169 -#: templates/circuits/inc/circuit_termination_fields.html:51 -#: templates/dcim/frontport.html:106 templates/dcim/interface.html:27 -#: templates/dcim/interface.html:184 templates/dcim/interface.html:310 -#: templates/dcim/rearport.html:102 -#: templates/virtualization/vminterface.html:18 -#: templates/vpn/tunneltermination.html:31 -#: templates/wireless/inc/wirelesslink_interface.html:10 -#: templates/wireless/wirelesslink.html:10 -#: templates/wireless/wirelesslink.html:55 -#: virtualization/forms/model_forms.py:348 vpn/forms/bulk_import.py:297 -#: vpn/forms/model_forms.py:436 vpn/forms/model_forms.py:445 -#: wireless/forms/model_forms.py:113 wireless/forms/model_forms.py:155 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 +#: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 +#: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 +#: netbox/ipam/tables/vlans.py:169 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:51 +#: netbox/templates/dcim/frontport.html:106 +#: netbox/templates/dcim/interface.html:27 +#: netbox/templates/dcim/interface.html:184 +#: netbox/templates/dcim/interface.html:310 +#: netbox/templates/dcim/rearport.html:102 +#: netbox/templates/virtualization/vminterface.html:18 +#: netbox/templates/vpn/tunneltermination.html:31 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:10 +#: netbox/templates/wireless/wirelesslink.html:10 +#: netbox/templates/wireless/wirelesslink.html:55 +#: netbox/virtualization/forms/model_forms.py:348 +#: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 +#: netbox/vpn/forms/model_forms.py:445 netbox/wireless/forms/model_forms.py:113 +#: netbox/wireless/forms/model_forms.py:155 msgid "Interface" msgstr "" -#: dcim/forms/model_forms.py:1145 dcim/forms/model_forms.py:1583 -#: dcim/tables/connections.py:27 templates/dcim/consoleport.html:17 -#: templates/dcim/consoleserverport.html:74 templates/dcim/frontport.html:112 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 +#: netbox/dcim/tables/connections.py:27 +#: netbox/templates/dcim/consoleport.html:17 +#: netbox/templates/dcim/consoleserverport.html:74 +#: netbox/templates/dcim/frontport.html:112 msgid "Console Port" msgstr "" -#: dcim/forms/model_forms.py:1146 dcim/forms/model_forms.py:1584 -#: templates/dcim/consoleport.html:73 templates/dcim/consoleserverport.html:17 -#: templates/dcim/frontport.html:109 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 +#: netbox/templates/dcim/consoleport.html:73 +#: netbox/templates/dcim/consoleserverport.html:17 +#: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "" -#: dcim/forms/model_forms.py:1147 dcim/forms/model_forms.py:1585 -#: templates/circuits/inc/circuit_termination_fields.html:52 -#: templates/dcim/consoleport.html:76 templates/dcim/consoleserverport.html:77 -#: templates/dcim/frontport.html:17 templates/dcim/frontport.html:115 -#: templates/dcim/interface.html:187 templates/dcim/rearport.html:105 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:52 +#: netbox/templates/dcim/consoleport.html:76 +#: netbox/templates/dcim/consoleserverport.html:77 +#: netbox/templates/dcim/frontport.html:17 +#: netbox/templates/dcim/frontport.html:115 +#: netbox/templates/dcim/interface.html:187 +#: netbox/templates/dcim/rearport.html:105 msgid "Front Port" msgstr "" -#: dcim/forms/model_forms.py:1148 dcim/forms/model_forms.py:1586 -#: dcim/tables/devices.py:706 -#: templates/circuits/inc/circuit_termination_fields.html:53 -#: templates/dcim/consoleport.html:79 templates/dcim/consoleserverport.html:80 -#: templates/dcim/frontport.html:50 templates/dcim/frontport.html:118 -#: templates/dcim/interface.html:190 templates/dcim/rearport.html:17 -#: templates/dcim/rearport.html:108 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:53 +#: netbox/templates/dcim/consoleport.html:79 +#: netbox/templates/dcim/consoleserverport.html:80 +#: netbox/templates/dcim/frontport.html:50 +#: netbox/templates/dcim/frontport.html:118 +#: netbox/templates/dcim/interface.html:190 +#: netbox/templates/dcim/rearport.html:17 +#: netbox/templates/dcim/rearport.html:108 msgid "Rear Port" msgstr "" -#: dcim/forms/model_forms.py:1149 dcim/forms/model_forms.py:1587 -#: dcim/tables/connections.py:46 dcim/tables/devices.py:512 -#: templates/dcim/poweroutlet.html:44 templates/dcim/powerport.html:17 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 +#: netbox/templates/dcim/poweroutlet.html:44 +#: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "" -#: dcim/forms/model_forms.py:1150 dcim/forms/model_forms.py:1588 -#: templates/dcim/poweroutlet.html:17 templates/dcim/powerport.html:77 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 +#: netbox/templates/dcim/poweroutlet.html:17 +#: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "" -#: dcim/forms/model_forms.py:1152 dcim/forms/model_forms.py:1590 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "" -#: dcim/forms/model_forms.py:1195 dcim/forms/model_forms.py:1637 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "" -#: dcim/forms/model_forms.py:1332 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "" -#: dcim/forms/model_forms.py:1483 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "" -#: dcim/forms/model_forms.py:1484 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the " "parent device." msgstr "" -#: dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "" -#: dcim/forms/model_forms.py:1534 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "" -#: dcim/forms/model_forms.py:1542 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "" -#: dcim/forms/model_forms.py:1558 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "" -#: dcim/forms/model_forms.py:1578 templates/dcim/inventoryitem.html:17 +#: netbox/dcim/forms/model_forms.py:1578 +#: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "" -#: dcim/forms/model_forms.py:1651 templates/dcim/inventoryitemrole.html:15 +#: netbox/dcim/forms/model_forms.py:1651 +#: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "" -#: dcim/forms/model_forms.py:1669 templates/dcim/device.html:190 -#: templates/dcim/virtualdevicecontext.html:30 -#: templates/virtualization/virtualmachine.html:52 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 +#: netbox/templates/dcim/virtualdevicecontext.html:30 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "" -#: dcim/forms/model_forms.py:1678 templates/dcim/device.html:206 -#: templates/dcim/virtualdevicecontext.html:41 -#: templates/virtualization/virtualmachine.html:68 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 +#: netbox/templates/dcim/virtualdevicecontext.html:41 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "" -#: dcim/forms/object_create.py:48 dcim/forms/object_create.py:199 -#: dcim/forms/object_create.py:355 +#: netbox/dcim/forms/object_create.py:48 netbox/dcim/forms/object_create.py:199 +#: netbox/dcim/forms/object_create.py:355 msgid "" "Alphanumeric ranges are supported. (Must match the number of objects being " "created.)" msgstr "" -#: dcim/forms/object_create.py:68 +#: netbox/dcim/forms/object_create.py:68 #, python-brace-format msgid "" "The provided pattern specifies {value_count} values, but {pattern_count} are " "expected." msgstr "" -#: dcim/forms/object_create.py:110 dcim/forms/object_create.py:271 -#: dcim/tables/devices.py:252 +#: netbox/dcim/forms/object_create.py:110 +#: netbox/dcim/forms/object_create.py:271 netbox/dcim/tables/devices.py:252 msgid "Rear ports" msgstr "" -#: dcim/forms/object_create.py:111 dcim/forms/object_create.py:272 +#: netbox/dcim/forms/object_create.py:111 +#: netbox/dcim/forms/object_create.py:272 msgid "Select one rear port assignment for each front port being created." msgstr "" -#: dcim/forms/object_create.py:164 +#: netbox/dcim/forms/object_create.py:164 #, python-brace-format msgid "" "The number of front port templates to be created ({frontport_count}) must " "match the selected number of rear port positions ({rearport_count})." msgstr "" -#: dcim/forms/object_create.py:251 +#: netbox/dcim/forms/object_create.py:251 #, python-brace-format msgid "" "The string {module} will be replaced with the position of the " "assigned module, if any." msgstr "" -#: dcim/forms/object_create.py:320 +#: netbox/dcim/forms/object_create.py:320 #, python-brace-format msgid "" "The number of front ports to be created ({frontport_count}) must match the " "selected number of rear port positions ({rearport_count})." msgstr "" -#: dcim/forms/object_create.py:409 dcim/tables/devices.py:1029 -#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:53 -#: templates/dcim/virtualchassis_edit.html:47 templates/ipam/fhrpgroup.html:38 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 +#: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 +#: netbox/templates/dcim/virtualchassis_edit.html:47 +#: netbox/templates/ipam/fhrpgroup.html:38 msgid "Members" msgstr "" -#: dcim/forms/object_create.py:418 +#: netbox/dcim/forms/object_create.py:418 msgid "Initial position" msgstr "" -#: dcim/forms/object_create.py:421 +#: netbox/dcim/forms/object_create.py:421 msgid "" "Position of the first member device. Increases by one for each additional " "member." msgstr "" -#: dcim/forms/object_create.py:435 +#: netbox/dcim/forms/object_create.py:435 msgid "A position must be specified for the first VC member." msgstr "" -#: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55 -#: dcim/models/device_components.py:63 extras/models/customfields.py:111 +#: netbox/dcim/models/cables.py:62 +#: netbox/dcim/models/device_component_templates.py:55 +#: netbox/dcim/models/device_components.py:63 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "" -#: dcim/models/cables.py:71 +#: netbox/dcim/models/cables.py:71 msgid "length" msgstr "" -#: dcim/models/cables.py:78 +#: netbox/dcim/models/cables.py:78 msgid "length unit" msgstr "" -#: dcim/models/cables.py:95 +#: netbox/dcim/models/cables.py:95 msgid "cable" msgstr "" -#: dcim/models/cables.py:96 +#: netbox/dcim/models/cables.py:96 msgid "cables" msgstr "" -#: dcim/models/cables.py:165 +#: netbox/dcim/models/cables.py:165 msgid "Must specify a unit when setting a cable length" msgstr "" -#: dcim/models/cables.py:168 +#: netbox/dcim/models/cables.py:168 msgid "Must define A and B terminations when creating a new cable." msgstr "" -#: dcim/models/cables.py:175 +#: netbox/dcim/models/cables.py:175 msgid "Cannot connect different termination types to same end of cable." msgstr "" -#: dcim/models/cables.py:183 +#: netbox/dcim/models/cables.py:183 #, python-brace-format msgid "Incompatible termination types: {type_a} and {type_b}" msgstr "" -#: dcim/models/cables.py:193 +#: netbox/dcim/models/cables.py:193 msgid "A and B terminations cannot connect to the same object." msgstr "" -#: dcim/models/cables.py:260 ipam/models/asns.py:37 +#: netbox/dcim/models/cables.py:260 netbox/ipam/models/asns.py:37 msgid "end" msgstr "" -#: dcim/models/cables.py:313 +#: netbox/dcim/models/cables.py:313 msgid "cable termination" msgstr "" -#: dcim/models/cables.py:314 +#: netbox/dcim/models/cables.py:314 msgid "cable terminations" msgstr "" -#: dcim/models/cables.py:333 +#: netbox/dcim/models/cables.py:333 #, python-brace-format msgid "" "Duplicate termination found for {app_label}.{model} {termination_id}: cable " "{cable_pk}" msgstr "" -#: dcim/models/cables.py:343 +#: netbox/dcim/models/cables.py:343 #, python-brace-format msgid "Cables cannot be terminated to {type_display} interfaces" msgstr "" -#: dcim/models/cables.py:350 +#: netbox/dcim/models/cables.py:350 msgid "Circuit terminations attached to a provider network may not be cabled." msgstr "" -#: dcim/models/cables.py:448 extras/models/configs.py:50 +#: netbox/dcim/models/cables.py:448 netbox/extras/models/configs.py:50 msgid "is active" msgstr "" -#: dcim/models/cables.py:452 +#: netbox/dcim/models/cables.py:452 msgid "is complete" msgstr "" -#: dcim/models/cables.py:456 +#: netbox/dcim/models/cables.py:456 msgid "is split" msgstr "" -#: dcim/models/cables.py:464 +#: netbox/dcim/models/cables.py:464 msgid "cable path" msgstr "" -#: dcim/models/cables.py:465 +#: netbox/dcim/models/cables.py:465 msgid "cable paths" msgstr "" -#: dcim/models/device_component_templates.py:46 +#: netbox/dcim/models/device_component_templates.py:46 #, python-brace-format msgid "" "{module} is accepted as a substitution for the module bay position when " "attached to a module type." msgstr "" -#: dcim/models/device_component_templates.py:58 -#: dcim/models/device_components.py:66 +#: netbox/dcim/models/device_component_templates.py:58 +#: netbox/dcim/models/device_components.py:66 msgid "Physical label" msgstr "" -#: dcim/models/device_component_templates.py:103 +#: netbox/dcim/models/device_component_templates.py:103 msgid "Component templates cannot be moved to a different device type." msgstr "" -#: dcim/models/device_component_templates.py:154 +#: netbox/dcim/models/device_component_templates.py:154 msgid "" "A component template cannot be associated with both a device type and a " "module type." msgstr "" -#: dcim/models/device_component_templates.py:158 +#: netbox/dcim/models/device_component_templates.py:158 msgid "" "A component template must be associated with either a device type or a " "module type." msgstr "" -#: dcim/models/device_component_templates.py:213 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "" -#: dcim/models/device_component_templates.py:214 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "" -#: dcim/models/device_component_templates.py:247 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "" -#: dcim/models/device_component_templates.py:248 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "" -#: dcim/models/device_component_templates.py:279 -#: dcim/models/device_components.py:353 +#: netbox/dcim/models/device_component_templates.py:279 +#: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "" -#: dcim/models/device_component_templates.py:286 -#: dcim/models/device_components.py:360 +#: netbox/dcim/models/device_component_templates.py:286 +#: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "" -#: dcim/models/device_component_templates.py:296 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "" -#: dcim/models/device_component_templates.py:297 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "" -#: dcim/models/device_component_templates.py:316 -#: dcim/models/device_components.py:383 +#: netbox/dcim/models/device_component_templates.py:316 +#: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" -#: dcim/models/device_component_templates.py:348 -#: dcim/models/device_components.py:478 +#: netbox/dcim/models/device_component_templates.py:348 +#: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "" -#: dcim/models/device_component_templates.py:352 -#: dcim/models/device_components.py:482 +#: netbox/dcim/models/device_component_templates.py:352 +#: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "" -#: dcim/models/device_component_templates.py:358 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "" -#: dcim/models/device_component_templates.py:359 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "" -#: dcim/models/device_component_templates.py:368 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:372 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" -#: dcim/models/device_component_templates.py:424 -#: dcim/models/device_components.py:612 +#: netbox/dcim/models/device_component_templates.py:424 +#: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "" -#: dcim/models/device_component_templates.py:432 -#: dcim/models/device_components.py:551 +#: netbox/dcim/models/device_component_templates.py:432 +#: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "" -#: dcim/models/device_component_templates.py:450 -#: dcim/models/device_components.py:637 +#: netbox/dcim/models/device_component_templates.py:450 +#: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "" -#: dcim/models/device_component_templates.py:456 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "" -#: dcim/models/device_component_templates.py:457 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "" -#: dcim/models/device_component_templates.py:464 -#: dcim/models/device_components.py:805 -#: virtualization/models/virtualmachines.py:405 +#: netbox/dcim/models/device_component_templates.py:464 +#: netbox/dcim/models/device_components.py:805 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "" -#: dcim/models/device_component_templates.py:467 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:471 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "" -#: dcim/models/device_component_templates.py:527 -#: dcim/models/device_components.py:985 +#: netbox/dcim/models/device_component_templates.py:527 +#: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "" -#: dcim/models/device_component_templates.py:552 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "" -#: dcim/models/device_component_templates.py:553 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "" -#: dcim/models/device_component_templates.py:563 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "" -#: dcim/models/device_component_templates.py:569 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " "positions" msgstr "" -#: dcim/models/device_component_templates.py:622 -#: dcim/models/device_components.py:1054 +#: netbox/dcim/models/device_component_templates.py:622 +#: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "" -#: dcim/models/device_component_templates.py:633 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "" -#: dcim/models/device_component_templates.py:634 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "" -#: dcim/models/device_component_templates.py:663 -#: dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "" -#: dcim/models/device_component_templates.py:666 -#: dcim/models/device_components.py:1107 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" -#: dcim/models/device_component_templates.py:672 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "" -#: dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "" -#: dcim/models/device_component_templates.py:700 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "" -#: dcim/models/device_component_templates.py:701 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "" -#: dcim/models/device_component_templates.py:714 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " "allow device bays." msgstr "" -#: dcim/models/device_component_templates.py:769 -#: dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "" -#: dcim/models/device_component_templates.py:771 -#: dcim/models/device_components.py:1265 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "" -#: dcim/models/device_component_templates.py:788 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "" -#: dcim/models/device_component_templates.py:789 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "" -#: dcim/models/device_components.py:106 +#: netbox/dcim/models/device_components.py:106 msgid "Components cannot be moved to a different device." msgstr "" -#: dcim/models/device_components.py:145 +#: netbox/dcim/models/device_components.py:145 msgid "cable end" msgstr "" -#: dcim/models/device_components.py:151 +#: netbox/dcim/models/device_components.py:151 msgid "mark connected" msgstr "" -#: dcim/models/device_components.py:153 +#: netbox/dcim/models/device_components.py:153 msgid "Treat as if a cable is connected" msgstr "" -#: dcim/models/device_components.py:171 +#: netbox/dcim/models/device_components.py:171 msgid "Must specify cable end (A or B) when attaching a cable." msgstr "" -#: dcim/models/device_components.py:175 +#: netbox/dcim/models/device_components.py:175 msgid "Cable end must not be set without a cable." msgstr "" -#: dcim/models/device_components.py:179 +#: netbox/dcim/models/device_components.py:179 msgid "Cannot mark as connected with a cable attached." msgstr "" -#: dcim/models/device_components.py:203 +#: netbox/dcim/models/device_components.py:203 #, python-brace-format msgid "{class_name} models must declare a parent_object property" msgstr "" -#: dcim/models/device_components.py:288 dcim/models/device_components.py:317 -#: dcim/models/device_components.py:350 dcim/models/device_components.py:468 +#: netbox/dcim/models/device_components.py:288 +#: netbox/dcim/models/device_components.py:317 +#: netbox/dcim/models/device_components.py:350 +#: netbox/dcim/models/device_components.py:468 msgid "Physical port type" msgstr "" -#: dcim/models/device_components.py:291 dcim/models/device_components.py:320 +#: netbox/dcim/models/device_components.py:291 +#: netbox/dcim/models/device_components.py:320 msgid "speed" msgstr "" -#: dcim/models/device_components.py:295 dcim/models/device_components.py:324 +#: netbox/dcim/models/device_components.py:295 +#: netbox/dcim/models/device_components.py:324 msgid "Port speed in bits per second" msgstr "" -#: dcim/models/device_components.py:301 +#: netbox/dcim/models/device_components.py:301 msgid "console port" msgstr "" -#: dcim/models/device_components.py:302 +#: netbox/dcim/models/device_components.py:302 msgid "console ports" msgstr "" -#: dcim/models/device_components.py:330 +#: netbox/dcim/models/device_components.py:330 msgid "console server port" msgstr "" -#: dcim/models/device_components.py:331 +#: netbox/dcim/models/device_components.py:331 msgid "console server ports" msgstr "" -#: dcim/models/device_components.py:370 +#: netbox/dcim/models/device_components.py:370 msgid "power port" msgstr "" -#: dcim/models/device_components.py:371 +#: netbox/dcim/models/device_components.py:371 msgid "power ports" msgstr "" -#: dcim/models/device_components.py:488 +#: netbox/dcim/models/device_components.py:488 msgid "power outlet" msgstr "" -#: dcim/models/device_components.py:489 +#: netbox/dcim/models/device_components.py:489 msgid "power outlets" msgstr "" -#: dcim/models/device_components.py:500 +#: netbox/dcim/models/device_components.py:500 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device" msgstr "" -#: dcim/models/device_components.py:531 vpn/models/crypto.py:81 -#: vpn/models/crypto.py:226 +#: netbox/dcim/models/device_components.py:531 netbox/vpn/models/crypto.py:81 +#: netbox/vpn/models/crypto.py:226 msgid "mode" msgstr "" -#: dcim/models/device_components.py:535 +#: netbox/dcim/models/device_components.py:535 msgid "IEEE 802.1Q tagging strategy" msgstr "" -#: dcim/models/device_components.py:543 +#: netbox/dcim/models/device_components.py:543 msgid "parent interface" msgstr "" -#: dcim/models/device_components.py:603 +#: netbox/dcim/models/device_components.py:603 msgid "parent LAG" msgstr "" -#: dcim/models/device_components.py:613 +#: netbox/dcim/models/device_components.py:613 msgid "This interface is used only for out-of-band management" msgstr "" -#: dcim/models/device_components.py:618 +#: netbox/dcim/models/device_components.py:618 msgid "speed (Kbps)" msgstr "" -#: dcim/models/device_components.py:621 +#: netbox/dcim/models/device_components.py:621 msgid "duplex" msgstr "" -#: dcim/models/device_components.py:631 +#: netbox/dcim/models/device_components.py:631 msgid "64-bit World Wide Name" msgstr "" -#: dcim/models/device_components.py:643 +#: netbox/dcim/models/device_components.py:643 msgid "wireless channel" msgstr "" -#: dcim/models/device_components.py:650 +#: netbox/dcim/models/device_components.py:650 msgid "channel frequency (MHz)" msgstr "" -#: dcim/models/device_components.py:651 dcim/models/device_components.py:659 +#: netbox/dcim/models/device_components.py:651 +#: netbox/dcim/models/device_components.py:659 msgid "Populated by selected channel (if set)" msgstr "" -#: dcim/models/device_components.py:665 +#: netbox/dcim/models/device_components.py:665 msgid "transmit power (dBm)" msgstr "" -#: dcim/models/device_components.py:690 wireless/models.py:117 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "" -#: dcim/models/device_components.py:698 -#: virtualization/models/virtualmachines.py:335 +#: netbox/dcim/models/device_components.py:698 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "" -#: dcim/models/device_components.py:704 -#: virtualization/models/virtualmachines.py:341 +#: netbox/dcim/models/device_components.py:704 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "" -#: dcim/models/device_components.py:746 -#: virtualization/models/virtualmachines.py:377 +#: netbox/dcim/models/device_components.py:746 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "" -#: dcim/models/device_components.py:747 -#: virtualization/models/virtualmachines.py:378 +#: netbox/dcim/models/device_components.py:747 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "" -#: dcim/models/device_components.py:758 +#: netbox/dcim/models/device_components.py:758 #, python-brace-format msgid "{display_type} interfaces cannot have a cable attached." msgstr "" -#: dcim/models/device_components.py:766 +#: netbox/dcim/models/device_components.py:766 #, python-brace-format msgid "{display_type} interfaces cannot be marked as connected." msgstr "" -#: dcim/models/device_components.py:775 -#: virtualization/models/virtualmachines.py:390 +#: netbox/dcim/models/device_components.py:775 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "" -#: dcim/models/device_components.py:779 +#: netbox/dcim/models/device_components.py:779 msgid "Only virtual interfaces may be assigned to a parent interface." msgstr "" -#: dcim/models/device_components.py:786 +#: netbox/dcim/models/device_components.py:786 #, python-brace-format msgid "" "The selected parent interface ({interface}) belongs to a different device " "({device})" msgstr "" -#: dcim/models/device_components.py:792 +#: netbox/dcim/models/device_components.py:792 #, python-brace-format msgid "" "The selected parent interface ({interface}) belongs to {device}, which is " "not part of virtual chassis {virtual_chassis}." msgstr "" -#: dcim/models/device_components.py:812 +#: netbox/dcim/models/device_components.py:812 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different device " "({device})." msgstr "" -#: dcim/models/device_components.py:818 +#: netbox/dcim/models/device_components.py:818 #, python-brace-format msgid "" "The selected bridge interface ({interface}) belongs to {device}, which is " "not part of virtual chassis {virtual_chassis}." msgstr "" -#: dcim/models/device_components.py:829 +#: netbox/dcim/models/device_components.py:829 msgid "Virtual interfaces cannot have a parent LAG interface." msgstr "" -#: dcim/models/device_components.py:833 +#: netbox/dcim/models/device_components.py:833 msgid "A LAG interface cannot be its own parent." msgstr "" -#: dcim/models/device_components.py:840 +#: netbox/dcim/models/device_components.py:840 #, python-brace-format msgid "" "The selected LAG interface ({lag}) belongs to a different device ({device})." msgstr "" -#: dcim/models/device_components.py:846 +#: netbox/dcim/models/device_components.py:846 #, python-brace-format msgid "" "The selected LAG interface ({lag}) belongs to {device}, which is not part of " "virtual chassis {virtual_chassis}." msgstr "" -#: dcim/models/device_components.py:857 +#: netbox/dcim/models/device_components.py:857 msgid "Virtual interfaces cannot have a PoE mode." msgstr "" -#: dcim/models/device_components.py:861 +#: netbox/dcim/models/device_components.py:861 msgid "Virtual interfaces cannot have a PoE type." msgstr "" -#: dcim/models/device_components.py:867 +#: netbox/dcim/models/device_components.py:867 msgid "Must specify PoE mode when designating a PoE type." msgstr "" -#: dcim/models/device_components.py:874 +#: netbox/dcim/models/device_components.py:874 msgid "Wireless role may be set only on wireless interfaces." msgstr "" -#: dcim/models/device_components.py:876 +#: netbox/dcim/models/device_components.py:876 msgid "Channel may be set only on wireless interfaces." msgstr "" -#: dcim/models/device_components.py:882 +#: netbox/dcim/models/device_components.py:882 msgid "Channel frequency may be set only on wireless interfaces." msgstr "" -#: dcim/models/device_components.py:886 +#: netbox/dcim/models/device_components.py:886 msgid "Cannot specify custom frequency with channel selected." msgstr "" -#: dcim/models/device_components.py:892 +#: netbox/dcim/models/device_components.py:892 msgid "Channel width may be set only on wireless interfaces." msgstr "" -#: dcim/models/device_components.py:894 +#: netbox/dcim/models/device_components.py:894 msgid "Cannot specify custom width with channel selected." msgstr "" -#: dcim/models/device_components.py:902 +#: netbox/dcim/models/device_components.py:902 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " "interface's parent device, or it must be global." msgstr "" -#: dcim/models/device_components.py:991 +#: netbox/dcim/models/device_components.py:991 msgid "Mapped position on corresponding rear port" msgstr "" -#: dcim/models/device_components.py:1007 +#: netbox/dcim/models/device_components.py:1007 msgid "front port" msgstr "" -#: dcim/models/device_components.py:1008 +#: netbox/dcim/models/device_components.py:1008 msgid "front ports" msgstr "" -#: dcim/models/device_components.py:1022 +#: netbox/dcim/models/device_components.py:1022 #, python-brace-format msgid "Rear port ({rear_port}) must belong to the same device" msgstr "" -#: dcim/models/device_components.py:1030 +#: netbox/dcim/models/device_components.py:1030 #, python-brace-format msgid "" "Invalid rear port position ({rear_port_position}): Rear port {name} has only " "{positions} positions." msgstr "" -#: dcim/models/device_components.py:1060 +#: netbox/dcim/models/device_components.py:1060 msgid "Number of front ports which may be mapped" msgstr "" -#: dcim/models/device_components.py:1065 +#: netbox/dcim/models/device_components.py:1065 msgid "rear port" msgstr "" -#: dcim/models/device_components.py:1066 +#: netbox/dcim/models/device_components.py:1066 msgid "rear ports" msgstr "" -#: dcim/models/device_components.py:1080 +#: netbox/dcim/models/device_components.py:1080 #, python-brace-format msgid "" "The number of positions cannot be less than the number of mapped front ports " "({frontport_count})" msgstr "" -#: dcim/models/device_components.py:1121 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "" -#: dcim/models/device_components.py:1122 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "" -#: dcim/models/device_components.py:1139 dcim/models/devices.py:1217 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 msgid "A module bay cannot belong to a module installed within it." msgstr "" -#: dcim/models/device_components.py:1165 +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "" -#: dcim/models/device_components.py:1166 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "" -#: dcim/models/device_components.py:1176 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" -#: dcim/models/device_components.py:1182 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "" -#: dcim/models/device_components.py:1190 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." msgstr "" -#: dcim/models/device_components.py:1211 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "" -#: dcim/models/device_components.py:1212 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "" -#: dcim/models/device_components.py:1269 dcim/models/devices.py:607 -#: dcim/models/devices.py:1174 dcim/models/racks.py:313 -#: virtualization/models/virtualmachines.py:131 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "" -#: dcim/models/device_components.py:1277 dcim/models/devices.py:615 -#: dcim/models/devices.py:1181 dcim/models/racks.py:320 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "" -#: dcim/models/device_components.py:1278 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "" -#: dcim/models/device_components.py:1281 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "" -#: dcim/models/device_components.py:1283 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "" -#: dcim/models/device_components.py:1301 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "" -#: dcim/models/device_components.py:1302 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "" -#: dcim/models/device_components.py:1313 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "" -#: dcim/models/device_components.py:1321 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "" -#: dcim/models/device_components.py:1327 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "" -#: dcim/models/device_components.py:1335 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "" -#: dcim/models/devices.py:54 +#: netbox/dcim/models/devices.py:54 msgid "manufacturer" msgstr "" -#: dcim/models/devices.py:55 +#: netbox/dcim/models/devices.py:55 msgid "manufacturers" msgstr "" -#: dcim/models/devices.py:82 dcim/models/devices.py:382 -#: dcim/models/racks.py:133 +#: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "" -#: dcim/models/devices.py:95 +#: netbox/dcim/models/devices.py:95 msgid "default platform" msgstr "" -#: dcim/models/devices.py:98 dcim/models/devices.py:386 +#: netbox/dcim/models/devices.py:98 netbox/dcim/models/devices.py:386 msgid "part number" msgstr "" -#: dcim/models/devices.py:101 dcim/models/devices.py:389 +#: netbox/dcim/models/devices.py:101 netbox/dcim/models/devices.py:389 msgid "Discrete part number (optional)" msgstr "" -#: dcim/models/devices.py:107 dcim/models/racks.py:54 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "" -#: dcim/models/devices.py:111 +#: netbox/dcim/models/devices.py:111 msgid "exclude from utilization" msgstr "" -#: dcim/models/devices.py:112 +#: netbox/dcim/models/devices.py:112 msgid "Devices of this type are excluded when calculating rack utilization." msgstr "" -#: dcim/models/devices.py:116 +#: netbox/dcim/models/devices.py:116 msgid "is full depth" msgstr "" -#: dcim/models/devices.py:117 +#: netbox/dcim/models/devices.py:117 msgid "Device consumes both front and rear rack faces." msgstr "" -#: dcim/models/devices.py:123 +#: netbox/dcim/models/devices.py:123 msgid "parent/child status" msgstr "" -#: dcim/models/devices.py:124 +#: netbox/dcim/models/devices.py:124 msgid "" "Parent devices house child devices in device bays. Leave blank if this " "device type is neither a parent nor a child." msgstr "" -#: dcim/models/devices.py:128 dcim/models/devices.py:392 -#: dcim/models/devices.py:659 dcim/models/racks.py:324 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "" -#: dcim/models/devices.py:204 +#: netbox/dcim/models/devices.py:204 msgid "device type" msgstr "" -#: dcim/models/devices.py:205 +#: netbox/dcim/models/devices.py:205 msgid "device types" msgstr "" -#: dcim/models/devices.py:290 +#: netbox/dcim/models/devices.py:290 msgid "U height must be in increments of 0.5 rack units." msgstr "" -#: dcim/models/devices.py:307 +#: netbox/dcim/models/devices.py:307 #, python-brace-format msgid "" "Device {device} in rack {rack} does not have sufficient space to accommodate " "a height of {height}U" msgstr "" -#: dcim/models/devices.py:322 +#: netbox/dcim/models/devices.py:322 #, python-brace-format msgid "" "Unable to set 0U height: Found {racked_instance_count} " "instances already mounted within racks." msgstr "" -#: dcim/models/devices.py:331 +#: netbox/dcim/models/devices.py:331 msgid "" "Must delete all device bay templates associated with this device before " "declassifying it as a parent device." msgstr "" -#: dcim/models/devices.py:337 +#: netbox/dcim/models/devices.py:337 msgid "Child device types must be 0U." msgstr "" -#: dcim/models/devices.py:411 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "" -#: dcim/models/devices.py:412 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "" -#: dcim/models/devices.py:485 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "" -#: dcim/models/devices.py:497 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "" -#: dcim/models/devices.py:498 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "" -#: dcim/models/devices.py:515 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" -#: dcim/models/devices.py:527 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "" -#: dcim/models/devices.py:528 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "" -#: dcim/models/devices.py:576 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "" -#: dcim/models/devices.py:608 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "" -#: dcim/models/devices.py:616 dcim/models/devices.py:1182 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "" -#: dcim/models/devices.py:643 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "" -#: dcim/models/devices.py:650 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "" -#: dcim/models/devices.py:670 dcim/models/devices.py:1408 -#: virtualization/models/virtualmachines.py:100 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 +#: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "" -#: dcim/models/devices.py:678 dcim/models/devices.py:1416 -#: virtualization/models/virtualmachines.py:108 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 +#: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "" -#: dcim/models/devices.py:686 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "" -#: dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "" -#: dcim/models/devices.py:706 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "" -#: dcim/models/devices.py:709 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "" -#: dcim/models/devices.py:713 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "" -#: dcim/models/devices.py:716 dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "" -#: dcim/models/devices.py:721 dcim/models/devices.py:729 -#: dcim/models/sites.py:212 dcim/models/sites.py:220 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 +#: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "" -#: dcim/models/devices.py:724 dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "" -#: dcim/models/devices.py:797 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "" -#: dcim/models/devices.py:808 ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "" -#: dcim/models/devices.py:809 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "" -#: dcim/models/devices.py:835 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "" -#: dcim/models/devices.py:840 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "" -#: dcim/models/devices.py:846 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "" -#: dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "" -#: dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "" -#: dcim/models/devices.py:863 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "" -#: dcim/models/devices.py:867 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" -#: dcim/models/devices.py:875 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "" -#: dcim/models/devices.py:886 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." msgstr "" -#: dcim/models/devices.py:893 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." msgstr "" -#: dcim/models/devices.py:907 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " "accommodate this device type: {device_type} ({u_height}U)" msgstr "" -#: dcim/models/devices.py:922 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "" -#: dcim/models/devices.py:931 dcim/models/devices.py:946 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" -#: dcim/models/devices.py:937 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "" -#: dcim/models/devices.py:964 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " "but this device's type belongs to {devicetype_manufacturer}." msgstr "" -#: dcim/models/devices.py:975 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "" -#: dcim/models/devices.py:983 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" -#: dcim/models/devices.py:1189 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "" -#: dcim/models/devices.py:1190 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "" -#: dcim/models/devices.py:1206 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "" -#: dcim/models/devices.py:1327 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "" -#: dcim/models/devices.py:1340 dcim/models/devices.py:1341 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "" -#: dcim/models/devices.py:1356 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" -#: dcim/models/devices.py:1372 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " "form a cross-chassis LAG interfaces." msgstr "" -#: dcim/models/devices.py:1397 vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "" -#: dcim/models/devices.py:1398 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "" -#: dcim/models/devices.py:1426 extras/models/customfields.py:225 -#: extras/models/models.py:107 extras/models/models.py:694 -#: netbox/models/__init__.py:115 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "" -#: dcim/models/devices.py:1442 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "" -#: dcim/models/devices.py:1443 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "" -#: dcim/models/devices.py:1475 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "" -#: dcim/models/devices.py:1481 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" -#: dcim/models/mixins.py:15 extras/models/configs.py:41 -#: extras/models/models.py:313 extras/models/models.py:522 -#: extras/models/search.py:48 ipam/models/ip.py:194 +#: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 +#: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "" -#: dcim/models/mixins.py:22 +#: netbox/dcim/models/mixins.py:22 msgid "weight unit" msgstr "" -#: dcim/models/mixins.py:51 +#: netbox/dcim/models/mixins.py:51 msgid "Must specify a unit when setting a weight" msgstr "" -#: dcim/models/power.py:55 +#: netbox/dcim/models/power.py:55 msgid "power panel" msgstr "" -#: dcim/models/power.py:56 +#: netbox/dcim/models/power.py:56 msgid "power panels" msgstr "" -#: dcim/models/power.py:70 +#: netbox/dcim/models/power.py:70 #, python-brace-format msgid "" "Location {location} ({location_site}) is in a different site than {site}" msgstr "" -#: dcim/models/power.py:108 +#: netbox/dcim/models/power.py:108 msgid "supply" msgstr "" -#: dcim/models/power.py:114 +#: netbox/dcim/models/power.py:114 msgid "phase" msgstr "" -#: dcim/models/power.py:120 +#: netbox/dcim/models/power.py:120 msgid "voltage" msgstr "" -#: dcim/models/power.py:125 +#: netbox/dcim/models/power.py:125 msgid "amperage" msgstr "" -#: dcim/models/power.py:130 +#: netbox/dcim/models/power.py:130 msgid "max utilization" msgstr "" -#: dcim/models/power.py:133 +#: netbox/dcim/models/power.py:133 msgid "Maximum permissible draw (percentage)" msgstr "" -#: dcim/models/power.py:136 +#: netbox/dcim/models/power.py:136 msgid "available power" msgstr "" -#: dcim/models/power.py:164 +#: netbox/dcim/models/power.py:164 msgid "power feed" msgstr "" -#: dcim/models/power.py:165 +#: netbox/dcim/models/power.py:165 msgid "power feeds" msgstr "" -#: dcim/models/power.py:179 +#: netbox/dcim/models/power.py:179 #, python-brace-format msgid "" "Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) " "are in different sites." msgstr "" -#: dcim/models/power.py:190 +#: netbox/dcim/models/power.py:190 msgid "Voltage cannot be negative for AC supply" msgstr "" -#: dcim/models/racks.py:47 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "" -#: dcim/models/racks.py:48 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "" -#: dcim/models/racks.py:56 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "" -#: dcim/models/racks.py:60 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "" -#: dcim/models/racks.py:62 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "" -#: dcim/models/racks.py:66 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "" -#: dcim/models/racks.py:67 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "" -#: dcim/models/racks.py:72 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "" -#: dcim/models/racks.py:75 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "" -#: dcim/models/racks.py:78 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "" -#: dcim/models/racks.py:81 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "" -#: dcim/models/racks.py:84 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "" -#: dcim/models/racks.py:90 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "" -#: dcim/models/racks.py:94 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this " "is the distance between the front and rear rails." msgstr "" -#: dcim/models/racks.py:102 +#: netbox/dcim/models/racks.py:102 msgid "max weight" msgstr "" -#: dcim/models/racks.py:105 +#: netbox/dcim/models/racks.py:105 msgid "Maximum load capacity for the rack" msgstr "" -#: dcim/models/racks.py:125 dcim/models/racks.py:252 +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 msgid "form factor" msgstr "" -#: dcim/models/racks.py:162 +#: netbox/dcim/models/racks.py:162 msgid "rack type" msgstr "" -#: dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:163 msgid "rack types" msgstr "" -#: dcim/models/racks.py:180 dcim/models/racks.py:379 +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" -#: dcim/models/racks.py:184 dcim/models/racks.py:383 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "" -#: dcim/models/racks.py:230 +#: netbox/dcim/models/racks.py:230 msgid "rack role" msgstr "" -#: dcim/models/racks.py:231 +#: netbox/dcim/models/racks.py:231 msgid "rack roles" msgstr "" -#: dcim/models/racks.py:274 +#: netbox/dcim/models/racks.py:274 msgid "facility ID" msgstr "" -#: dcim/models/racks.py:275 +#: netbox/dcim/models/racks.py:275 msgid "Locally-assigned identifier" msgstr "" -#: dcim/models/racks.py:308 ipam/forms/bulk_import.py:201 -#: ipam/forms/bulk_import.py:266 ipam/forms/bulk_import.py:301 -#: ipam/forms/bulk_import.py:459 virtualization/forms/bulk_import.py:112 +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 msgid "Functional role" msgstr "" -#: dcim/models/racks.py:321 +#: netbox/dcim/models/racks.py:321 msgid "A unique tag used to identify this rack" msgstr "" -#: dcim/models/racks.py:359 +#: netbox/dcim/models/racks.py:359 msgid "rack" msgstr "" -#: dcim/models/racks.py:360 +#: netbox/dcim/models/racks.py:360 msgid "racks" msgstr "" -#: dcim/models/racks.py:375 +#: netbox/dcim/models/racks.py:375 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "" -#: dcim/models/racks.py:393 +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " "devices." msgstr "" -#: dcim/models/racks.py:400 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " "installed devices." msgstr "" -#: dcim/models/racks.py:408 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "" -#: dcim/models/racks.py:670 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "" -#: dcim/models/racks.py:696 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "" -#: dcim/models/racks.py:697 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "" -#: dcim/models/racks.py:714 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "" -#: dcim/models/racks.py:727 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "" -#: dcim/models/sites.py:49 +#: netbox/dcim/models/sites.py:49 msgid "A top-level region with this name already exists." msgstr "" -#: dcim/models/sites.py:59 +#: netbox/dcim/models/sites.py:59 msgid "A top-level region with this slug already exists." msgstr "" -#: dcim/models/sites.py:62 +#: netbox/dcim/models/sites.py:62 msgid "region" msgstr "" -#: dcim/models/sites.py:63 +#: netbox/dcim/models/sites.py:63 msgid "regions" msgstr "" -#: dcim/models/sites.py:102 +#: netbox/dcim/models/sites.py:102 msgid "A top-level site group with this name already exists." msgstr "" -#: dcim/models/sites.py:112 +#: netbox/dcim/models/sites.py:112 msgid "A top-level site group with this slug already exists." msgstr "" -#: dcim/models/sites.py:115 +#: netbox/dcim/models/sites.py:115 msgid "site group" msgstr "" -#: dcim/models/sites.py:116 +#: netbox/dcim/models/sites.py:116 msgid "site groups" msgstr "" -#: dcim/models/sites.py:141 +#: netbox/dcim/models/sites.py:141 msgid "Full name of the site" msgstr "" -#: dcim/models/sites.py:181 dcim/models/sites.py:279 +#: netbox/dcim/models/sites.py:181 netbox/dcim/models/sites.py:279 msgid "facility" msgstr "" -#: dcim/models/sites.py:184 dcim/models/sites.py:282 +#: netbox/dcim/models/sites.py:184 netbox/dcim/models/sites.py:282 msgid "Local facility ID or description" msgstr "" -#: dcim/models/sites.py:195 +#: netbox/dcim/models/sites.py:195 msgid "physical address" msgstr "" -#: dcim/models/sites.py:198 +#: netbox/dcim/models/sites.py:198 msgid "Physical location of the building" msgstr "" -#: dcim/models/sites.py:201 +#: netbox/dcim/models/sites.py:201 msgid "shipping address" msgstr "" -#: dcim/models/sites.py:204 +#: netbox/dcim/models/sites.py:204 msgid "If different from the physical address" msgstr "" -#: dcim/models/sites.py:238 +#: netbox/dcim/models/sites.py:238 msgid "site" msgstr "" -#: dcim/models/sites.py:239 +#: netbox/dcim/models/sites.py:239 msgid "sites" msgstr "" -#: dcim/models/sites.py:309 +#: netbox/dcim/models/sites.py:309 msgid "A location with this name already exists within the specified site." msgstr "" -#: dcim/models/sites.py:319 +#: netbox/dcim/models/sites.py:319 msgid "A location with this slug already exists within the specified site." msgstr "" -#: dcim/models/sites.py:322 +#: netbox/dcim/models/sites.py:322 msgid "location" msgstr "" -#: dcim/models/sites.py:323 +#: netbox/dcim/models/sites.py:323 msgid "locations" msgstr "" -#: dcim/models/sites.py:337 +#: netbox/dcim/models/sites.py:337 #, python-brace-format msgid "Parent location ({parent}) must belong to the same site ({site})." msgstr "" -#: dcim/tables/cables.py:55 +#: netbox/dcim/tables/cables.py:55 msgid "Termination A" msgstr "" -#: dcim/tables/cables.py:60 +#: netbox/dcim/tables/cables.py:60 msgid "Termination B" msgstr "" -#: dcim/tables/cables.py:66 wireless/tables/wirelesslink.py:23 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "" -#: dcim/tables/cables.py:72 wireless/tables/wirelesslink.py:32 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "" -#: dcim/tables/cables.py:78 +#: netbox/dcim/tables/cables.py:78 msgid "Location A" msgstr "" -#: dcim/tables/cables.py:84 +#: netbox/dcim/tables/cables.py:84 msgid "Location B" msgstr "" -#: dcim/tables/cables.py:90 +#: netbox/dcim/tables/cables.py:90 msgid "Rack A" msgstr "" -#: dcim/tables/cables.py:96 +#: netbox/dcim/tables/cables.py:96 msgid "Rack B" msgstr "" -#: dcim/tables/cables.py:102 +#: netbox/dcim/tables/cables.py:102 msgid "Site A" msgstr "" -#: dcim/tables/cables.py:108 +#: netbox/dcim/tables/cables.py:108 msgid "Site B" msgstr "" -#: dcim/tables/connections.py:31 dcim/tables/connections.py:50 -#: dcim/tables/connections.py:71 -#: templates/dcim/inc/connection_endpoints.html:16 +#: netbox/dcim/tables/connections.py:31 netbox/dcim/tables/connections.py:50 +#: netbox/dcim/tables/connections.py:71 +#: netbox/templates/dcim/inc/connection_endpoints.html:16 msgid "Reachable" msgstr "" -#: dcim/tables/devices.py:58 dcim/tables/devices.py:106 -#: dcim/tables/racks.py:150 dcim/tables/sites.py:105 dcim/tables/sites.py:148 -#: extras/tables/tables.py:545 netbox/navigation/menu.py:69 -#: netbox/navigation/menu.py:73 netbox/navigation/menu.py:75 -#: virtualization/forms/model_forms.py:122 virtualization/tables/clusters.py:83 -#: virtualization/views.py:206 +#: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 +#: netbox/virtualization/forms/model_forms.py:122 +#: netbox/virtualization/tables/clusters.py:83 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "" -#: dcim/tables/devices.py:63 dcim/tables/devices.py:111 -#: virtualization/tables/clusters.py:88 +#: netbox/dcim/tables/devices.py:63 netbox/dcim/tables/devices.py:111 +#: netbox/virtualization/tables/clusters.py:88 msgid "VMs" msgstr "" -#: dcim/tables/devices.py:100 dcim/tables/devices.py:216 -#: extras/forms/model_forms.py:630 templates/dcim/device.html:112 -#: templates/dcim/device/render_config.html:11 -#: templates/dcim/device/render_config.html:14 -#: templates/dcim/devicerole.html:44 templates/dcim/platform.html:41 -#: templates/extras/configtemplate.html:10 -#: templates/virtualization/virtualmachine.html:48 -#: templates/virtualization/virtualmachine/render_config.html:11 -#: templates/virtualization/virtualmachine/render_config.html:14 -#: virtualization/tables/virtualmachines.py:107 +#: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 +#: netbox/extras/forms/model_forms.py:630 netbox/templates/dcim/device.html:112 +#: netbox/templates/dcim/device/render_config.html:11 +#: netbox/templates/dcim/device/render_config.html:14 +#: netbox/templates/dcim/devicerole.html:44 +#: netbox/templates/dcim/platform.html:41 +#: netbox/templates/extras/configtemplate.html:10 +#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine/render_config.html:11 +#: netbox/templates/virtualization/virtualmachine/render_config.html:14 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "" -#: dcim/tables/devices.py:150 templates/dcim/sitegroup.html:26 +#: netbox/dcim/tables/devices.py:150 netbox/templates/dcim/sitegroup.html:26 msgid "Site Group" msgstr "" -#: dcim/tables/devices.py:187 dcim/tables/devices.py:1064 -#: ipam/forms/bulk_import.py:503 ipam/forms/model_forms.py:306 -#: ipam/forms/model_forms.py:315 ipam/tables/ip.py:356 ipam/tables/ip.py:423 -#: ipam/tables/ip.py:446 templates/ipam/ipaddress.html:11 -#: virtualization/tables/virtualmachines.py:95 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 +#: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 +#: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 +#: netbox/templates/ipam/ipaddress.html:11 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "" -#: dcim/tables/devices.py:191 dcim/tables/devices.py:1068 -#: virtualization/tables/virtualmachines.py:86 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "" -#: dcim/tables/devices.py:195 dcim/tables/devices.py:1072 -#: virtualization/tables/virtualmachines.py:90 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "" -#: dcim/tables/devices.py:210 +#: netbox/dcim/tables/devices.py:210 msgid "VC Position" msgstr "" -#: dcim/tables/devices.py:213 +#: netbox/dcim/tables/devices.py:213 msgid "VC Priority" msgstr "" -#: dcim/tables/devices.py:220 templates/dcim/device_edit.html:38 -#: templates/dcim/devicebay_populate.html:16 +#: netbox/dcim/tables/devices.py:220 netbox/templates/dcim/device_edit.html:38 +#: netbox/templates/dcim/devicebay_populate.html:16 msgid "Parent Device" msgstr "" -#: dcim/tables/devices.py:225 +#: netbox/dcim/tables/devices.py:225 msgid "Position (Device Bay)" msgstr "" -#: dcim/tables/devices.py:234 +#: netbox/dcim/tables/devices.py:234 msgid "Console ports" msgstr "" -#: dcim/tables/devices.py:237 +#: netbox/dcim/tables/devices.py:237 msgid "Console server ports" msgstr "" -#: dcim/tables/devices.py:240 +#: netbox/dcim/tables/devices.py:240 msgid "Power ports" msgstr "" -#: dcim/tables/devices.py:243 +#: netbox/dcim/tables/devices.py:243 msgid "Power outlets" msgstr "" -#: dcim/tables/devices.py:246 dcim/tables/devices.py:1077 -#: dcim/tables/devicetypes.py:129 dcim/views.py:1042 dcim/views.py:1281 -#: dcim/views.py:1977 netbox/navigation/menu.py:94 -#: netbox/navigation/menu.py:250 templates/dcim/device/base.html:37 -#: templates/dcim/device_list.html:43 templates/dcim/devicetype/base.html:34 -#: templates/dcim/module.html:34 templates/dcim/moduletype/base.html:34 -#: templates/dcim/virtualdevicecontext.html:61 -#: templates/dcim/virtualdevicecontext.html:81 -#: templates/virtualization/virtualmachine/base.html:27 -#: templates/virtualization/virtualmachine_list.html:14 -#: virtualization/tables/virtualmachines.py:101 virtualization/views.py:366 -#: wireless/tables/wirelesslan.py:55 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 +#: netbox/templates/dcim/device/base.html:37 +#: netbox/templates/dcim/device_list.html:43 +#: netbox/templates/dcim/devicetype/base.html:34 +#: netbox/templates/dcim/module.html:34 +#: netbox/templates/dcim/moduletype/base.html:34 +#: netbox/templates/dcim/virtualdevicecontext.html:61 +#: netbox/templates/dcim/virtualdevicecontext.html:81 +#: netbox/templates/virtualization/virtualmachine/base.html:27 +#: netbox/templates/virtualization/virtualmachine_list.html:14 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "" -#: dcim/tables/devices.py:249 +#: netbox/dcim/tables/devices.py:249 msgid "Front ports" msgstr "" -#: dcim/tables/devices.py:255 +#: netbox/dcim/tables/devices.py:255 msgid "Device bays" msgstr "" -#: dcim/tables/devices.py:258 +#: netbox/dcim/tables/devices.py:258 msgid "Module bays" msgstr "" -#: dcim/tables/devices.py:261 +#: netbox/dcim/tables/devices.py:261 msgid "Inventory items" msgstr "" -#: dcim/tables/devices.py:305 dcim/tables/modules.py:56 -#: templates/dcim/modulebay.html:17 +#: netbox/dcim/tables/devices.py:305 netbox/dcim/tables/modules.py:56 +#: netbox/templates/dcim/modulebay.html:17 msgid "Module Bay" msgstr "" -#: dcim/tables/devices.py:318 dcim/tables/devicetypes.py:48 -#: dcim/tables/devicetypes.py:144 dcim/views.py:1117 dcim/views.py:2075 -#: netbox/navigation/menu.py:103 templates/dcim/device/base.html:52 -#: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 -#: templates/dcim/inc/panels/inventory_items.html:6 -#: templates/dcim/inventoryitemrole.html:32 +#: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 +#: netbox/templates/dcim/device/base.html:52 +#: netbox/templates/dcim/device_list.html:71 +#: netbox/templates/dcim/devicetype/base.html:49 +#: netbox/templates/dcim/inc/panels/inventory_items.html:6 +#: netbox/templates/dcim/inventoryitemrole.html:32 msgid "Inventory Items" msgstr "" -#: dcim/tables/devices.py:333 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "" -#: dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "" -#: dcim/tables/devices.py:342 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "" -#: dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "" -#: dcim/tables/devices.py:464 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "" -#: dcim/tables/devices.py:558 ipam/forms/model_forms.py:701 -#: ipam/tables/fhrp.py:28 ipam/views.py:596 ipam/views.py:696 -#: netbox/navigation/menu.py:158 netbox/navigation/menu.py:160 -#: templates/dcim/interface.html:339 templates/ipam/ipaddress_bulk_add.html:15 -#: templates/ipam/service.html:40 templates/virtualization/vminterface.html:85 -#: vpn/tables/tunnels.py:98 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 +#: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 +#: netbox/templates/dcim/interface.html:339 +#: netbox/templates/ipam/ipaddress_bulk_add.html:15 +#: netbox/templates/ipam/service.html:40 +#: netbox/templates/virtualization/vminterface.html:85 +#: netbox/vpn/tables/tunnels.py:98 msgid "IP Addresses" msgstr "" -#: dcim/tables/devices.py:564 netbox/navigation/menu.py:202 -#: templates/ipam/inc/panels/fhrp_groups.html:6 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "" -#: dcim/tables/devices.py:576 templates/dcim/interface.html:89 -#: templates/virtualization/vminterface.html:67 templates/vpn/tunnel.html:18 -#: templates/vpn/tunneltermination.html:13 vpn/forms/bulk_edit.py:76 -#: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:42 -#: vpn/forms/filtersets.py:82 vpn/forms/model_forms.py:60 -#: vpn/forms/model_forms.py:145 vpn/tables/tunnels.py:78 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 +#: netbox/templates/virtualization/vminterface.html:67 +#: netbox/templates/vpn/tunnel.html:18 +#: netbox/templates/vpn/tunneltermination.html:13 +#: netbox/vpn/forms/bulk_edit.py:76 netbox/vpn/forms/bulk_import.py:76 +#: netbox/vpn/forms/filtersets.py:42 netbox/vpn/forms/filtersets.py:82 +#: netbox/vpn/forms/model_forms.py:60 netbox/vpn/forms/model_forms.py:145 +#: netbox/vpn/tables/tunnels.py:78 msgid "Tunnel" msgstr "" -#: dcim/tables/devices.py:601 dcim/tables/devicetypes.py:228 -#: templates/dcim/interface.html:65 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 +#: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "" -#: dcim/tables/devices.py:620 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "" -#: dcim/tables/devices.py:869 templates/dcim/modulebay.html:53 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "" -#: dcim/tables/devices.py:872 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "" -#: dcim/tables/devices.py:876 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "" -#: dcim/tables/devices.py:885 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "" -#: dcim/tables/devices.py:940 dcim/tables/devicetypes.py:313 -#: templates/dcim/inventoryitem.html:40 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 +#: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "" -#: dcim/tables/devices.py:996 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "" -#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:84 -#: netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "" -#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "" -#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:371 -#: extras/forms/model_forms.py:537 extras/tables/tables.py:540 -#: netbox/navigation/menu.py:78 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "" -#: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:29 +#: netbox/dcim/tables/devicetypes.py:85 +#: netbox/templates/dcim/devicetype.html:29 msgid "Default Platform" msgstr "" -#: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:45 +#: netbox/dcim/tables/devicetypes.py:89 +#: netbox/templates/dcim/devicetype.html:45 msgid "Full Depth" msgstr "" -#: dcim/tables/devicetypes.py:99 +#: netbox/dcim/tables/devicetypes.py:99 msgid "U Height" msgstr "" -#: dcim/tables/devicetypes.py:114 dcim/tables/modules.py:26 -#: dcim/tables/racks.py:89 +#: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "" -#: dcim/tables/devicetypes.py:117 dcim/views.py:982 dcim/views.py:1221 -#: dcim/views.py:1913 netbox/navigation/menu.py:97 -#: templates/dcim/device/base.html:25 templates/dcim/device_list.html:15 -#: templates/dcim/devicetype/base.html:22 templates/dcim/module.html:22 -#: templates/dcim/moduletype/base.html:22 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 +#: netbox/templates/dcim/device/base.html:25 +#: netbox/templates/dcim/device_list.html:15 +#: netbox/templates/dcim/devicetype/base.html:22 +#: netbox/templates/dcim/module.html:22 +#: netbox/templates/dcim/moduletype/base.html:22 msgid "Console Ports" msgstr "" -#: dcim/tables/devicetypes.py:120 dcim/views.py:997 dcim/views.py:1236 -#: dcim/views.py:1929 netbox/navigation/menu.py:98 -#: templates/dcim/device/base.html:28 templates/dcim/device_list.html:22 -#: templates/dcim/devicetype/base.html:25 templates/dcim/module.html:25 -#: templates/dcim/moduletype/base.html:25 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 +#: netbox/templates/dcim/device/base.html:28 +#: netbox/templates/dcim/device_list.html:22 +#: netbox/templates/dcim/devicetype/base.html:25 +#: netbox/templates/dcim/module.html:25 +#: netbox/templates/dcim/moduletype/base.html:25 msgid "Console Server Ports" msgstr "" -#: dcim/tables/devicetypes.py:123 dcim/views.py:1012 dcim/views.py:1251 -#: dcim/views.py:1945 netbox/navigation/menu.py:99 -#: templates/dcim/device/base.html:31 templates/dcim/device_list.html:29 -#: templates/dcim/devicetype/base.html:28 templates/dcim/module.html:28 -#: templates/dcim/moduletype/base.html:28 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 +#: netbox/templates/dcim/device/base.html:31 +#: netbox/templates/dcim/device_list.html:29 +#: netbox/templates/dcim/devicetype/base.html:28 +#: netbox/templates/dcim/module.html:28 +#: netbox/templates/dcim/moduletype/base.html:28 msgid "Power Ports" msgstr "" -#: dcim/tables/devicetypes.py:126 dcim/views.py:1027 dcim/views.py:1266 -#: dcim/views.py:1961 netbox/navigation/menu.py:100 -#: templates/dcim/device/base.html:34 templates/dcim/device_list.html:36 -#: templates/dcim/devicetype/base.html:31 templates/dcim/module.html:31 -#: templates/dcim/moduletype/base.html:31 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 +#: netbox/templates/dcim/device/base.html:34 +#: netbox/templates/dcim/device_list.html:36 +#: netbox/templates/dcim/devicetype/base.html:31 +#: netbox/templates/dcim/module.html:31 +#: netbox/templates/dcim/moduletype/base.html:31 msgid "Power Outlets" msgstr "" -#: dcim/tables/devicetypes.py:132 dcim/views.py:1057 dcim/views.py:1296 -#: dcim/views.py:1999 netbox/navigation/menu.py:95 -#: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37 -#: templates/dcim/module.html:37 templates/dcim/moduletype/base.html:37 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 +#: netbox/templates/dcim/device/base.html:40 +#: netbox/templates/dcim/devicetype/base.html:37 +#: netbox/templates/dcim/module.html:37 +#: netbox/templates/dcim/moduletype/base.html:37 msgid "Front Ports" msgstr "" -#: dcim/tables/devicetypes.py:135 dcim/views.py:1072 dcim/views.py:1311 -#: dcim/views.py:2015 netbox/navigation/menu.py:96 -#: templates/dcim/device/base.html:43 templates/dcim/device_list.html:50 -#: templates/dcim/devicetype/base.html:40 templates/dcim/module.html:40 -#: templates/dcim/moduletype/base.html:40 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 +#: netbox/templates/dcim/device/base.html:43 +#: netbox/templates/dcim/device_list.html:50 +#: netbox/templates/dcim/devicetype/base.html:40 +#: netbox/templates/dcim/module.html:40 +#: netbox/templates/dcim/moduletype/base.html:40 msgid "Rear Ports" msgstr "" -#: dcim/tables/devicetypes.py:138 dcim/views.py:1102 dcim/views.py:2055 -#: netbox/navigation/menu.py:102 templates/dcim/device/base.html:49 -#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 +#: netbox/templates/dcim/device/base.html:49 +#: netbox/templates/dcim/device_list.html:57 +#: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "" -#: dcim/tables/devicetypes.py:141 dcim/views.py:1087 dcim/views.py:1326 -#: dcim/views.py:2035 netbox/navigation/menu.py:101 -#: templates/dcim/device/base.html:46 templates/dcim/device_list.html:64 -#: templates/dcim/devicetype/base.html:43 templates/dcim/module.html:43 -#: templates/dcim/moduletype/base.html:43 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 +#: netbox/templates/dcim/device/base.html:46 +#: netbox/templates/dcim/device_list.html:64 +#: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "" -#: dcim/tables/power.py:36 netbox/navigation/menu.py:297 -#: templates/dcim/powerpanel.html:51 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 +#: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "" -#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:99 +#: netbox/dcim/tables/power.py:80 netbox/templates/dcim/powerfeed.html:99 msgid "Max Utilization" msgstr "" -#: dcim/tables/power.py:84 +#: netbox/dcim/tables/power.py:84 msgid "Available Power (VA)" msgstr "" -#: dcim/tables/racks.py:30 dcim/tables/sites.py:143 -#: netbox/navigation/menu.py:43 netbox/navigation/menu.py:47 -#: netbox/navigation/menu.py:49 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "" -#: dcim/tables/racks.py:63 dcim/tables/racks.py:142 -#: templates/dcim/device.html:318 -#: templates/dcim/inc/panels/racktype_dimensions.html:14 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "" -#: dcim/tables/racks.py:67 dcim/tables/racks.py:165 -#: templates/dcim/inc/panels/racktype_dimensions.html:18 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "" -#: dcim/tables/racks.py:71 dcim/tables/racks.py:169 -#: templates/dcim/inc/panels/racktype_dimensions.html:28 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "" -#: dcim/tables/racks.py:79 dcim/tables/racks.py:177 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "" -#: dcim/tables/racks.py:154 +#: netbox/dcim/tables/racks.py:154 msgid "Space" msgstr "" -#: dcim/tables/sites.py:30 dcim/tables/sites.py:57 -#: extras/forms/filtersets.py:351 extras/forms/model_forms.py:517 -#: ipam/forms/bulk_edit.py:130 ipam/forms/model_forms.py:153 -#: ipam/tables/asn.py:66 netbox/navigation/menu.py:15 -#: netbox/navigation/menu.py:17 +#: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 +#: netbox/extras/forms/filtersets.py:351 netbox/extras/forms/model_forms.py:517 +#: netbox/ipam/forms/bulk_edit.py:130 netbox/ipam/forms/model_forms.py:153 +#: netbox/ipam/tables/asn.py:66 netbox/netbox/navigation/menu.py:15 +#: netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "" -#: dcim/tests/test_api.py:47 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "" -#: dcim/views.py:140 +#: netbox/dcim/views.py:140 #, python-brace-format msgid "Disconnected {count} {type}" msgstr "" -#: dcim/views.py:740 netbox/navigation/menu.py:51 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "" -#: dcim/views.py:759 templates/dcim/location.html:90 -#: templates/dcim/site.html:140 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 +#: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "" -#: dcim/views.py:2088 extras/forms/model_forms.py:577 -#: templates/extras/configcontext.html:10 -#: virtualization/forms/model_forms.py:225 virtualization/views.py:407 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 +#: netbox/templates/extras/configcontext.html:10 +#: netbox/virtualization/forms/model_forms.py:225 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "" -#: dcim/views.py:2098 virtualization/views.py:417 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "" -#: dcim/views.py:2131 virtualization/views.py:450 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "" -#: dcim/views.py:2149 extras/tables/tables.py:550 netbox/navigation/menu.py:247 -#: netbox/navigation/menu.py:249 virtualization/views.py:180 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "" -#: dcim/views.py:2897 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "" -#: dcim/views.py:2938 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "" -#: dcim/views.py:3044 ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "" -#: dcim/views.py:3510 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "" -#: dcim/views.py:3557 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" -#: dcim/views.py:3570 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "" -#: extras/api/customfields.py:89 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "" -#: extras/api/serializers_/customfields.py:73 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "" -#: extras/api/serializers_/scripts.py:70 extras/api/serializers_/scripts.py:75 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "" -#: extras/choices.py:30 extras/forms/misc.py:14 +#: netbox/extras/choices.py:30 netbox/extras/forms/misc.py:14 msgid "Text" msgstr "" -#: extras/choices.py:31 +#: netbox/extras/choices.py:31 msgid "Text (long)" msgstr "" -#: extras/choices.py:32 +#: netbox/extras/choices.py:32 msgid "Integer" msgstr "" -#: extras/choices.py:33 +#: netbox/extras/choices.py:33 msgid "Decimal" msgstr "" -#: extras/choices.py:34 +#: netbox/extras/choices.py:34 msgid "Boolean (true/false)" msgstr "" -#: extras/choices.py:35 +#: netbox/extras/choices.py:35 msgid "Date" msgstr "" -#: extras/choices.py:36 +#: netbox/extras/choices.py:36 msgid "Date & time" msgstr "" -#: extras/choices.py:38 +#: netbox/extras/choices.py:38 msgid "JSON" msgstr "" -#: extras/choices.py:39 +#: netbox/extras/choices.py:39 msgid "Selection" msgstr "" -#: extras/choices.py:40 +#: netbox/extras/choices.py:40 msgid "Multiple selection" msgstr "" -#: extras/choices.py:42 +#: netbox/extras/choices.py:42 msgid "Multiple objects" msgstr "" -#: extras/choices.py:53 netbox/preferences.py:21 -#: templates/extras/customfield.html:78 vpn/choices.py:20 -#: wireless/choices.py:27 +#: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 +#: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "" -#: extras/choices.py:54 +#: netbox/extras/choices.py:54 msgid "Loose" msgstr "" -#: extras/choices.py:55 +#: netbox/extras/choices.py:55 msgid "Exact" msgstr "" -#: extras/choices.py:66 +#: netbox/extras/choices.py:66 msgid "Always" msgstr "" -#: extras/choices.py:67 +#: netbox/extras/choices.py:67 msgid "If set" msgstr "" -#: extras/choices.py:68 extras/choices.py:81 +#: netbox/extras/choices.py:68 netbox/extras/choices.py:81 msgid "Hidden" msgstr "" -#: extras/choices.py:79 +#: netbox/extras/choices.py:79 msgid "Yes" msgstr "" -#: extras/choices.py:80 +#: netbox/extras/choices.py:80 msgid "No" msgstr "" -#: extras/choices.py:108 templates/tenancy/contact.html:57 -#: tenancy/forms/bulk_edit.py:118 wireless/forms/model_forms.py:168 +#: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 +#: netbox/tenancy/forms/bulk_edit.py:118 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "" -#: extras/choices.py:124 +#: netbox/extras/choices.py:124 msgid "Newest" msgstr "" -#: extras/choices.py:125 +#: netbox/extras/choices.py:125 msgid "Oldest" msgstr "" -#: extras/choices.py:126 +#: netbox/extras/choices.py:126 msgid "Alphabetical (A-Z)" msgstr "" -#: extras/choices.py:127 +#: netbox/extras/choices.py:127 msgid "Alphabetical (Z-A)" msgstr "" -#: extras/choices.py:144 extras/choices.py:167 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "" -#: extras/choices.py:145 extras/choices.py:168 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "" -#: extras/choices.py:146 extras/choices.py:169 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "" -#: extras/choices.py:147 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "" -#: extras/choices.py:165 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "" -#: extras/choices.py:166 netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "" -#: extras/choices.py:170 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "" -#: extras/choices.py:186 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "" -#: extras/choices.py:187 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "" -#: extras/choices.py:188 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "" -#: extras/choices.py:189 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "" -#: extras/choices.py:190 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "" -#: extras/choices.py:226 templates/dcim/virtualchassis_edit.html:107 -#: templates/generic/bulk_add_component.html:68 -#: templates/generic/object_edit.html:47 templates/generic/object_edit.html:80 -#: templates/ipam/inc/ipaddress_edit_header.html:7 +#: netbox/extras/choices.py:226 +#: netbox/templates/dcim/virtualchassis_edit.html:107 +#: netbox/templates/generic/bulk_add_component.html:68 +#: netbox/templates/generic/object_edit.html:47 +#: netbox/templates/generic/object_edit.html:80 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 msgid "Create" msgstr "" -#: extras/choices.py:227 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "" -#: extras/choices.py:228 templates/circuits/inc/circuit_termination.html:23 -#: templates/dcim/inc/panels/inventory_items.html:37 -#: templates/dcim/moduletype/component_templates.html:23 -#: templates/dcim/powerpanel.html:66 templates/extras/script_list.html:35 -#: templates/generic/bulk_delete.html:20 templates/generic/bulk_delete.html:66 -#: templates/generic/object_delete.html:19 templates/htmx/delete_form.html:57 -#: templates/ipam/inc/panels/fhrp_groups.html:48 -#: templates/users/objectpermission.html:46 -#: utilities/templates/buttons/delete.html:11 +#: netbox/extras/choices.py:228 +#: netbox/templates/circuits/inc/circuit_termination.html:23 +#: netbox/templates/dcim/inc/panels/inventory_items.html:37 +#: netbox/templates/dcim/moduletype/component_templates.html:23 +#: netbox/templates/dcim/powerpanel.html:66 +#: netbox/templates/extras/script_list.html:35 +#: netbox/templates/generic/bulk_delete.html:20 +#: netbox/templates/generic/bulk_delete.html:66 +#: netbox/templates/generic/object_delete.html:19 +#: netbox/templates/htmx/delete_form.html:57 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:48 +#: netbox/templates/users/objectpermission.html:46 +#: netbox/utilities/templates/buttons/delete.html:11 msgid "Delete" msgstr "" -#: extras/choices.py:252 netbox/choices.py:57 netbox/choices.py:102 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 +#: netbox/netbox/choices.py:102 msgid "Blue" msgstr "" -#: extras/choices.py:253 netbox/choices.py:56 netbox/choices.py:103 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 +#: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "" -#: extras/choices.py:254 netbox/choices.py:54 netbox/choices.py:104 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 +#: netbox/netbox/choices.py:104 msgid "Purple" msgstr "" -#: extras/choices.py:255 netbox/choices.py:51 netbox/choices.py:105 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 +#: netbox/netbox/choices.py:105 msgid "Pink" msgstr "" -#: extras/choices.py:256 netbox/choices.py:50 netbox/choices.py:106 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 +#: netbox/netbox/choices.py:106 msgid "Red" msgstr "" -#: extras/choices.py:257 netbox/choices.py:68 netbox/choices.py:107 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 +#: netbox/netbox/choices.py:107 msgid "Orange" msgstr "" -#: extras/choices.py:258 netbox/choices.py:66 netbox/choices.py:108 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 +#: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "" -#: extras/choices.py:259 netbox/choices.py:63 netbox/choices.py:109 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 +#: netbox/netbox/choices.py:109 msgid "Green" msgstr "" -#: extras/choices.py:260 netbox/choices.py:60 netbox/choices.py:110 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 +#: netbox/netbox/choices.py:110 msgid "Teal" msgstr "" -#: extras/choices.py:261 netbox/choices.py:59 netbox/choices.py:111 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 +#: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "" -#: extras/choices.py:262 netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "" -#: extras/choices.py:263 netbox/choices.py:74 netbox/choices.py:113 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 +#: netbox/netbox/choices.py:113 msgid "Black" msgstr "" -#: extras/choices.py:264 netbox/choices.py:75 netbox/choices.py:114 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 +#: netbox/netbox/choices.py:114 msgid "White" msgstr "" -#: extras/choices.py:279 extras/forms/model_forms.py:353 -#: extras/forms/model_forms.py:430 templates/extras/webhook.html:10 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 +#: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "" -#: extras/choices.py:280 extras/forms/model_forms.py:418 -#: templates/extras/script/base.html:29 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 +#: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "" -#: extras/choices.py:281 +#: netbox/extras/choices.py:281 msgid "Notification" msgstr "" -#: extras/conditions.py:54 +#: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" msgstr "" -#: extras/conditions.py:58 +#: netbox/extras/conditions.py:58 #, python-brace-format msgid "Unsupported value type: {value}" msgstr "" -#: extras/conditions.py:60 +#: netbox/extras/conditions.py:60 #, python-brace-format msgid "Invalid type for {op} operation: {value}" msgstr "" -#: extras/conditions.py:137 +#: netbox/extras/conditions.py:137 #, python-brace-format msgid "Ruleset must be a dictionary, not {ruleset}." msgstr "" -#: extras/conditions.py:142 +#: netbox/extras/conditions.py:142 msgid "Invalid logic type: must be 'AND' or 'OR'. Please check documentation." msgstr "" -#: extras/conditions.py:154 +#: netbox/extras/conditions.py:154 msgid "Incorrect key(s) informed. Please check documentation." msgstr "" -#: extras/dashboard/forms.py:38 +#: netbox/extras/dashboard/forms.py:38 msgid "Widget type" msgstr "" -#: extras/dashboard/utils.py:36 +#: netbox/extras/dashboard/utils.py:36 #, python-brace-format msgid "Unregistered widget class: {name}" msgstr "" -#: extras/dashboard/widgets.py:126 +#: netbox/extras/dashboard/widgets.py:126 #, python-brace-format msgid "{class_name} must define a render() method." msgstr "" -#: extras/dashboard/widgets.py:145 +#: netbox/extras/dashboard/widgets.py:145 msgid "Note" msgstr "" -#: extras/dashboard/widgets.py:146 +#: netbox/extras/dashboard/widgets.py:146 msgid "Display some arbitrary custom content. Markdown is supported." msgstr "" -#: extras/dashboard/widgets.py:159 +#: netbox/extras/dashboard/widgets.py:159 msgid "Object Counts" msgstr "" -#: extras/dashboard/widgets.py:160 +#: netbox/extras/dashboard/widgets.py:160 msgid "" "Display a set of NetBox models and the number of objects created for each " "type." msgstr "" -#: extras/dashboard/widgets.py:170 +#: netbox/extras/dashboard/widgets.py:170 msgid "Filters to apply when counting the number of objects" msgstr "" -#: extras/dashboard/widgets.py:178 +#: netbox/extras/dashboard/widgets.py:178 msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "" -#: extras/dashboard/widgets.py:209 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "" -#: extras/dashboard/widgets.py:210 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "" -#: extras/dashboard/widgets.py:223 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "" -#: extras/dashboard/widgets.py:235 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" -#: extras/dashboard/widgets.py:275 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "" -#: extras/dashboard/widgets.py:280 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "" -#: extras/dashboard/widgets.py:287 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "" -#: extras/dashboard/widgets.py:292 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "" -#: extras/dashboard/widgets.py:297 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "" -#: extras/dashboard/widgets.py:349 templates/account/base.html:10 -#: templates/account/bookmarks.html:7 templates/inc/user_menu.html:48 +#: netbox/extras/dashboard/widgets.py:349 netbox/templates/account/base.html:10 +#: netbox/templates/account/bookmarks.html:7 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "" -#: extras/dashboard/widgets.py:353 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "" -#: extras/events.py:147 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "" -#: extras/events.py:192 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "" -#: extras/filtersets.py:45 +#: netbox/extras/filtersets.py:45 msgid "Script module (ID)" msgstr "" -#: extras/filtersets.py:254 extras/filtersets.py:637 extras/filtersets.py:665 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "" -#: extras/filtersets.py:370 users/filtersets.py:68 users/filtersets.py:191 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 msgid "Group (name)" msgstr "" -#: extras/filtersets.py:574 virtualization/forms/filtersets.py:118 +#: netbox/extras/filtersets.py:574 +#: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "" -#: extras/filtersets.py:580 virtualization/filtersets.py:95 -#: virtualization/filtersets.py:147 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 +#: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "" -#: extras/filtersets.py:601 tenancy/forms/forms.py:16 tenancy/forms/forms.py:39 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 +#: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "" -#: extras/filtersets.py:607 tenancy/filtersets.py:189 tenancy/filtersets.py:209 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 +#: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "" -#: extras/filtersets.py:623 extras/forms/model_forms.py:495 -#: templates/extras/tag.html:11 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 +#: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "" -#: extras/filtersets.py:629 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "" -#: extras/filtersets.py:689 extras/forms/filtersets.py:429 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "" -#: extras/forms/bulk_edit.py:35 extras/forms/filtersets.py:60 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "" -#: extras/forms/bulk_edit.py:43 extras/forms/filtersets.py:68 -#: extras/tables/tables.py:65 templates/extras/customfield.html:38 -#: templates/generic/bulk_import.html:118 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 +#: netbox/templates/extras/customfield.html:38 +#: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "" -#: extras/forms/bulk_edit.py:48 extras/forms/filtersets.py:75 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 msgid "Must be unique" msgstr "" -#: extras/forms/bulk_edit.py:61 extras/forms/bulk_import.py:60 -#: extras/forms/filtersets.py:89 extras/models/customfields.py:209 +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "" -#: extras/forms/bulk_edit.py:66 extras/forms/bulk_import.py:66 -#: extras/forms/filtersets.py:94 extras/models/customfields.py:216 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "" -#: extras/forms/bulk_edit.py:71 extras/forms/filtersets.py:97 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "" -#: extras/forms/bulk_edit.py:76 extras/forms/filtersets.py:104 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 msgid "Minimum value" msgstr "" -#: extras/forms/bulk_edit.py:80 extras/forms/filtersets.py:108 +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 msgid "Maximum value" msgstr "" -#: extras/forms/bulk_edit.py:84 extras/forms/filtersets.py:112 +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 msgid "Validation regex" msgstr "" -#: extras/forms/bulk_edit.py:91 extras/forms/filtersets.py:46 -#: extras/forms/model_forms.py:76 templates/extras/customfield.html:70 +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 msgid "Behavior" msgstr "" -#: extras/forms/bulk_edit.py:128 extras/forms/filtersets.py:149 +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "" -#: extras/forms/bulk_edit.py:137 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "" -#: extras/forms/bulk_edit.py:154 extras/forms/filtersets.py:187 -#: extras/models/models.py:409 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "" -#: extras/forms/bulk_edit.py:159 extras/forms/filtersets.py:190 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "" -#: extras/forms/bulk_edit.py:164 extras/forms/filtersets.py:194 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "" -#: extras/forms/bulk_edit.py:192 extras/forms/filtersets.py:236 -#: extras/tables/tables.py:256 templates/extras/savedfilter.html:29 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 +#: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "" -#: extras/forms/bulk_edit.py:215 extras/forms/filtersets.py:265 -#: extras/models/models.py:174 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "" -#: extras/forms/bulk_edit.py:219 extras/forms/filtersets.py:259 -#: templates/extras/webhook.html:30 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 +#: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "" -#: extras/forms/bulk_edit.py:224 extras/models/models.py:214 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "" -#: extras/forms/bulk_edit.py:227 templates/extras/webhook.html:38 +#: netbox/extras/forms/bulk_edit.py:227 netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "" -#: extras/forms/bulk_edit.py:232 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "" -#: extras/forms/bulk_edit.py:253 extras/forms/bulk_import.py:192 -#: extras/forms/model_forms.py:377 +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 msgid "Event types" msgstr "" -#: extras/forms/bulk_edit.py:293 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "" -#: extras/forms/bulk_import.py:37 extras/forms/bulk_import.py:118 -#: extras/forms/bulk_import.py:139 extras/forms/bulk_import.py:162 -#: extras/forms/bulk_import.py:186 extras/forms/filtersets.py:137 -#: extras/forms/filtersets.py:224 extras/forms/model_forms.py:47 -#: extras/forms/model_forms.py:205 extras/forms/model_forms.py:237 -#: extras/forms/model_forms.py:278 extras/forms/model_forms.py:372 -#: extras/forms/model_forms.py:489 users/forms/model_forms.py:277 +#: netbox/extras/forms/bulk_import.py:37 netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 netbox/extras/forms/filtersets.py:137 +#: netbox/extras/forms/filtersets.py:224 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "" -#: extras/forms/bulk_import.py:39 extras/forms/bulk_import.py:120 -#: extras/forms/bulk_import.py:141 extras/forms/bulk_import.py:164 -#: extras/forms/bulk_import.py:188 tenancy/forms/bulk_import.py:96 +#: netbox/extras/forms/bulk_import.py:39 netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 +#: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "" -#: extras/forms/bulk_import.py:44 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "" -#: extras/forms/bulk_import.py:47 extras/forms/filtersets.py:208 -#: extras/forms/filtersets.py:281 extras/forms/model_forms.py:304 -#: extras/forms/model_forms.py:341 tenancy/forms/filtersets.py:92 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "" -#: extras/forms/bulk_import.py:50 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "" -#: extras/forms/bulk_import.py:53 extras/forms/filtersets.py:84 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "" -#: extras/forms/bulk_import.py:57 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "" -#: extras/forms/bulk_import.py:63 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "" -#: extras/forms/bulk_import.py:69 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "" -#: extras/forms/bulk_import.py:85 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "" -#: extras/forms/bulk_import.py:91 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" msgstr "" -#: extras/forms/bulk_import.py:123 extras/models/models.py:323 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "" -#: extras/forms/bulk_import.py:126 extras/models/models.py:327 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" -#: extras/forms/bulk_import.py:193 +#: netbox/extras/forms/bulk_import.py:193 msgid "The event type(s) which will trigger this rule" msgstr "" -#: extras/forms/bulk_import.py:196 +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "" -#: extras/forms/bulk_import.py:198 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "" -#: extras/forms/bulk_import.py:219 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "" -#: extras/forms/bulk_import.py:228 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "" -#: extras/forms/bulk_import.py:244 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "" -#: extras/forms/bulk_import.py:249 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "" -#: extras/forms/bulk_import.py:261 extras/forms/model_forms.py:320 -#: netbox/navigation/menu.py:390 templates/extras/notificationgroup.html:41 -#: templates/users/group.html:29 users/forms/model_forms.py:237 -#: users/forms/model_forms.py:249 users/forms/model_forms.py:301 -#: users/tables.py:102 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 msgid "Users" msgstr "" -#: extras/forms/bulk_import.py:265 +#: netbox/extras/forms/bulk_import.py:265 msgid "User names separated by commas, encased with double quotes" msgstr "" -#: extras/forms/bulk_import.py:268 extras/forms/model_forms.py:315 -#: netbox/navigation/menu.py:410 templates/extras/notificationgroup.html:31 -#: users/forms/model_forms.py:182 users/forms/model_forms.py:194 -#: users/forms/model_forms.py:306 users/tables.py:35 users/tables.py:106 +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 msgid "Groups" msgstr "" -#: extras/forms/bulk_import.py:272 +#: netbox/extras/forms/bulk_import.py:272 msgid "Group names separated by commas, encased with double quotes" msgstr "" -#: extras/forms/filtersets.py:52 extras/forms/model_forms.py:56 +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "" -#: extras/forms/filtersets.py:57 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "" -#: extras/forms/filtersets.py:120 extras/forms/model_forms.py:157 -#: extras/tables/tables.py:91 templates/generic/bulk_import.html:154 +#: netbox/extras/forms/filtersets.py:120 netbox/extras/forms/model_forms.py:157 +#: netbox/extras/tables/tables.py:91 +#: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "" -#: extras/forms/filtersets.py:164 extras/forms/filtersets.py:319 -#: extras/forms/filtersets.py:408 extras/forms/model_forms.py:572 -#: templates/core/job.html:96 templates/extras/eventrule.html:84 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 netbox/extras/forms/model_forms.py:572 +#: netbox/templates/core/job.html:96 netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "" -#: extras/forms/filtersets.py:175 extras/forms/filtersets.py:333 -#: extras/forms/filtersets.py:418 netbox/choices.py:130 -#: utilities/forms/bulk_import.py:26 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 +#: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "" -#: extras/forms/filtersets.py:183 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "" -#: extras/forms/filtersets.py:255 extras/models/models.py:179 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "" -#: extras/forms/filtersets.py:286 +#: netbox/extras/forms/filtersets.py:286 msgid "Event type" msgstr "" -#: extras/forms/filtersets.py:291 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "" -#: extras/forms/filtersets.py:307 +#: netbox/extras/forms/filtersets.py:307 msgid "Tagged object type" msgstr "" -#: extras/forms/filtersets.py:312 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "" -#: extras/forms/filtersets.py:341 extras/forms/model_forms.py:507 -#: netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 netbox/extras/forms/model_forms.py:507 +#: netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "" -#: extras/forms/filtersets.py:346 extras/forms/model_forms.py:512 +#: netbox/extras/forms/filtersets.py:346 netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "" -#: extras/forms/filtersets.py:356 extras/forms/model_forms.py:522 -#: netbox/navigation/menu.py:20 templates/dcim/site.html:127 +#: netbox/extras/forms/filtersets.py:356 netbox/extras/forms/model_forms.py:522 +#: netbox/netbox/navigation/menu.py:20 netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "" -#: extras/forms/filtersets.py:361 extras/forms/model_forms.py:527 +#: netbox/extras/forms/filtersets.py:361 netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "" -#: extras/forms/filtersets.py:366 extras/forms/model_forms.py:532 +#: netbox/extras/forms/filtersets.py:366 netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "" -#: extras/forms/filtersets.py:376 extras/forms/model_forms.py:542 +#: netbox/extras/forms/filtersets.py:376 netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "" -#: extras/forms/filtersets.py:381 extras/forms/model_forms.py:547 +#: netbox/extras/forms/filtersets.py:381 netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "" -#: extras/forms/filtersets.py:386 extras/forms/model_forms.py:552 -#: netbox/navigation/menu.py:255 netbox/navigation/menu.py:257 -#: templates/virtualization/clustertype.html:30 -#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45 +#: netbox/extras/forms/filtersets.py:386 netbox/extras/forms/model_forms.py:552 +#: netbox/netbox/navigation/menu.py:255 netbox/netbox/navigation/menu.py:257 +#: netbox/templates/virtualization/clustertype.html:30 +#: netbox/virtualization/tables/clusters.py:23 +#: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "" -#: extras/forms/filtersets.py:391 extras/forms/model_forms.py:557 +#: netbox/extras/forms/filtersets.py:391 netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "" -#: extras/forms/model_forms.py:49 +#: netbox/extras/forms/model_forms.py:49 msgid "The type(s) of object that have this custom field" msgstr "" -#: extras/forms/model_forms.py:52 +#: netbox/extras/forms/model_forms.py:52 msgid "Default value" msgstr "" -#: extras/forms/model_forms.py:58 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "" -#: extras/forms/model_forms.py:61 templates/extras/customfield.html:60 +#: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 msgid "Related object filter" msgstr "" -#: extras/forms/model_forms.py:63 +#: netbox/extras/forms/model_forms.py:63 msgid "Specify query parameters as a JSON object." msgstr "" -#: extras/forms/model_forms.py:73 templates/extras/customfield.html:10 +#: netbox/extras/forms/model_forms.py:73 +#: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "" -#: extras/forms/model_forms.py:85 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." msgstr "" -#: extras/forms/model_forms.py:88 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." msgstr "" -#: extras/forms/model_forms.py:143 +#: netbox/extras/forms/model_forms.py:143 msgid "Related Object" msgstr "" -#: extras/forms/model_forms.py:169 +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" msgstr "" -#: extras/forms/model_forms.py:212 templates/extras/customlink.html:10 +#: netbox/extras/forms/model_forms.py:212 +#: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "" -#: extras/forms/model_forms.py:214 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "" -#: extras/forms/model_forms.py:226 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " "Links which render as empty text will not be displayed." msgstr "" -#: extras/forms/model_forms.py:230 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "" -#: extras/forms/model_forms.py:241 extras/forms/model_forms.py:624 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "" -#: extras/forms/model_forms.py:247 templates/extras/exporttemplate.html:12 +#: netbox/extras/forms/model_forms.py:247 +#: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "" -#: extras/forms/model_forms.py:249 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "" -#: extras/forms/model_forms.py:263 extras/forms/model_forms.py:649 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" -#: extras/forms/model_forms.py:270 extras/forms/model_forms.py:656 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "" -#: extras/forms/model_forms.py:284 netbox/forms/mixins.py:70 -#: templates/extras/savedfilter.html:10 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 +#: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "" -#: extras/forms/model_forms.py:334 +#: netbox/extras/forms/model_forms.py:334 msgid "A notification group specify at least one user or group." msgstr "" -#: extras/forms/model_forms.py:356 templates/extras/webhook.html:23 +#: netbox/extras/forms/model_forms.py:356 +#: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "" -#: extras/forms/model_forms.py:358 templates/extras/webhook.html:44 +#: netbox/extras/forms/model_forms.py:358 +#: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "" -#: extras/forms/model_forms.py:380 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "" -#: extras/forms/model_forms.py:385 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "" -#: extras/forms/model_forms.py:389 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." msgstr "" -#: extras/forms/model_forms.py:394 templates/extras/eventrule.html:10 +#: netbox/extras/forms/model_forms.py:394 +#: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "" -#: extras/forms/model_forms.py:395 +#: netbox/extras/forms/model_forms.py:395 msgid "Triggers" msgstr "" -#: extras/forms/model_forms.py:442 +#: netbox/extras/forms/model_forms.py:442 msgid "Notification group" msgstr "" -#: extras/forms/model_forms.py:562 netbox/navigation/menu.py:26 -#: tenancy/tables/tenants.py:22 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 +#: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "" -#: extras/forms/model_forms.py:606 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "" -#: extras/forms/model_forms.py:612 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "" -#: extras/forms/model_forms.py:631 templates/core/datafile.html:55 +#: netbox/extras/forms/model_forms.py:631 +#: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "" -#: extras/forms/reports.py:17 extras/forms/scripts.py:23 +#: netbox/extras/forms/reports.py:17 netbox/extras/forms/scripts.py:23 msgid "Schedule at" msgstr "" -#: extras/forms/reports.py:18 +#: netbox/extras/forms/reports.py:18 msgid "Schedule execution of report to a set time" msgstr "" -#: extras/forms/reports.py:23 extras/forms/scripts.py:29 +#: netbox/extras/forms/reports.py:23 netbox/extras/forms/scripts.py:29 msgid "Recurs every" msgstr "" -#: extras/forms/reports.py:27 +#: netbox/extras/forms/reports.py:27 msgid "Interval at which this report is re-run (in minutes)" msgstr "" -#: extras/forms/reports.py:35 extras/forms/scripts.py:41 +#: netbox/extras/forms/reports.py:35 netbox/extras/forms/scripts.py:41 #, python-brace-format msgid " (current time: {now})" msgstr "" -#: extras/forms/reports.py:45 extras/forms/scripts.py:51 +#: netbox/extras/forms/reports.py:45 netbox/extras/forms/scripts.py:51 msgid "Scheduled time must be in the future." msgstr "" -#: extras/forms/scripts.py:17 +#: netbox/extras/forms/scripts.py:17 msgid "Commit changes" msgstr "" -#: extras/forms/scripts.py:18 +#: netbox/extras/forms/scripts.py:18 msgid "Commit changes to the database (uncheck for a dry-run)" msgstr "" -#: extras/forms/scripts.py:24 +#: netbox/extras/forms/scripts.py:24 msgid "Schedule execution of script to a set time" msgstr "" -#: extras/forms/scripts.py:33 +#: netbox/extras/forms/scripts.py:33 msgid "Interval at which this script is re-run (in minutes)" msgstr "" -#: extras/jobs.py:49 +#: netbox/extras/jobs.py:49 msgid "Database changes have been reverted automatically." msgstr "" -#: extras/jobs.py:56 +#: netbox/extras/jobs.py:56 msgid "Script aborted with error: " msgstr "" -#: extras/jobs.py:66 +#: netbox/extras/jobs.py:66 msgid "An exception occurred: " msgstr "" -#: extras/jobs.py:71 +#: netbox/extras/jobs.py:71 msgid "Database changes have been reverted due to error." msgstr "" -#: extras/management/commands/reindex.py:66 +#: netbox/extras/management/commands/reindex.py:66 msgid "No indexers found!" msgstr "" -#: extras/models/configs.py:130 +#: netbox/extras/models/configs.py:130 msgid "config context" msgstr "" -#: extras/models/configs.py:131 +#: netbox/extras/models/configs.py:131 msgid "config contexts" msgstr "" -#: extras/models/configs.py:149 extras/models/configs.py:205 +#: netbox/extras/models/configs.py:149 netbox/extras/models/configs.py:205 msgid "JSON data must be in object form. Example:" msgstr "" -#: extras/models/configs.py:169 +#: netbox/extras/models/configs.py:169 msgid "" "Local config context data takes precedence over source contexts in the final " "rendered config context" msgstr "" -#: extras/models/configs.py:224 +#: netbox/extras/models/configs.py:224 msgid "template code" msgstr "" -#: extras/models/configs.py:225 +#: netbox/extras/models/configs.py:225 msgid "Jinja2 template code." msgstr "" -#: extras/models/configs.py:228 +#: netbox/extras/models/configs.py:228 msgid "environment parameters" msgstr "" -#: extras/models/configs.py:233 +#: netbox/extras/models/configs.py:233 msgid "" "Any additional parameters to pass when constructing the Jinja2 " "environment." msgstr "" -#: extras/models/configs.py:240 +#: netbox/extras/models/configs.py:240 msgid "config template" msgstr "" -#: extras/models/configs.py:241 +#: netbox/extras/models/configs.py:241 msgid "config templates" msgstr "" -#: extras/models/customfields.py:75 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "" -#: extras/models/customfields.py:82 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "" -#: extras/models/customfields.py:89 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" -#: extras/models/customfields.py:95 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "" -#: extras/models/customfields.py:99 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "" -#: extras/models/customfields.py:104 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" -#: extras/models/customfields.py:115 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" msgstr "" -#: extras/models/customfields.py:119 extras/models/models.py:317 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "" -#: extras/models/customfields.py:122 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "" -#: extras/models/customfields.py:130 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "" -#: extras/models/customfields.py:132 +#: netbox/extras/models/customfields.py:132 msgid "" "This field is required when creating new objects or editing an existing " "object." msgstr "" -#: extras/models/customfields.py:135 +#: netbox/extras/models/customfields.py:135 msgid "must be unique" msgstr "" -#: extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:137 msgid "The value of this field must be unique for the assigned object" msgstr "" -#: extras/models/customfields.py:140 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "" -#: extras/models/customfields.py:143 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." msgstr "" -#: extras/models/customfields.py:148 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "" -#: extras/models/customfields.py:152 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire field." msgstr "" -#: extras/models/customfields.py:155 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "" -#: extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with " "double quotes (e.g. \"Foo\")." msgstr "" -#: extras/models/customfields.py:166 +#: netbox/extras/models/customfields.py:166 msgid "" "Filter the object selection choices using a query_params dict (must be a " "JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." msgstr "" -#: extras/models/customfields.py:172 +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "" -#: extras/models/customfields.py:173 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "" -#: extras/models/customfields.py:178 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "" -#: extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "" -#: extras/models/customfields.py:184 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "" -#: extras/models/customfields.py:185 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "" -#: extras/models/customfields.py:191 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "" -#: extras/models/customfields.py:193 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7522,252 +8045,254 @@ msgid "" "values to exactly three uppercase letters." msgstr "" -#: extras/models/customfields.py:201 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "" -#: extras/models/customfields.py:210 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" -#: extras/models/customfields.py:217 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" -#: extras/models/customfields.py:221 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "" -#: extras/models/customfields.py:222 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "" -#: extras/models/customfields.py:239 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "" -#: extras/models/customfields.py:240 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "" -#: extras/models/customfields.py:329 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "" -#: extras/models/customfields.py:336 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "" -#: extras/models/customfields.py:338 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "" -#: extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:348 msgid "Regular expression validation is supported only for text and URL fields" msgstr "" -#: extras/models/customfields.py:354 +#: netbox/extras/models/customfields.py:354 msgid "Uniqueness cannot be enforced for boolean fields" msgstr "" -#: extras/models/customfields.py:364 +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "" -#: extras/models/customfields.py:368 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "" -#: extras/models/customfields.py:375 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "" -#: extras/models/customfields.py:379 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "" -#: extras/models/customfields.py:386 +#: netbox/extras/models/customfields.py:386 msgid "A related object filter can be defined only for object fields." msgstr "" -#: extras/models/customfields.py:390 +#: netbox/extras/models/customfields.py:390 msgid "Filter must be defined as a dictionary mapping attributes to values." msgstr "" -#: extras/models/customfields.py:469 +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "" -#: extras/models/customfields.py:470 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "" -#: extras/models/customfields.py:554 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" -#: extras/models/customfields.py:648 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "" -#: extras/models/customfields.py:650 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "" -#: extras/models/customfields.py:655 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "" -#: extras/models/customfields.py:658 extras/models/customfields.py:673 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "" -#: extras/models/customfields.py:662 extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "" -#: extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "" -#: extras/models/customfields.py:682 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "" -#: extras/models/customfields.py:690 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "" -#: extras/models/customfields.py:699 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" -#: extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "" -#: extras/models/customfields.py:716 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "" -#: extras/models/customfields.py:725 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "" -#: extras/models/customfields.py:731 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "" -#: extras/models/customfields.py:735 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "" -#: extras/models/customfields.py:738 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "" -#: extras/models/customfields.py:757 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "" -#: extras/models/customfields.py:769 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "" -#: extras/models/customfields.py:776 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "" -#: extras/models/customfields.py:777 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "" -#: extras/models/customfields.py:813 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "" -#: extras/models/dashboard.py:18 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "" -#: extras/models/dashboard.py:22 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "" -#: extras/models/dashboard.py:27 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "" -#: extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "" -#: extras/models/models.py:52 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "" -#: extras/models/models.py:53 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "" -#: extras/models/models.py:67 +#: netbox/extras/models/models.py:67 msgid "The types of event which will trigger this rule." msgstr "" -#: extras/models/models.py:74 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "" -#: extras/models/models.py:77 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "" -#: extras/models/models.py:85 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "" -#: extras/models/models.py:104 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "" -#: extras/models/models.py:116 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "" -#: extras/models/models.py:117 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "" -#: extras/models/models.py:166 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the " "request body." msgstr "" -#: extras/models/models.py:181 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available here." msgstr "" -#: extras/models/models.py:186 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "" -#: extras/models/models.py:189 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -7775,11 +8300,11 @@ msgid "" "as the request body (below)." msgstr "" -#: extras/models/models.py:195 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "" -#: extras/models/models.py:198 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -7787,4257 +8312,4386 @@ msgid "" "username, request_id, and data." msgstr "" -#: extras/models/models.py:204 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "" -#: extras/models/models.py:208 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " "the key. The secret is not transmitted in the request." msgstr "" -#: extras/models/models.py:215 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" -#: extras/models/models.py:221 templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "" -#: extras/models/models.py:223 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to " "use the system defaults." msgstr "" -#: extras/models/models.py:234 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "" -#: extras/models/models.py:235 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "" -#: extras/models/models.py:253 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" -#: extras/models/models.py:293 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "" -#: extras/models/models.py:305 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "" -#: extras/models/models.py:306 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "" -#: extras/models/models.py:309 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "" -#: extras/models/models.py:310 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "" -#: extras/models/models.py:320 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "" -#: extras/models/models.py:330 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "" -#: extras/models/models.py:332 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "" -#: extras/models/models.py:341 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "" -#: extras/models/models.py:342 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "" -#: extras/models/models.py:389 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "" -#: extras/models/models.py:402 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." msgstr "" -#: extras/models/models.py:410 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "" -#: extras/models/models.py:413 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "" -#: extras/models/models.py:416 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "" -#: extras/models/models.py:419 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "" -#: extras/models/models.py:421 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "" -#: extras/models/models.py:430 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "" -#: extras/models/models.py:431 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "" -#: extras/models/models.py:448 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "" -#: extras/models/models.py:498 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "" -#: extras/models/models.py:530 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "" -#: extras/models/models.py:543 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "" -#: extras/models/models.py:544 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "" -#: extras/models/models.py:562 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" -#: extras/models/models.py:590 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "" -#: extras/models/models.py:593 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "" -#: extras/models/models.py:610 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "" -#: extras/models/models.py:611 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "" -#: extras/models/models.py:625 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" -#: extras/models/models.py:688 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "" -#: extras/models/models.py:702 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "" -#: extras/models/models.py:703 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "" -#: extras/models/models.py:718 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "" -#: extras/models/models.py:760 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "" -#: extras/models/models.py:761 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "" -#: extras/models/models.py:774 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "" -#: extras/models/notifications.py:43 +#: netbox/extras/models/notifications.py:43 msgid "read" msgstr "" -#: extras/models/notifications.py:66 +#: netbox/extras/models/notifications.py:66 msgid "event" msgstr "" -#: extras/models/notifications.py:84 +#: netbox/extras/models/notifications.py:84 msgid "notification" msgstr "" -#: extras/models/notifications.py:85 +#: netbox/extras/models/notifications.py:85 msgid "notifications" msgstr "" -#: extras/models/notifications.py:99 extras/models/notifications.py:234 +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 #, python-brace-format msgid "Objects of this type ({type}) do not support notifications." msgstr "" -#: extras/models/notifications.py:137 users/models/users.py:58 -#: users/models/users.py:77 +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 msgid "groups" msgstr "" -#: extras/models/notifications.py:143 users/models/users.py:93 +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 msgid "users" msgstr "" -#: extras/models/notifications.py:152 +#: netbox/extras/models/notifications.py:152 msgid "notification group" msgstr "" -#: extras/models/notifications.py:153 +#: netbox/extras/models/notifications.py:153 msgid "notification groups" msgstr "" -#: extras/models/notifications.py:217 +#: netbox/extras/models/notifications.py:217 msgid "subscription" msgstr "" -#: extras/models/notifications.py:218 +#: netbox/extras/models/notifications.py:218 msgid "subscriptions" msgstr "" -#: extras/models/scripts.py:42 +#: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "" -#: extras/models/scripts.py:64 +#: netbox/extras/models/scripts.py:64 msgid "script" msgstr "" -#: extras/models/scripts.py:65 +#: netbox/extras/models/scripts.py:65 msgid "scripts" msgstr "" -#: extras/models/scripts.py:111 +#: netbox/extras/models/scripts.py:111 msgid "script module" msgstr "" -#: extras/models/scripts.py:112 +#: netbox/extras/models/scripts.py:112 msgid "script modules" msgstr "" -#: extras/models/search.py:22 +#: netbox/extras/models/search.py:22 msgid "timestamp" msgstr "" -#: extras/models/search.py:37 +#: netbox/extras/models/search.py:37 msgid "field" msgstr "" -#: extras/models/search.py:45 +#: netbox/extras/models/search.py:45 msgid "value" msgstr "" -#: extras/models/search.py:56 +#: netbox/extras/models/search.py:56 msgid "cached value" msgstr "" -#: extras/models/search.py:57 +#: netbox/extras/models/search.py:57 msgid "cached values" msgstr "" -#: extras/models/staging.py:44 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "" -#: extras/models/staging.py:45 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "" -#: extras/models/staging.py:97 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "" -#: extras/models/staging.py:98 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "" -#: extras/models/tags.py:40 +#: netbox/extras/models/tags.py:40 msgid "The object type(s) to which this tag can be applied." msgstr "" -#: extras/models/tags.py:49 +#: netbox/extras/models/tags.py:49 msgid "tag" msgstr "" -#: extras/models/tags.py:50 +#: netbox/extras/models/tags.py:50 msgid "tags" msgstr "" -#: extras/models/tags.py:78 +#: netbox/extras/models/tags.py:78 msgid "tagged item" msgstr "" -#: extras/models/tags.py:79 +#: netbox/extras/models/tags.py:79 msgid "tagged items" msgstr "" -#: extras/scripts.py:429 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "" -#: extras/scripts.py:433 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "" -#: extras/tables/columns.py:12 templates/htmx/notifications.html:18 +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 msgid "Dismiss" msgstr "" -#: extras/tables/tables.py:62 extras/tables/tables.py:159 -#: extras/tables/tables.py:184 extras/tables/tables.py:250 -#: extras/tables/tables.py:276 extras/tables/tables.py:412 -#: extras/tables/tables.py:446 templates/extras/customfield.html:105 -#: templates/extras/eventrule.html:27 templates/users/objectpermission.html:64 -#: users/tables.py:80 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 +#: netbox/templates/extras/eventrule.html:27 +#: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "" -#: extras/tables/tables.py:69 +#: netbox/extras/tables/tables.py:69 msgid "Validate Uniqueness" msgstr "" -#: extras/tables/tables.py:73 +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "" -#: extras/tables/tables.py:76 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "" -#: extras/tables/tables.py:82 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "" -#: extras/tables/tables.py:86 templates/extras/customfield.html:51 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "" -#: extras/tables/tables.py:94 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "" -#: extras/tables/tables.py:98 templates/extras/customfield.html:118 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 msgid "Minimum Value" msgstr "" -#: extras/tables/tables.py:101 templates/extras/customfield.html:122 +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 msgid "Maximum Value" msgstr "" -#: extras/tables/tables.py:104 +#: netbox/extras/tables/tables.py:104 msgid "Validation Regex" msgstr "" -#: extras/tables/tables.py:137 +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "" -#: extras/tables/tables.py:140 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "" -#: extras/tables/tables.py:165 templates/extras/customlink.html:33 +#: netbox/extras/tables/tables.py:165 +#: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "" -#: extras/tables/tables.py:187 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "" -#: extras/tables/tables.py:195 extras/tables/tables.py:487 -#: extras/tables/tables.py:522 templates/core/datafile.html:24 -#: templates/dcim/device/render_config.html:22 -#: templates/extras/configcontext.html:39 -#: templates/extras/configtemplate.html:31 -#: templates/extras/exporttemplate.html:45 -#: templates/generic/bulk_import.html:35 -#: templates/virtualization/virtualmachine/render_config.html:22 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 +#: netbox/templates/dcim/device/render_config.html:22 +#: netbox/templates/extras/configcontext.html:39 +#: netbox/templates/extras/configtemplate.html:31 +#: netbox/templates/extras/exporttemplate.html:45 +#: netbox/templates/generic/bulk_import.html:35 +#: netbox/templates/virtualization/virtualmachine/render_config.html:22 msgid "Data File" msgstr "" -#: extras/tables/tables.py:200 extras/tables/tables.py:499 -#: extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "" -#: extras/tables/tables.py:227 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "" -#: extras/tables/tables.py:232 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "" -#: extras/tables/tables.py:339 +#: netbox/extras/tables/tables.py:339 msgid "Read" msgstr "" -#: extras/tables/tables.py:382 +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "" -#: extras/tables/tables.py:418 templates/extras/eventrule.html:37 +#: netbox/extras/tables/tables.py:418 netbox/templates/extras/eventrule.html:37 msgid "Event Types" msgstr "" -#: extras/tables/tables.py:535 netbox/navigation/menu.py:77 -#: templates/dcim/devicerole.html:8 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 +#: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "" -#: extras/tables/tables.py:587 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "" -#: extras/tables/tables.py:606 extras/tables/tables.py:640 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "" -#: extras/tables/tables.py:613 extras/tables/tables.py:650 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "" -#: extras/tables/tables.py:619 extras/tables/tables.py:659 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "" -#: extras/tables/tables.py:643 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "" -#: extras/validators.py:16 +#: netbox/extras/validators.py:16 #, python-format msgid "Ensure this value is equal to %(limit_value)s." msgstr "" -#: extras/validators.py:27 +#: netbox/extras/validators.py:27 #, python-format msgid "Ensure this value does not equal %(limit_value)s." msgstr "" -#: extras/validators.py:38 +#: netbox/extras/validators.py:38 msgid "This field must be empty." msgstr "" -#: extras/validators.py:53 +#: netbox/extras/validators.py:53 msgid "This field must not be empty." msgstr "" -#: extras/validators.py:95 +#: netbox/extras/validators.py:95 msgid "Validation rules must be passed as a dictionary" msgstr "" -#: extras/validators.py:120 +#: netbox/extras/validators.py:120 #, python-brace-format msgid "Custom validation failed for {attribute}: {exception}" msgstr "" -#: extras/validators.py:134 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "" -#: extras/validators.py:151 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "" -#: extras/views.py:961 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "" -#: extras/views.py:1007 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "" -#: extras/views.py:1048 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "" -#: extras/views.py:1084 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "" -#: extras/views.py:1086 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "" -#: extras/views.py:1173 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "" -#: ipam/api/field_serializers.py:17 +#: netbox/ipam/api/field_serializers.py:17 msgid "Enter a valid IPv4 or IPv6 address with optional mask." msgstr "" -#: ipam/api/field_serializers.py:24 +#: netbox/ipam/api/field_serializers.py:24 #, python-brace-format msgid "Invalid IP address format: {data}" msgstr "" -#: ipam/api/field_serializers.py:37 +#: netbox/ipam/api/field_serializers.py:37 msgid "Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation." msgstr "" -#: ipam/api/field_serializers.py:44 +#: netbox/ipam/api/field_serializers.py:44 #, python-brace-format msgid "Invalid IP prefix format: {data}" msgstr "" -#: ipam/api/views.py:358 +#: netbox/ipam/api/views.py:358 msgid "" "Insufficient space is available to accommodate the requested prefix size(s)" msgstr "" -#: ipam/choices.py:30 +#: netbox/ipam/choices.py:30 msgid "Container" msgstr "" -#: ipam/choices.py:72 +#: netbox/ipam/choices.py:72 msgid "DHCP" msgstr "" -#: ipam/choices.py:73 +#: netbox/ipam/choices.py:73 msgid "SLAAC" msgstr "" -#: ipam/choices.py:89 +#: netbox/ipam/choices.py:89 msgid "Loopback" msgstr "" -#: ipam/choices.py:91 +#: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "" -#: ipam/choices.py:115 +#: netbox/ipam/choices.py:115 msgid "Standard" msgstr "" -#: ipam/choices.py:120 +#: netbox/ipam/choices.py:120 msgid "CheckPoint" msgstr "" -#: ipam/choices.py:123 +#: netbox/ipam/choices.py:123 msgid "Cisco" msgstr "" -#: ipam/choices.py:137 +#: netbox/ipam/choices.py:137 msgid "Plaintext" msgstr "" -#: ipam/fields.py:36 +#: netbox/ipam/fields.py:36 #, python-brace-format msgid "Invalid IP address format: {address}" msgstr "" -#: ipam/filtersets.py:48 vpn/filtersets.py:315 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "" -#: ipam/filtersets.py:54 vpn/filtersets.py:321 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "" -#: ipam/filtersets.py:59 vpn/filtersets.py:326 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "" -#: ipam/filtersets.py:65 vpn/filtersets.py:332 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "" -#: ipam/filtersets.py:86 +#: netbox/ipam/filtersets.py:86 msgid "Importing VRF" msgstr "" -#: ipam/filtersets.py:92 +#: netbox/ipam/filtersets.py:92 msgid "Import VRF (RD)" msgstr "" -#: ipam/filtersets.py:97 +#: netbox/ipam/filtersets.py:97 msgid "Exporting VRF" msgstr "" -#: ipam/filtersets.py:103 +#: netbox/ipam/filtersets.py:103 msgid "Export VRF (RD)" msgstr "" -#: ipam/filtersets.py:108 +#: netbox/ipam/filtersets.py:108 msgid "Importing L2VPN" msgstr "" -#: ipam/filtersets.py:114 +#: netbox/ipam/filtersets.py:114 msgid "Importing L2VPN (identifier)" msgstr "" -#: ipam/filtersets.py:119 +#: netbox/ipam/filtersets.py:119 msgid "Exporting L2VPN" msgstr "" -#: ipam/filtersets.py:125 +#: netbox/ipam/filtersets.py:125 msgid "Exporting L2VPN (identifier)" msgstr "" -#: ipam/filtersets.py:155 ipam/filtersets.py:281 ipam/forms/model_forms.py:229 -#: ipam/tables/ip.py:212 templates/ipam/prefix.html:12 +#: netbox/ipam/filtersets.py:155 netbox/ipam/filtersets.py:281 +#: netbox/ipam/forms/model_forms.py:229 netbox/ipam/tables/ip.py:212 +#: netbox/templates/ipam/prefix.html:12 msgid "Prefix" msgstr "" -#: ipam/filtersets.py:159 ipam/filtersets.py:198 ipam/filtersets.py:221 +#: netbox/ipam/filtersets.py:159 netbox/ipam/filtersets.py:198 +#: netbox/ipam/filtersets.py:221 msgid "RIR (ID)" msgstr "" -#: ipam/filtersets.py:165 ipam/filtersets.py:204 ipam/filtersets.py:227 +#: netbox/ipam/filtersets.py:165 netbox/ipam/filtersets.py:204 +#: netbox/ipam/filtersets.py:227 msgid "RIR (slug)" msgstr "" -#: ipam/filtersets.py:285 +#: netbox/ipam/filtersets.py:285 msgid "Within prefix" msgstr "" -#: ipam/filtersets.py:289 +#: netbox/ipam/filtersets.py:289 msgid "Within and including prefix" msgstr "" -#: ipam/filtersets.py:293 +#: netbox/ipam/filtersets.py:293 msgid "Prefixes which contain this prefix or IP" msgstr "" -#: ipam/filtersets.py:304 ipam/filtersets.py:572 ipam/forms/bulk_edit.py:342 -#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:331 +#: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "" -#: ipam/filtersets.py:373 vpn/filtersets.py:438 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "" -#: ipam/filtersets.py:377 vpn/filtersets.py:433 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "" -#: ipam/filtersets.py:471 ipam/filtersets.py:475 ipam/filtersets.py:567 -#: ipam/forms/model_forms.py:463 templates/tenancy/contact.html:53 -#: tenancy/forms/bulk_edit.py:113 +#: netbox/ipam/filtersets.py:471 netbox/ipam/filtersets.py:475 +#: netbox/ipam/filtersets.py:567 netbox/ipam/forms/model_forms.py:463 +#: netbox/templates/tenancy/contact.html:53 +#: netbox/tenancy/forms/bulk_edit.py:113 msgid "Address" msgstr "" -#: ipam/filtersets.py:479 +#: netbox/ipam/filtersets.py:479 msgid "Ranges which contain this prefix or IP" msgstr "" -#: ipam/filtersets.py:507 ipam/filtersets.py:563 +#: netbox/ipam/filtersets.py:507 netbox/ipam/filtersets.py:563 msgid "Parent prefix" msgstr "" -#: ipam/filtersets.py:616 ipam/filtersets.py:856 ipam/filtersets.py:1105 -#: vpn/filtersets.py:396 +#: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "" -#: ipam/filtersets.py:621 ipam/filtersets.py:861 ipam/filtersets.py:1099 -#: virtualization/filtersets.py:282 virtualization/filtersets.py:321 -#: vpn/filtersets.py:401 +#: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "" -#: ipam/filtersets.py:627 vpn/filtersets.py:97 vpn/filtersets.py:407 +#: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "" -#: ipam/filtersets.py:638 vpn/filtersets.py:108 vpn/filtersets.py:418 +#: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "" -#: ipam/filtersets.py:643 vpn/filtersets.py:113 +#: netbox/ipam/filtersets.py:643 netbox/vpn/filtersets.py:113 msgid "VM interface (ID)" msgstr "" -#: ipam/filtersets.py:648 +#: netbox/ipam/filtersets.py:648 msgid "FHRP group (ID)" msgstr "" -#: ipam/filtersets.py:652 +#: netbox/ipam/filtersets.py:652 msgid "Is assigned to an interface" msgstr "" -#: ipam/filtersets.py:656 +#: netbox/ipam/filtersets.py:656 msgid "Is assigned" msgstr "" -#: ipam/filtersets.py:668 +#: netbox/ipam/filtersets.py:668 msgid "Service (ID)" msgstr "" -#: ipam/filtersets.py:673 +#: netbox/ipam/filtersets.py:673 msgid "NAT inside IP address (ID)" msgstr "" -#: ipam/filtersets.py:1110 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "" -#: ipam/filtersets.py:1116 ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "" -#: ipam/filtersets.py:1141 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "" -#: ipam/filtersets.py:1146 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "" -#: ipam/formfields.py:14 +#: netbox/ipam/formfields.py:14 msgid "Enter a valid IPv4 or IPv6 address (without a mask)." msgstr "" -#: ipam/formfields.py:32 +#: netbox/ipam/formfields.py:32 #, python-brace-format msgid "Invalid IPv4/IPv6 address format: {address}" msgstr "" -#: ipam/formfields.py:37 +#: netbox/ipam/formfields.py:37 msgid "This field requires an IP address without a mask." msgstr "" -#: ipam/formfields.py:39 ipam/formfields.py:61 +#: netbox/ipam/formfields.py:39 netbox/ipam/formfields.py:61 msgid "Please specify a valid IPv4 or IPv6 address." msgstr "" -#: ipam/formfields.py:44 +#: netbox/ipam/formfields.py:44 msgid "Enter a valid IPv4 or IPv6 address (with CIDR mask)." msgstr "" -#: ipam/formfields.py:56 +#: netbox/ipam/formfields.py:56 msgid "CIDR mask (e.g. /24) is required." msgstr "" -#: ipam/forms/bulk_create.py:13 +#: netbox/ipam/forms/bulk_create.py:13 msgid "Address pattern" msgstr "" -#: ipam/forms/bulk_edit.py:49 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "" -#: ipam/forms/bulk_edit.py:87 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "" -#: ipam/forms/bulk_edit.py:108 ipam/forms/bulk_edit.py:137 -#: ipam/forms/bulk_edit.py:162 ipam/forms/bulk_import.py:89 -#: ipam/forms/bulk_import.py:109 ipam/forms/bulk_import.py:129 -#: ipam/forms/filtersets.py:110 ipam/forms/filtersets.py:125 -#: ipam/forms/filtersets.py:148 ipam/forms/model_forms.py:96 -#: ipam/forms/model_forms.py:109 ipam/forms/model_forms.py:131 -#: ipam/forms/model_forms.py:149 ipam/models/asns.py:31 ipam/models/asns.py:103 -#: ipam/models/ip.py:71 ipam/models/ip.py:90 ipam/tables/asn.py:20 -#: ipam/tables/asn.py:45 templates/ipam/aggregate.html:18 -#: templates/ipam/asn.html:27 templates/ipam/asnrange.html:19 -#: templates/ipam/rir.html:19 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 +#: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 +#: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 +#: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 +#: netbox/ipam/forms/model_forms.py:149 netbox/ipam/models/asns.py:31 +#: netbox/ipam/models/asns.py:103 netbox/ipam/models/ip.py:71 +#: netbox/ipam/models/ip.py:90 netbox/ipam/tables/asn.py:20 +#: netbox/ipam/tables/asn.py:45 netbox/templates/ipam/aggregate.html:18 +#: netbox/templates/ipam/asn.html:27 netbox/templates/ipam/asnrange.html:19 +#: netbox/templates/ipam/rir.html:19 msgid "RIR" msgstr "" -#: ipam/forms/bulk_edit.py:170 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "" -#: ipam/forms/bulk_edit.py:228 ipam/forms/model_forms.py:586 -#: ipam/forms/model_forms.py:633 ipam/tables/ip.py:251 -#: templates/ipam/vlan_edit.html:37 templates/ipam/vlangroup.html:27 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 +#: netbox/templates/ipam/vlan_edit.html:37 +#: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "" -#: ipam/forms/bulk_edit.py:233 ipam/forms/bulk_import.py:185 -#: ipam/forms/filtersets.py:256 ipam/forms/model_forms.py:218 -#: ipam/models/vlans.py:234 ipam/tables/ip.py:255 templates/ipam/prefix.html:60 -#: templates/ipam/vlan.html:12 templates/ipam/vlan/base.html:6 -#: templates/ipam/vlan_edit.html:10 templates/wireless/wirelesslan.html:30 -#: vpn/forms/bulk_import.py:304 vpn/forms/filtersets.py:284 -#: vpn/forms/model_forms.py:433 vpn/forms/model_forms.py:452 -#: wireless/forms/bulk_edit.py:55 wireless/forms/bulk_import.py:48 -#: wireless/forms/model_forms.py:48 wireless/models.py:102 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 +#: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 +#: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 +#: netbox/templates/ipam/vlan/base.html:6 +#: netbox/templates/ipam/vlan_edit.html:10 +#: netbox/templates/wireless/wirelesslan.html:30 +#: netbox/vpn/forms/bulk_import.py:304 netbox/vpn/forms/filtersets.py:284 +#: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 +#: netbox/wireless/forms/bulk_edit.py:55 +#: netbox/wireless/forms/bulk_import.py:48 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "" -#: ipam/forms/bulk_edit.py:244 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "" -#: ipam/forms/bulk_edit.py:267 ipam/forms/filtersets.py:241 -#: templates/ipam/prefix.html:85 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 +#: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "" -#: ipam/forms/bulk_edit.py:272 ipam/forms/bulk_edit.py:317 -#: ipam/forms/filtersets.py:248 ipam/forms/filtersets.py:293 -#: ipam/models/ip.py:272 ipam/models/ip.py:539 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 +#: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 +#: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "" -#: ipam/forms/bulk_edit.py:286 ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "" -#: ipam/forms/bulk_edit.py:365 ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "" -#: ipam/forms/bulk_edit.py:386 ipam/forms/bulk_edit.py:579 -#: ipam/forms/bulk_import.py:394 ipam/forms/bulk_import.py:469 -#: ipam/forms/bulk_import.py:495 ipam/forms/filtersets.py:390 -#: ipam/forms/filtersets.py:530 templates/ipam/fhrpgroup.html:22 -#: templates/ipam/inc/panels/fhrp_groups.html:24 templates/ipam/service.html:32 -#: templates/ipam/servicetemplate.html:19 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 +#: netbox/templates/ipam/service.html:32 +#: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "" -#: ipam/forms/bulk_edit.py:393 ipam/forms/filtersets.py:397 -#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:26 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "" -#: ipam/forms/bulk_edit.py:398 ipam/forms/filtersets.py:402 -#: wireless/forms/bulk_edit.py:68 wireless/forms/bulk_edit.py:115 -#: wireless/forms/bulk_import.py:62 wireless/forms/bulk_import.py:65 -#: wireless/forms/bulk_import.py:104 wireless/forms/bulk_import.py:107 -#: wireless/forms/filtersets.py:54 wireless/forms/filtersets.py:88 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 +#: netbox/wireless/forms/bulk_edit.py:68 netbox/wireless/forms/bulk_edit.py:115 +#: netbox/wireless/forms/bulk_import.py:62 +#: netbox/wireless/forms/bulk_import.py:65 +#: netbox/wireless/forms/bulk_import.py:104 +#: netbox/wireless/forms/bulk_import.py:107 +#: netbox/wireless/forms/filtersets.py:54 +#: netbox/wireless/forms/filtersets.py:88 msgid "Authentication type" msgstr "" -#: ipam/forms/bulk_edit.py:403 ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "" -#: ipam/forms/bulk_edit.py:420 ipam/forms/filtersets.py:383 -#: ipam/forms/model_forms.py:474 netbox/navigation/menu.py:386 -#: templates/ipam/fhrpgroup.html:49 -#: templates/wireless/inc/authentication_attrs.html:5 -#: wireless/forms/bulk_edit.py:91 wireless/forms/bulk_edit.py:149 -#: wireless/forms/filtersets.py:36 wireless/forms/filtersets.py:76 -#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:171 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 +#: netbox/templates/ipam/fhrpgroup.html:49 +#: netbox/templates/wireless/inc/authentication_attrs.html:5 +#: netbox/wireless/forms/bulk_edit.py:91 netbox/wireless/forms/bulk_edit.py:149 +#: netbox/wireless/forms/filtersets.py:36 +#: netbox/wireless/forms/filtersets.py:76 +#: netbox/wireless/forms/model_forms.py:55 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "" -#: ipam/forms/bulk_edit.py:432 ipam/forms/model_forms.py:575 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "" -#: ipam/forms/bulk_edit.py:490 ipam/models/vlans.py:60 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 msgid "VLAN ID ranges" msgstr "" -#: ipam/forms/bulk_edit.py:498 ipam/forms/model_forms.py:578 -#: ipam/forms/model_forms.py:588 ipam/tables/vlans.py:71 -#: templates/ipam/vlangroup.html:38 +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 +#: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "" -#: ipam/forms/bulk_edit.py:570 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "" -#: ipam/forms/bulk_edit.py:584 ipam/forms/model_forms.py:659 -#: ipam/forms/model_forms.py:691 ipam/tables/services.py:19 -#: ipam/tables/services.py:49 templates/ipam/service.html:36 -#: templates/ipam/servicetemplate.html:23 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 +#: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 +#: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "" -#: ipam/forms/bulk_import.py:48 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "" -#: ipam/forms/bulk_import.py:54 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "" -#: ipam/forms/bulk_import.py:92 ipam/forms/bulk_import.py:112 -#: ipam/forms/bulk_import.py:132 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "" -#: ipam/forms/bulk_import.py:182 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "" -#: ipam/forms/bulk_import.py:308 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "" -#: ipam/forms/bulk_import.py:311 ipam/forms/bulk_import.py:488 -#: ipam/forms/model_forms.py:685 virtualization/filtersets.py:288 -#: virtualization/filtersets.py:327 virtualization/forms/bulk_edit.py:200 -#: virtualization/forms/bulk_edit.py:326 -#: virtualization/forms/bulk_import.py:146 -#: virtualization/forms/bulk_import.py:207 -#: virtualization/forms/filtersets.py:212 -#: virtualization/forms/filtersets.py:248 -#: virtualization/forms/model_forms.py:288 vpn/forms/bulk_import.py:93 -#: vpn/forms/bulk_import.py:290 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 +#: netbox/virtualization/forms/bulk_edit.py:200 +#: netbox/virtualization/forms/bulk_edit.py:326 +#: netbox/virtualization/forms/bulk_import.py:146 +#: netbox/virtualization/forms/bulk_import.py:207 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 +#: netbox/virtualization/forms/model_forms.py:288 +#: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "" -#: ipam/forms/bulk_import.py:315 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "" -#: ipam/forms/bulk_import.py:322 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "" -#: ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "" -#: ipam/forms/bulk_import.py:326 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "" -#: ipam/forms/bulk_import.py:365 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" -#: ipam/forms/bulk_import.py:369 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" -#: ipam/forms/bulk_import.py:398 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "" -#: ipam/forms/bulk_import.py:413 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "" -#: ipam/forms/bulk_import.py:440 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "" -#: ipam/forms/bulk_import.py:471 ipam/forms/bulk_import.py:497 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "" -#: ipam/forms/bulk_import.py:485 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "" -#: ipam/forms/bulk_import.py:492 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "" -#: ipam/forms/bulk_import.py:517 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "" -#: ipam/forms/filtersets.py:47 ipam/forms/model_forms.py:63 -#: netbox/navigation/menu.py:189 vpn/forms/model_forms.py:410 +#: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "" -#: ipam/forms/filtersets.py:53 ipam/forms/model_forms.py:50 -#: vpn/forms/filtersets.py:224 vpn/forms/model_forms.py:397 +#: netbox/ipam/forms/filtersets.py:53 netbox/ipam/forms/model_forms.py:50 +#: netbox/vpn/forms/filtersets.py:224 netbox/vpn/forms/model_forms.py:397 msgid "Import targets" msgstr "" -#: ipam/forms/filtersets.py:58 ipam/forms/model_forms.py:55 -#: vpn/forms/filtersets.py:229 vpn/forms/model_forms.py:402 +#: netbox/ipam/forms/filtersets.py:58 netbox/ipam/forms/model_forms.py:55 +#: netbox/vpn/forms/filtersets.py:229 netbox/vpn/forms/model_forms.py:402 msgid "Export targets" msgstr "" -#: ipam/forms/filtersets.py:73 +#: netbox/ipam/forms/filtersets.py:73 msgid "Imported by VRF" msgstr "" -#: ipam/forms/filtersets.py:78 +#: netbox/ipam/forms/filtersets.py:78 msgid "Exported by VRF" msgstr "" -#: ipam/forms/filtersets.py:87 ipam/tables/ip.py:89 templates/ipam/rir.html:30 +#: netbox/ipam/forms/filtersets.py:87 netbox/ipam/tables/ip.py:89 +#: netbox/templates/ipam/rir.html:30 msgid "Private" msgstr "" -#: ipam/forms/filtersets.py:105 ipam/forms/filtersets.py:191 -#: ipam/forms/filtersets.py:272 ipam/forms/filtersets.py:326 +#: netbox/ipam/forms/filtersets.py:105 netbox/ipam/forms/filtersets.py:191 +#: netbox/ipam/forms/filtersets.py:272 netbox/ipam/forms/filtersets.py:326 msgid "Address family" msgstr "" -#: ipam/forms/filtersets.py:119 templates/ipam/asnrange.html:25 +#: netbox/ipam/forms/filtersets.py:119 netbox/templates/ipam/asnrange.html:25 msgid "Range" msgstr "" -#: ipam/forms/filtersets.py:128 +#: netbox/ipam/forms/filtersets.py:128 msgid "Start" msgstr "" -#: ipam/forms/filtersets.py:132 +#: netbox/ipam/forms/filtersets.py:132 msgid "End" msgstr "" -#: ipam/forms/filtersets.py:186 +#: netbox/ipam/forms/filtersets.py:186 msgid "Search within" msgstr "" -#: ipam/forms/filtersets.py:207 ipam/forms/filtersets.py:342 +#: netbox/ipam/forms/filtersets.py:207 netbox/ipam/forms/filtersets.py:342 msgid "Present in VRF" msgstr "" -#: ipam/forms/filtersets.py:311 +#: netbox/ipam/forms/filtersets.py:311 msgid "Device/VM" msgstr "" -#: ipam/forms/filtersets.py:321 +#: netbox/ipam/forms/filtersets.py:321 msgid "Parent Prefix" msgstr "" -#: ipam/forms/filtersets.py:347 +#: netbox/ipam/forms/filtersets.py:347 msgid "Assigned Device" msgstr "" -#: ipam/forms/filtersets.py:352 +#: netbox/ipam/forms/filtersets.py:352 msgid "Assigned VM" msgstr "" -#: ipam/forms/filtersets.py:366 +#: netbox/ipam/forms/filtersets.py:366 msgid "Assigned to an interface" msgstr "" -#: ipam/forms/filtersets.py:373 templates/ipam/ipaddress.html:51 +#: netbox/ipam/forms/filtersets.py:373 netbox/templates/ipam/ipaddress.html:51 msgid "DNS Name" msgstr "" -#: ipam/forms/filtersets.py:416 ipam/models/vlans.py:235 ipam/tables/ip.py:176 -#: ipam/tables/vlans.py:82 ipam/views.py:971 netbox/navigation/menu.py:193 -#: netbox/navigation/menu.py:195 +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 msgid "VLANs" msgstr "" -#: ipam/forms/filtersets.py:457 +#: netbox/ipam/forms/filtersets.py:457 msgid "Contains VLAN ID" msgstr "" -#: ipam/forms/filtersets.py:513 ipam/models/vlans.py:176 -#: templates/ipam/vlan.html:31 +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 msgid "VLAN ID" msgstr "" -#: ipam/forms/filtersets.py:556 ipam/forms/model_forms.py:320 -#: ipam/forms/model_forms.py:713 ipam/forms/model_forms.py:739 -#: ipam/tables/vlans.py:195 templates/virtualization/virtualdisk.html:21 -#: templates/virtualization/virtualmachine.html:12 -#: templates/virtualization/vminterface.html:21 -#: templates/vpn/tunneltermination.html:25 -#: virtualization/forms/filtersets.py:197 -#: virtualization/forms/filtersets.py:242 -#: virtualization/forms/model_forms.py:220 -#: virtualization/tables/virtualmachines.py:135 -#: virtualization/tables/virtualmachines.py:190 vpn/choices.py:45 -#: vpn/forms/filtersets.py:293 vpn/forms/model_forms.py:160 -#: vpn/forms/model_forms.py:171 vpn/forms/model_forms.py:273 -#: vpn/forms/model_forms.py:454 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 +#: netbox/templates/virtualization/virtualdisk.html:21 +#: netbox/templates/virtualization/virtualmachine.html:12 +#: netbox/templates/virtualization/vminterface.html:21 +#: netbox/templates/vpn/tunneltermination.html:25 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 +#: netbox/virtualization/forms/model_forms.py:220 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 netbox/vpn/choices.py:45 +#: netbox/vpn/forms/filtersets.py:293 netbox/vpn/forms/model_forms.py:160 +#: netbox/vpn/forms/model_forms.py:171 netbox/vpn/forms/model_forms.py:273 +#: netbox/vpn/forms/model_forms.py:454 msgid "Virtual Machine" msgstr "" -#: ipam/forms/model_forms.py:80 templates/ipam/routetarget.html:10 +#: netbox/ipam/forms/model_forms.py:80 +#: netbox/templates/ipam/routetarget.html:10 msgid "Route Target" msgstr "" -#: ipam/forms/model_forms.py:114 ipam/tables/ip.py:117 -#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:38 +#: netbox/ipam/forms/model_forms.py:114 netbox/ipam/tables/ip.py:117 +#: netbox/templates/ipam/aggregate.html:11 netbox/templates/ipam/prefix.html:38 msgid "Aggregate" msgstr "" -#: ipam/forms/model_forms.py:135 templates/ipam/asnrange.html:12 +#: netbox/ipam/forms/model_forms.py:135 netbox/templates/ipam/asnrange.html:12 msgid "ASN Range" msgstr "" -#: ipam/forms/model_forms.py:231 +#: netbox/ipam/forms/model_forms.py:231 msgid "Site/VLAN Assignment" msgstr "" -#: ipam/forms/model_forms.py:259 templates/ipam/iprange.html:10 +#: netbox/ipam/forms/model_forms.py:259 netbox/templates/ipam/iprange.html:10 msgid "IP Range" msgstr "" -#: ipam/forms/model_forms.py:295 ipam/forms/model_forms.py:321 -#: ipam/forms/model_forms.py:473 templates/ipam/fhrpgroup.html:19 +#: netbox/ipam/forms/model_forms.py:295 netbox/ipam/forms/model_forms.py:321 +#: netbox/ipam/forms/model_forms.py:473 netbox/templates/ipam/fhrpgroup.html:19 msgid "FHRP Group" msgstr "" -#: ipam/forms/model_forms.py:310 +#: netbox/ipam/forms/model_forms.py:310 msgid "Make this the primary IP for the device/VM" msgstr "" -#: ipam/forms/model_forms.py:325 +#: netbox/ipam/forms/model_forms.py:325 msgid "NAT IP (Inside)" msgstr "" -#: ipam/forms/model_forms.py:384 +#: netbox/ipam/forms/model_forms.py:384 msgid "An IP address can only be assigned to a single object." msgstr "" -#: ipam/forms/model_forms.py:390 ipam/models/ip.py:897 +#: netbox/ipam/forms/model_forms.py:390 netbox/ipam/models/ip.py:897 msgid "" "Cannot reassign IP address while it is designated as the primary IP for the " "parent object" msgstr "" -#: ipam/forms/model_forms.py:400 +#: netbox/ipam/forms/model_forms.py:400 msgid "" "Only IP addresses assigned to an interface can be designated as primary IPs." msgstr "" -#: ipam/forms/model_forms.py:475 +#: netbox/ipam/forms/model_forms.py:475 msgid "Virtual IP Address" msgstr "" -#: ipam/forms/model_forms.py:560 +#: netbox/ipam/forms/model_forms.py:560 msgid "Assignment already exists" msgstr "" -#: ipam/forms/model_forms.py:569 templates/ipam/vlangroup.html:42 +#: netbox/ipam/forms/model_forms.py:569 netbox/templates/ipam/vlangroup.html:42 msgid "VLAN IDs" msgstr "" -#: ipam/forms/model_forms.py:587 +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "" -#: ipam/forms/model_forms.py:664 ipam/forms/model_forms.py:696 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "" -#: ipam/forms/model_forms.py:669 templates/ipam/servicetemplate.html:12 +#: netbox/ipam/forms/model_forms.py:669 +#: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "" -#: ipam/forms/model_forms.py:716 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "" -#: ipam/forms/model_forms.py:717 ipam/forms/model_forms.py:745 -#: templates/ipam/service.html:21 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 +#: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "" -#: ipam/forms/model_forms.py:730 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "" -#: ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "" -#: ipam/forms/model_forms.py:743 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "" -#: ipam/forms/model_forms.py:773 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" -#: ipam/models/asns.py:34 +#: netbox/ipam/models/asns.py:34 msgid "start" msgstr "" -#: ipam/models/asns.py:51 +#: netbox/ipam/models/asns.py:51 msgid "ASN range" msgstr "" -#: ipam/models/asns.py:52 +#: netbox/ipam/models/asns.py:52 msgid "ASN ranges" msgstr "" -#: ipam/models/asns.py:72 +#: netbox/ipam/models/asns.py:72 #, python-brace-format msgid "Starting ASN ({start}) must be lower than ending ASN ({end})." msgstr "" -#: ipam/models/asns.py:104 +#: netbox/ipam/models/asns.py:104 msgid "Regional Internet Registry responsible for this AS number space" msgstr "" -#: ipam/models/asns.py:109 +#: netbox/ipam/models/asns.py:109 msgid "16- or 32-bit autonomous system number" msgstr "" -#: ipam/models/fhrp.py:22 +#: netbox/ipam/models/fhrp.py:22 msgid "group ID" msgstr "" -#: ipam/models/fhrp.py:30 ipam/models/services.py:22 +#: netbox/ipam/models/fhrp.py:30 netbox/ipam/models/services.py:22 msgid "protocol" msgstr "" -#: ipam/models/fhrp.py:38 wireless/models.py:28 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "" -#: ipam/models/fhrp.py:43 +#: netbox/ipam/models/fhrp.py:43 msgid "authentication key" msgstr "" -#: ipam/models/fhrp.py:56 +#: netbox/ipam/models/fhrp.py:56 msgid "FHRP group" msgstr "" -#: ipam/models/fhrp.py:57 +#: netbox/ipam/models/fhrp.py:57 msgid "FHRP groups" msgstr "" -#: ipam/models/fhrp.py:113 +#: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "" -#: ipam/models/fhrp.py:114 +#: netbox/ipam/models/fhrp.py:114 msgid "FHRP group assignments" msgstr "" -#: ipam/models/ip.py:65 +#: netbox/ipam/models/ip.py:65 msgid "private" msgstr "" -#: ipam/models/ip.py:66 +#: netbox/ipam/models/ip.py:66 msgid "IP space managed by this RIR is considered private" msgstr "" -#: ipam/models/ip.py:72 netbox/navigation/menu.py:182 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "" -#: ipam/models/ip.py:84 +#: netbox/ipam/models/ip.py:84 msgid "IPv4 or IPv6 network" msgstr "" -#: ipam/models/ip.py:91 +#: netbox/ipam/models/ip.py:91 msgid "Regional Internet Registry responsible for this IP space" msgstr "" -#: ipam/models/ip.py:101 +#: netbox/ipam/models/ip.py:101 msgid "date added" msgstr "" -#: ipam/models/ip.py:115 +#: netbox/ipam/models/ip.py:115 msgid "aggregate" msgstr "" -#: ipam/models/ip.py:116 +#: netbox/ipam/models/ip.py:116 msgid "aggregates" msgstr "" -#: ipam/models/ip.py:132 +#: netbox/ipam/models/ip.py:132 msgid "Cannot create aggregate with /0 mask." msgstr "" -#: ipam/models/ip.py:144 +#: netbox/ipam/models/ip.py:144 #, python-brace-format msgid "" "Aggregates cannot overlap. {prefix} is already covered by an existing " "aggregate ({aggregate})." msgstr "" -#: ipam/models/ip.py:158 +#: netbox/ipam/models/ip.py:158 #, python-brace-format msgid "" "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " "({aggregate})." msgstr "" -#: ipam/models/ip.py:200 ipam/models/ip.py:737 vpn/models/tunnels.py:114 +#: netbox/ipam/models/ip.py:200 netbox/ipam/models/ip.py:737 +#: netbox/vpn/models/tunnels.py:114 msgid "role" msgstr "" -#: ipam/models/ip.py:201 +#: netbox/ipam/models/ip.py:201 msgid "roles" msgstr "" -#: ipam/models/ip.py:217 ipam/models/ip.py:293 +#: netbox/ipam/models/ip.py:217 netbox/ipam/models/ip.py:293 msgid "prefix" msgstr "" -#: ipam/models/ip.py:218 +#: netbox/ipam/models/ip.py:218 msgid "IPv4 or IPv6 network with mask" msgstr "" -#: ipam/models/ip.py:254 +#: netbox/ipam/models/ip.py:254 msgid "Operational status of this prefix" msgstr "" -#: ipam/models/ip.py:262 +#: netbox/ipam/models/ip.py:262 msgid "The primary function of this prefix" msgstr "" -#: ipam/models/ip.py:265 +#: netbox/ipam/models/ip.py:265 msgid "is a pool" msgstr "" -#: ipam/models/ip.py:267 +#: netbox/ipam/models/ip.py:267 msgid "All IP addresses within this prefix are considered usable" msgstr "" -#: ipam/models/ip.py:270 ipam/models/ip.py:537 +#: netbox/ipam/models/ip.py:270 netbox/ipam/models/ip.py:537 msgid "mark utilized" msgstr "" -#: ipam/models/ip.py:294 +#: netbox/ipam/models/ip.py:294 msgid "prefixes" msgstr "" -#: ipam/models/ip.py:317 +#: netbox/ipam/models/ip.py:317 msgid "Cannot create prefix with /0 mask." msgstr "" -#: ipam/models/ip.py:324 ipam/models/ip.py:874 +#: netbox/ipam/models/ip.py:324 netbox/ipam/models/ip.py:874 #, python-brace-format msgid "VRF {vrf}" msgstr "" -#: ipam/models/ip.py:324 ipam/models/ip.py:874 +#: netbox/ipam/models/ip.py:324 netbox/ipam/models/ip.py:874 msgid "global table" msgstr "" -#: ipam/models/ip.py:326 +#: netbox/ipam/models/ip.py:326 #, python-brace-format msgid "Duplicate prefix found in {table}: {prefix}" msgstr "" -#: ipam/models/ip.py:495 +#: netbox/ipam/models/ip.py:495 msgid "start address" msgstr "" -#: ipam/models/ip.py:496 ipam/models/ip.py:500 ipam/models/ip.py:712 +#: netbox/ipam/models/ip.py:496 netbox/ipam/models/ip.py:500 +#: netbox/ipam/models/ip.py:712 msgid "IPv4 or IPv6 address (with mask)" msgstr "" -#: ipam/models/ip.py:499 +#: netbox/ipam/models/ip.py:499 msgid "end address" msgstr "" -#: ipam/models/ip.py:526 +#: netbox/ipam/models/ip.py:526 msgid "Operational status of this range" msgstr "" -#: ipam/models/ip.py:534 +#: netbox/ipam/models/ip.py:534 msgid "The primary function of this range" msgstr "" -#: ipam/models/ip.py:548 +#: netbox/ipam/models/ip.py:548 msgid "IP range" msgstr "" -#: ipam/models/ip.py:549 +#: netbox/ipam/models/ip.py:549 msgid "IP ranges" msgstr "" -#: ipam/models/ip.py:565 +#: netbox/ipam/models/ip.py:565 msgid "Starting and ending IP address versions must match" msgstr "" -#: ipam/models/ip.py:571 +#: netbox/ipam/models/ip.py:571 msgid "Starting and ending IP address masks must match" msgstr "" -#: ipam/models/ip.py:578 +#: netbox/ipam/models/ip.py:578 #, python-brace-format msgid "" "Ending address must be greater than the starting address ({start_address})" msgstr "" -#: ipam/models/ip.py:590 +#: netbox/ipam/models/ip.py:590 #, python-brace-format msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" msgstr "" -#: ipam/models/ip.py:599 +#: netbox/ipam/models/ip.py:599 #, python-brace-format msgid "Defined range exceeds maximum supported size ({max_size})" msgstr "" -#: ipam/models/ip.py:711 tenancy/models/contacts.py:82 +#: netbox/ipam/models/ip.py:711 netbox/tenancy/models/contacts.py:82 msgid "address" msgstr "" -#: ipam/models/ip.py:734 +#: netbox/ipam/models/ip.py:734 msgid "The operational status of this IP" msgstr "" -#: ipam/models/ip.py:741 +#: netbox/ipam/models/ip.py:741 msgid "The functional role of this IP" msgstr "" -#: ipam/models/ip.py:765 templates/ipam/ipaddress.html:72 +#: netbox/ipam/models/ip.py:765 netbox/templates/ipam/ipaddress.html:72 msgid "NAT (inside)" msgstr "" -#: ipam/models/ip.py:766 +#: netbox/ipam/models/ip.py:766 msgid "The IP for which this address is the \"outside\" IP" msgstr "" -#: ipam/models/ip.py:773 +#: netbox/ipam/models/ip.py:773 msgid "Hostname or FQDN (not case-sensitive)" msgstr "" -#: ipam/models/ip.py:789 ipam/models/services.py:94 +#: netbox/ipam/models/ip.py:789 netbox/ipam/models/services.py:94 msgid "IP addresses" msgstr "" -#: ipam/models/ip.py:845 +#: netbox/ipam/models/ip.py:845 msgid "Cannot create IP address with /0 mask." msgstr "" -#: ipam/models/ip.py:851 +#: netbox/ipam/models/ip.py:851 #, python-brace-format msgid "{ip} is a network ID, which may not be assigned to an interface." msgstr "" -#: ipam/models/ip.py:862 +#: netbox/ipam/models/ip.py:862 #, python-brace-format msgid "{ip} is a broadcast address, which may not be assigned to an interface." msgstr "" -#: ipam/models/ip.py:876 +#: netbox/ipam/models/ip.py:876 #, python-brace-format msgid "Duplicate IP address found in {table}: {ipaddress}" msgstr "" -#: ipam/models/ip.py:903 +#: netbox/ipam/models/ip.py:903 msgid "Only IPv6 addresses can be assigned SLAAC status" msgstr "" -#: ipam/models/services.py:33 +#: netbox/ipam/models/services.py:33 msgid "port numbers" msgstr "" -#: ipam/models/services.py:59 +#: netbox/ipam/models/services.py:59 msgid "service template" msgstr "" -#: ipam/models/services.py:60 +#: netbox/ipam/models/services.py:60 msgid "service templates" msgstr "" -#: ipam/models/services.py:95 +#: netbox/ipam/models/services.py:95 msgid "The specific IP addresses (if any) to which this service is bound" msgstr "" -#: ipam/models/services.py:102 +#: netbox/ipam/models/services.py:102 msgid "service" msgstr "" -#: ipam/models/services.py:103 +#: netbox/ipam/models/services.py:103 msgid "services" msgstr "" -#: ipam/models/services.py:117 +#: netbox/ipam/models/services.py:117 msgid "" "A service cannot be associated with both a device and a virtual machine." msgstr "" -#: ipam/models/services.py:119 +#: netbox/ipam/models/services.py:119 msgid "A service must be associated with either a device or a virtual machine." msgstr "" -#: ipam/models/vlans.py:85 +#: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "" -#: ipam/models/vlans.py:95 +#: netbox/ipam/models/vlans.py:95 msgid "Cannot set scope_type without scope_id." msgstr "" -#: ipam/models/vlans.py:97 +#: netbox/ipam/models/vlans.py:97 msgid "Cannot set scope_id without scope_type." msgstr "" -#: ipam/models/vlans.py:101 +#: netbox/ipam/models/vlans.py:101 msgid "Ranges cannot overlap." msgstr "" -#: ipam/models/vlans.py:106 +#: netbox/ipam/models/vlans.py:106 #, python-brace-format msgid "" "Maximum child VID must be greater than or equal to minimum child VID " "({value})" msgstr "" -#: ipam/models/vlans.py:165 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "" -#: ipam/models/vlans.py:173 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "" -#: ipam/models/vlans.py:181 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "" -#: ipam/models/vlans.py:199 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "" -#: ipam/models/vlans.py:207 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "" -#: ipam/models/vlans.py:250 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " "site {site}." msgstr "" -#: ipam/models/vlans.py:259 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format msgid "VID must be in ranges {ranges} for VLANs in group {group}" msgstr "" -#: ipam/models/vrfs.py:30 +#: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" msgstr "" -#: ipam/models/vrfs.py:31 +#: netbox/ipam/models/vrfs.py:31 msgid "Unique route distinguisher (as defined in RFC 4364)" msgstr "" -#: ipam/models/vrfs.py:42 +#: netbox/ipam/models/vrfs.py:42 msgid "enforce unique space" msgstr "" -#: ipam/models/vrfs.py:43 +#: netbox/ipam/models/vrfs.py:43 msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "" -#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:186 -#: netbox/navigation/menu.py:188 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "" -#: ipam/models/vrfs.py:82 +#: netbox/ipam/models/vrfs.py:82 msgid "Route target value (formatted in accordance with RFC 4360)" msgstr "" -#: ipam/models/vrfs.py:94 +#: netbox/ipam/models/vrfs.py:94 msgid "route target" msgstr "" -#: ipam/models/vrfs.py:95 +#: netbox/ipam/models/vrfs.py:95 msgid "route targets" msgstr "" -#: ipam/tables/asn.py:52 +#: netbox/ipam/tables/asn.py:52 msgid "ASDOT" msgstr "" -#: ipam/tables/asn.py:57 +#: netbox/ipam/tables/asn.py:57 msgid "Site Count" msgstr "" -#: ipam/tables/asn.py:62 +#: netbox/ipam/tables/asn.py:62 msgid "Provider Count" msgstr "" -#: ipam/tables/ip.py:95 netbox/navigation/menu.py:179 -#: netbox/navigation/menu.py:181 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "" -#: ipam/tables/ip.py:125 +#: netbox/ipam/tables/ip.py:125 msgid "Added" msgstr "" -#: ipam/tables/ip.py:128 ipam/tables/ip.py:166 ipam/tables/vlans.py:142 -#: ipam/views.py:346 netbox/navigation/menu.py:165 -#: netbox/navigation/menu.py:167 templates/ipam/vlan.html:84 +#: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 +#: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "" -#: ipam/tables/ip.py:131 ipam/tables/ip.py:270 ipam/tables/ip.py:324 -#: ipam/tables/vlans.py:86 templates/dcim/device.html:260 -#: templates/ipam/aggregate.html:24 templates/ipam/iprange.html:29 -#: templates/ipam/prefix.html:106 +#: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 +#: netbox/templates/dcim/device.html:260 +#: netbox/templates/ipam/aggregate.html:24 +#: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "" -#: ipam/tables/ip.py:171 netbox/navigation/menu.py:161 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "" -#: ipam/tables/ip.py:221 +#: netbox/ipam/tables/ip.py:221 msgid "Prefix (Flat)" msgstr "" -#: ipam/tables/ip.py:225 +#: netbox/ipam/tables/ip.py:225 msgid "Depth" msgstr "" -#: ipam/tables/ip.py:262 +#: netbox/ipam/tables/ip.py:262 msgid "Pool" msgstr "" -#: ipam/tables/ip.py:266 ipam/tables/ip.py:320 +#: netbox/ipam/tables/ip.py:266 netbox/ipam/tables/ip.py:320 msgid "Marked Utilized" msgstr "" -#: ipam/tables/ip.py:304 +#: netbox/ipam/tables/ip.py:304 msgid "Start address" msgstr "" -#: ipam/tables/ip.py:383 +#: netbox/ipam/tables/ip.py:383 msgid "NAT (Inside)" msgstr "" -#: ipam/tables/ip.py:388 +#: netbox/ipam/tables/ip.py:388 msgid "NAT (Outside)" msgstr "" -#: ipam/tables/ip.py:393 +#: netbox/ipam/tables/ip.py:393 msgid "Assigned" msgstr "" -#: ipam/tables/ip.py:429 templates/vpn/l2vpntermination.html:16 -#: vpn/forms/filtersets.py:240 +#: netbox/ipam/tables/ip.py:429 netbox/templates/vpn/l2vpntermination.html:16 +#: netbox/vpn/forms/filtersets.py:240 msgid "Assigned Object" msgstr "" -#: ipam/tables/vlans.py:68 +#: netbox/ipam/tables/vlans.py:68 msgid "Scope Type" msgstr "" -#: ipam/tables/vlans.py:76 +#: netbox/ipam/tables/vlans.py:76 msgid "VID Ranges" msgstr "" -#: ipam/tables/vlans.py:111 ipam/tables/vlans.py:214 -#: templates/dcim/inc/interface_vlans_table.html:4 +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 +#: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "" -#: ipam/tables/vrfs.py:30 +#: netbox/ipam/tables/vrfs.py:30 msgid "RD" msgstr "" -#: ipam/tables/vrfs.py:33 +#: netbox/ipam/tables/vrfs.py:33 msgid "Unique" msgstr "" -#: ipam/tables/vrfs.py:37 vpn/tables/l2vpn.py:27 +#: netbox/ipam/tables/vrfs.py:37 netbox/vpn/tables/l2vpn.py:27 msgid "Import Targets" msgstr "" -#: ipam/tables/vrfs.py:42 vpn/tables/l2vpn.py:32 +#: netbox/ipam/tables/vrfs.py:42 netbox/vpn/tables/l2vpn.py:32 msgid "Export Targets" msgstr "" -#: ipam/validators.py:9 +#: netbox/ipam/validators.py:9 #, python-brace-format msgid "{prefix} is not a valid prefix. Did you mean {suggested}?" msgstr "" -#: ipam/validators.py:16 +#: netbox/ipam/validators.py:16 #, python-format msgid "The prefix length must be less than or equal to %(limit_value)s." msgstr "" -#: ipam/validators.py:24 +#: netbox/ipam/validators.py:24 #, python-format msgid "The prefix length must be greater than or equal to %(limit_value)s." msgstr "" -#: ipam/validators.py:33 +#: netbox/ipam/validators.py:33 msgid "" "Only alphanumeric characters, asterisks, hyphens, periods, and underscores " "are allowed in DNS names" msgstr "" -#: ipam/views.py:533 +#: netbox/ipam/views.py:533 msgid "Child Prefixes" msgstr "" -#: ipam/views.py:569 +#: netbox/ipam/views.py:569 msgid "Child Ranges" msgstr "" -#: ipam/views.py:898 +#: netbox/ipam/views.py:898 msgid "Related IPs" msgstr "" -#: ipam/views.py:1127 +#: netbox/ipam/views.py:1127 msgid "Device Interfaces" msgstr "" -#: ipam/views.py:1145 +#: netbox/ipam/views.py:1145 msgid "VM Interfaces" msgstr "" -#: netbox/api/fields.py:65 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "" -#: netbox/api/fields.py:70 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." msgstr "" -#: netbox/api/fields.py:91 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "" -#: netbox/api/fields.py:104 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "" -#: netbox/api/fields.py:105 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" -#: netbox/api/fields.py:167 +#: netbox/netbox/api/fields.py:167 msgid "Ranges must be specified in the form (lower, upper)." msgstr "" -#: netbox/api/fields.py:169 +#: netbox/netbox/api/fields.py:169 msgid "Range boundaries must be defined as integers." msgstr "" -#: netbox/api/serializers/fields.py:39 +#: netbox/netbox/api/serializers/fields.py:39 #, python-brace-format msgid "{class_name} must implement get_view_name()" msgstr "" -#: netbox/authentication/__init__.py:138 +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "" -#: netbox/choices.py:49 +#: netbox/netbox/choices.py:49 msgid "Dark Red" msgstr "" -#: netbox/choices.py:52 +#: netbox/netbox/choices.py:52 msgid "Rose" msgstr "" -#: netbox/choices.py:53 +#: netbox/netbox/choices.py:53 msgid "Fuchsia" msgstr "" -#: netbox/choices.py:55 +#: netbox/netbox/choices.py:55 msgid "Dark Purple" msgstr "" -#: netbox/choices.py:58 +#: netbox/netbox/choices.py:58 msgid "Light Blue" msgstr "" -#: netbox/choices.py:61 +#: netbox/netbox/choices.py:61 msgid "Aqua" msgstr "" -#: netbox/choices.py:62 +#: netbox/netbox/choices.py:62 msgid "Dark Green" msgstr "" -#: netbox/choices.py:64 +#: netbox/netbox/choices.py:64 msgid "Light Green" msgstr "" -#: netbox/choices.py:65 +#: netbox/netbox/choices.py:65 msgid "Lime" msgstr "" -#: netbox/choices.py:67 +#: netbox/netbox/choices.py:67 msgid "Amber" msgstr "" -#: netbox/choices.py:69 +#: netbox/netbox/choices.py:69 msgid "Dark Orange" msgstr "" -#: netbox/choices.py:70 +#: netbox/netbox/choices.py:70 msgid "Brown" msgstr "" -#: netbox/choices.py:71 +#: netbox/netbox/choices.py:71 msgid "Light Grey" msgstr "" -#: netbox/choices.py:72 +#: netbox/netbox/choices.py:72 msgid "Grey" msgstr "" -#: netbox/choices.py:73 +#: netbox/netbox/choices.py:73 msgid "Dark Grey" msgstr "" -#: netbox/choices.py:128 +#: netbox/netbox/choices.py:128 msgid "Direct" msgstr "" -#: netbox/choices.py:129 +#: netbox/netbox/choices.py:129 msgid "Upload" msgstr "" -#: netbox/choices.py:141 netbox/choices.py:155 +#: netbox/netbox/choices.py:141 netbox/netbox/choices.py:155 msgid "Auto-detect" msgstr "" -#: netbox/choices.py:156 +#: netbox/netbox/choices.py:156 msgid "Comma" msgstr "" -#: netbox/choices.py:157 +#: netbox/netbox/choices.py:157 msgid "Semicolon" msgstr "" -#: netbox/choices.py:158 +#: netbox/netbox/choices.py:158 msgid "Tab" msgstr "" -#: netbox/config/__init__.py:67 +#: netbox/netbox/config/__init__.py:67 #, python-brace-format msgid "Invalid configuration parameter: {item}" msgstr "" -#: netbox/config/parameters.py:22 templates/core/inc/config_data.html:62 +#: netbox/netbox/config/parameters.py:22 +#: netbox/templates/core/inc/config_data.html:62 msgid "Login banner" msgstr "" -#: netbox/config/parameters.py:24 +#: netbox/netbox/config/parameters.py:24 msgid "Additional content to display on the login page" msgstr "" -#: netbox/config/parameters.py:33 templates/core/inc/config_data.html:66 +#: netbox/netbox/config/parameters.py:33 +#: netbox/templates/core/inc/config_data.html:66 msgid "Maintenance banner" msgstr "" -#: netbox/config/parameters.py:35 +#: netbox/netbox/config/parameters.py:35 msgid "Additional content to display when in maintenance mode" msgstr "" -#: netbox/config/parameters.py:44 templates/core/inc/config_data.html:70 +#: netbox/netbox/config/parameters.py:44 +#: netbox/templates/core/inc/config_data.html:70 msgid "Top banner" msgstr "" -#: netbox/config/parameters.py:46 +#: netbox/netbox/config/parameters.py:46 msgid "Additional content to display at the top of every page" msgstr "" -#: netbox/config/parameters.py:55 templates/core/inc/config_data.html:74 +#: netbox/netbox/config/parameters.py:55 +#: netbox/templates/core/inc/config_data.html:74 msgid "Bottom banner" msgstr "" -#: netbox/config/parameters.py:57 +#: netbox/netbox/config/parameters.py:57 msgid "Additional content to display at the bottom of every page" msgstr "" -#: netbox/config/parameters.py:68 +#: netbox/netbox/config/parameters.py:68 msgid "Globally unique IP space" msgstr "" -#: netbox/config/parameters.py:70 +#: netbox/netbox/config/parameters.py:70 msgid "Enforce unique IP addressing within the global table" msgstr "" -#: netbox/config/parameters.py:75 templates/core/inc/config_data.html:44 +#: netbox/netbox/config/parameters.py:75 +#: netbox/templates/core/inc/config_data.html:44 msgid "Prefer IPv4" msgstr "" -#: netbox/config/parameters.py:77 +#: netbox/netbox/config/parameters.py:77 msgid "Prefer IPv4 addresses over IPv6" msgstr "" -#: netbox/config/parameters.py:84 +#: netbox/netbox/config/parameters.py:84 msgid "Rack unit height" msgstr "" -#: netbox/config/parameters.py:86 +#: netbox/netbox/config/parameters.py:86 msgid "Default unit height for rendered rack elevations" msgstr "" -#: netbox/config/parameters.py:91 +#: netbox/netbox/config/parameters.py:91 msgid "Rack unit width" msgstr "" -#: netbox/config/parameters.py:93 +#: netbox/netbox/config/parameters.py:93 msgid "Default unit width for rendered rack elevations" msgstr "" -#: netbox/config/parameters.py:100 +#: netbox/netbox/config/parameters.py:100 msgid "Powerfeed voltage" msgstr "" -#: netbox/config/parameters.py:102 +#: netbox/netbox/config/parameters.py:102 msgid "Default voltage for powerfeeds" msgstr "" -#: netbox/config/parameters.py:107 +#: netbox/netbox/config/parameters.py:107 msgid "Powerfeed amperage" msgstr "" -#: netbox/config/parameters.py:109 +#: netbox/netbox/config/parameters.py:109 msgid "Default amperage for powerfeeds" msgstr "" -#: netbox/config/parameters.py:114 +#: netbox/netbox/config/parameters.py:114 msgid "Powerfeed max utilization" msgstr "" -#: netbox/config/parameters.py:116 +#: netbox/netbox/config/parameters.py:116 msgid "Default max utilization for powerfeeds" msgstr "" -#: netbox/config/parameters.py:123 templates/core/inc/config_data.html:53 +#: netbox/netbox/config/parameters.py:123 +#: netbox/templates/core/inc/config_data.html:53 msgid "Allowed URL schemes" msgstr "" -#: netbox/config/parameters.py:128 +#: netbox/netbox/config/parameters.py:128 msgid "Permitted schemes for URLs in user-provided content" msgstr "" -#: netbox/config/parameters.py:136 +#: netbox/netbox/config/parameters.py:136 msgid "Default page size" msgstr "" -#: netbox/config/parameters.py:142 +#: netbox/netbox/config/parameters.py:142 msgid "Maximum page size" msgstr "" -#: netbox/config/parameters.py:150 templates/core/inc/config_data.html:96 +#: netbox/netbox/config/parameters.py:150 +#: netbox/templates/core/inc/config_data.html:96 msgid "Custom validators" msgstr "" -#: netbox/config/parameters.py:152 +#: netbox/netbox/config/parameters.py:152 msgid "Custom validation rules (JSON)" msgstr "" -#: netbox/config/parameters.py:160 templates/core/inc/config_data.html:104 +#: netbox/netbox/config/parameters.py:160 +#: netbox/templates/core/inc/config_data.html:104 msgid "Protection rules" msgstr "" -#: netbox/config/parameters.py:162 +#: netbox/netbox/config/parameters.py:162 msgid "Deletion protection rules (JSON)" msgstr "" -#: netbox/config/parameters.py:172 templates/core/inc/config_data.html:117 +#: netbox/netbox/config/parameters.py:172 +#: netbox/templates/core/inc/config_data.html:117 msgid "Default preferences" msgstr "" -#: netbox/config/parameters.py:174 +#: netbox/netbox/config/parameters.py:174 msgid "Default preferences for new users" msgstr "" -#: netbox/config/parameters.py:181 templates/core/inc/config_data.html:129 +#: netbox/netbox/config/parameters.py:181 +#: netbox/templates/core/inc/config_data.html:129 msgid "Maintenance mode" msgstr "" -#: netbox/config/parameters.py:183 +#: netbox/netbox/config/parameters.py:183 msgid "Enable maintenance mode" msgstr "" -#: netbox/config/parameters.py:188 templates/core/inc/config_data.html:133 +#: netbox/netbox/config/parameters.py:188 +#: netbox/templates/core/inc/config_data.html:133 msgid "GraphQL enabled" msgstr "" -#: netbox/config/parameters.py:190 +#: netbox/netbox/config/parameters.py:190 msgid "Enable the GraphQL API" msgstr "" -#: netbox/config/parameters.py:195 templates/core/inc/config_data.html:137 +#: netbox/netbox/config/parameters.py:195 +#: netbox/templates/core/inc/config_data.html:137 msgid "Changelog retention" msgstr "" -#: netbox/config/parameters.py:197 +#: netbox/netbox/config/parameters.py:197 msgid "Days to retain changelog history (set to zero for unlimited)" msgstr "" -#: netbox/config/parameters.py:202 +#: netbox/netbox/config/parameters.py:202 msgid "Job result retention" msgstr "" -#: netbox/config/parameters.py:204 +#: netbox/netbox/config/parameters.py:204 msgid "Days to retain job result history (set to zero for unlimited)" msgstr "" -#: netbox/config/parameters.py:209 templates/core/inc/config_data.html:145 +#: netbox/netbox/config/parameters.py:209 +#: netbox/templates/core/inc/config_data.html:145 msgid "Maps URL" msgstr "" -#: netbox/config/parameters.py:211 +#: netbox/netbox/config/parameters.py:211 msgid "Base URL for mapping geographic locations" msgstr "" -#: netbox/forms/__init__.py:12 +#: netbox/netbox/forms/__init__.py:12 msgid "Partial match" msgstr "" -#: netbox/forms/__init__.py:13 +#: netbox/netbox/forms/__init__.py:13 msgid "Exact match" msgstr "" -#: netbox/forms/__init__.py:14 +#: netbox/netbox/forms/__init__.py:14 msgid "Starts with" msgstr "" -#: netbox/forms/__init__.py:15 +#: netbox/netbox/forms/__init__.py:15 msgid "Ends with" msgstr "" -#: netbox/forms/__init__.py:16 +#: netbox/netbox/forms/__init__.py:16 msgid "Regex" msgstr "" -#: netbox/forms/__init__.py:34 +#: netbox/netbox/forms/__init__.py:34 msgid "Object type(s)" msgstr "" -#: netbox/forms/__init__.py:40 +#: netbox/netbox/forms/__init__.py:40 msgid "Lookup" msgstr "" -#: netbox/forms/base.py:90 +#: netbox/netbox/forms/base.py:90 msgid "" "Tag slugs separated by commas, encased with double quotes (e.g. \"tag1,tag2," "tag3\")" msgstr "" -#: netbox/forms/base.py:120 +#: netbox/netbox/forms/base.py:120 msgid "Add tags" msgstr "" -#: netbox/forms/base.py:125 +#: netbox/netbox/forms/base.py:125 msgid "Remove tags" msgstr "" -#: netbox/forms/mixins.py:38 +#: netbox/netbox/forms/mixins.py:38 #, python-brace-format msgid "{class_name} must specify a model class." msgstr "" -#: netbox/models/features.py:280 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "" -#: netbox/models/features.py:286 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "" -#: netbox/models/features.py:295 +#: netbox/netbox/models/features.py:295 #, python-brace-format msgid "Custom field '{name}' must have a unique value." msgstr "" -#: netbox/models/features.py:302 +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "" -#: netbox/models/features.py:467 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "" -#: netbox/models/features.py:477 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "" -#: netbox/models/features.py:481 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "" -#: netbox/models/features.py:484 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "" -#: netbox/models/features.py:486 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" -#: netbox/models/features.py:489 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "" -#: netbox/models/features.py:583 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "" -#: netbox/navigation/menu.py:11 +#: netbox/netbox/navigation/menu.py:11 msgid "Organization" msgstr "" -#: netbox/navigation/menu.py:19 +#: netbox/netbox/navigation/menu.py:19 msgid "Site Groups" msgstr "" -#: netbox/navigation/menu.py:27 +#: netbox/netbox/navigation/menu.py:27 msgid "Tenant Groups" msgstr "" -#: netbox/navigation/menu.py:34 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "" -#: netbox/navigation/menu.py:35 templates/tenancy/contactrole.html:8 +#: netbox/netbox/navigation/menu.py:35 +#: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "" -#: netbox/navigation/menu.py:36 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "" -#: netbox/navigation/menu.py:50 +#: netbox/netbox/navigation/menu.py:50 msgid "Rack Roles" msgstr "" -#: netbox/navigation/menu.py:54 +#: netbox/netbox/navigation/menu.py:54 msgid "Elevations" msgstr "" -#: netbox/navigation/menu.py:60 netbox/navigation/menu.py:62 +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 msgid "Rack Types" msgstr "" -#: netbox/navigation/menu.py:76 +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "" -#: netbox/navigation/menu.py:80 templates/dcim/device.html:160 -#: templates/dcim/virtualdevicecontext.html:8 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 +#: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "" -#: netbox/navigation/menu.py:88 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "" -#: netbox/navigation/menu.py:92 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "" -#: netbox/navigation/menu.py:104 templates/dcim/inventoryitemrole.html:8 +#: netbox/netbox/navigation/menu.py:104 +#: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "" -#: netbox/navigation/menu.py:111 netbox/navigation/menu.py:115 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "" -#: netbox/navigation/menu.py:117 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "" -#: netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "" -#: netbox/navigation/menu.py:121 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "" -#: netbox/navigation/menu.py:126 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "" -#: netbox/navigation/menu.py:131 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "" -#: netbox/navigation/menu.py:147 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "" -#: netbox/navigation/menu.py:168 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "" -#: netbox/navigation/menu.py:174 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "" -#: netbox/navigation/menu.py:196 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "" -#: netbox/navigation/menu.py:203 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "" -#: netbox/navigation/menu.py:204 templates/dcim/device.html:302 -#: templates/ipam/ipaddress.html:118 -#: templates/virtualization/virtualmachine.html:154 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 +#: netbox/templates/ipam/ipaddress.html:118 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "" -#: netbox/navigation/menu.py:211 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "" -#: netbox/navigation/menu.py:215 netbox/navigation/menu.py:217 -#: vpn/tables/tunnels.py:24 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 +#: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "" -#: netbox/navigation/menu.py:218 templates/vpn/tunnelgroup.html:8 +#: netbox/netbox/navigation/menu.py:218 netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "" -#: netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "" -#: netbox/navigation/menu.py:223 netbox/navigation/menu.py:225 -#: vpn/models/l2vpn.py:64 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 +#: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "" -#: netbox/navigation/menu.py:226 templates/vpn/l2vpn.html:56 -#: templates/vpn/tunnel.html:72 vpn/tables/tunnels.py:58 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 +#: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "" -#: netbox/navigation/menu.py:232 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "" -#: netbox/navigation/menu.py:233 templates/vpn/ikeproposal.html:41 +#: netbox/netbox/navigation/menu.py:233 +#: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "" -#: netbox/navigation/menu.py:234 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "" -#: netbox/navigation/menu.py:235 templates/vpn/ipsecproposal.html:37 +#: netbox/netbox/navigation/menu.py:235 +#: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "" -#: netbox/navigation/menu.py:236 templates/vpn/ikepolicy.html:38 -#: templates/vpn/ipsecpolicy.html:25 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "" -#: netbox/navigation/menu.py:243 templates/dcim/device_edit.html:78 +#: netbox/netbox/navigation/menu.py:243 +#: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "" -#: netbox/navigation/menu.py:251 -#: templates/virtualization/virtualmachine.html:174 -#: templates/virtualization/virtualmachine/base.html:32 -#: templates/virtualization/virtualmachine_list.html:21 -#: virtualization/tables/virtualmachines.py:104 virtualization/views.py:388 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine/base.html:32 +#: netbox/templates/virtualization/virtualmachine_list.html:21 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "" -#: netbox/navigation/menu.py:258 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "" -#: netbox/navigation/menu.py:259 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "" -#: netbox/navigation/menu.py:273 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "" -#: netbox/navigation/menu.py:274 +#: netbox/netbox/navigation/menu.py:274 msgid "Circuit Groups" msgstr "" -#: netbox/navigation/menu.py:275 templates/circuits/circuit.html:66 +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 msgid "Group Assignments" msgstr "" -#: netbox/navigation/menu.py:276 +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "" -#: netbox/navigation/menu.py:280 netbox/navigation/menu.py:282 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "" -#: netbox/navigation/menu.py:283 templates/circuits/provider.html:51 +#: netbox/netbox/navigation/menu.py:283 +#: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "" -#: netbox/navigation/menu.py:284 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "" -#: netbox/navigation/menu.py:298 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "" -#: netbox/navigation/menu.py:309 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "" -#: netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "" -#: netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "" -#: netbox/navigation/menu.py:319 netbox/navigation/menu.py:323 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "" -#: netbox/navigation/menu.py:325 templates/dcim/device_edit.html:103 -#: templates/dcim/htmx/cable_edit.html:81 -#: templates/dcim/virtualchassis_add.html:31 -#: templates/dcim/virtualchassis_edit.html:40 -#: templates/generic/bulk_edit.html:76 templates/htmx/form.html:19 -#: templates/inc/filter_list.html:30 templates/inc/panels/custom_fields.html:7 -#: templates/ipam/ipaddress_bulk_add.html:35 templates/ipam/vlan_edit.html:59 +#: netbox/netbox/navigation/menu.py:325 +#: netbox/templates/dcim/device_edit.html:103 +#: netbox/templates/dcim/htmx/cable_edit.html:81 +#: netbox/templates/dcim/virtualchassis_add.html:31 +#: netbox/templates/dcim/virtualchassis_edit.html:40 +#: netbox/templates/generic/bulk_edit.html:76 +#: netbox/templates/htmx/form.html:19 netbox/templates/inc/filter_list.html:30 +#: netbox/templates/inc/panels/custom_fields.html:7 +#: netbox/templates/ipam/ipaddress_bulk_add.html:35 +#: netbox/templates/ipam/vlan_edit.html:59 msgid "Custom Fields" msgstr "" -#: netbox/navigation/menu.py:326 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "" -#: netbox/navigation/menu.py:327 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "" -#: netbox/navigation/menu.py:328 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "" -#: netbox/navigation/menu.py:329 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "" -#: netbox/navigation/menu.py:331 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "" -#: netbox/navigation/menu.py:349 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "" -#: netbox/navigation/menu.py:353 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "" -#: netbox/navigation/menu.py:355 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "" -#: netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "" -#: netbox/navigation/menu.py:357 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "" -#: netbox/navigation/menu.py:361 netbox/navigation/menu.py:365 -#: netbox/views/generic/feature_views.py:153 -#: templates/extras/report/base.html:37 templates/extras/script/base.html:36 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 +#: netbox/templates/extras/report/base.html:37 +#: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "" -#: netbox/navigation/menu.py:371 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "" -#: netbox/navigation/menu.py:373 +#: netbox/netbox/navigation/menu.py:373 msgid "Notification Groups" msgstr "" -#: netbox/navigation/menu.py:374 +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "" -#: netbox/navigation/menu.py:375 templates/core/objectchange.html:9 -#: templates/core/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "" -#: netbox/navigation/menu.py:382 templates/inc/user_menu.html:29 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "" -#: netbox/navigation/menu.py:430 templates/account/base.html:27 -#: templates/inc/user_menu.html:57 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "" -#: netbox/navigation/menu.py:437 users/forms/model_forms.py:188 -#: users/forms/model_forms.py:196 users/forms/model_forms.py:243 -#: users/forms/model_forms.py:250 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 +#: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 +#: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "" -#: netbox/navigation/menu.py:445 netbox/navigation/menu.py:449 -#: templates/core/system.html:7 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 +#: netbox/templates/core/system.html:7 msgid "System" msgstr "" -#: netbox/navigation/menu.py:454 netbox/navigation/menu.py:502 -#: templates/500.html:35 templates/account/preferences.html:22 -#: templates/core/plugin.html:12 templates/core/plugin_list.html:7 -#: templates/core/plugin_list.html:12 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 msgid "Plugins" msgstr "" -#: netbox/navigation/menu.py:459 +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "" -#: netbox/navigation/menu.py:465 templates/core/rq_task.html:8 -#: templates/core/rq_task_list.html:22 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 +#: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "" -#: netbox/plugins/navigation.py:47 netbox/plugins/navigation.py:69 +#: netbox/netbox/plugins/navigation.py:47 +#: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." msgstr "" -#: netbox/plugins/navigation.py:51 +#: netbox/netbox/plugins/navigation.py:51 msgid "Buttons must be passed as a tuple or list." msgstr "" -#: netbox/plugins/navigation.py:73 +#: netbox/netbox/plugins/navigation.py:73 msgid "Button color must be a choice within ButtonColorChoices." msgstr "" -#: netbox/plugins/registration.py:25 +#: netbox/netbox/plugins/registration.py:25 #, python-brace-format msgid "" "PluginTemplateExtension class {template_extension} was passed as an instance!" msgstr "" -#: netbox/plugins/registration.py:31 +#: netbox/netbox/plugins/registration.py:31 #, python-brace-format msgid "" "{template_extension} is not a subclass of netbox.plugins." "PluginTemplateExtension!" msgstr "" -#: netbox/plugins/registration.py:51 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "" -#: netbox/plugins/registration.py:62 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "" -#: netbox/plugins/registration.py:67 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "" -#: netbox/plugins/templates.py:37 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "" -#: netbox/preferences.py:19 +#: netbox/netbox/preferences.py:19 msgid "HTMX Navigation" msgstr "" -#: netbox/preferences.py:24 +#: netbox/netbox/preferences.py:24 msgid "Enable dynamic UI navigation" msgstr "" -#: netbox/preferences.py:26 +#: netbox/netbox/preferences.py:26 msgid "Experimental feature" msgstr "" -#: netbox/preferences.py:29 +#: netbox/netbox/preferences.py:29 msgid "Language" msgstr "" -#: netbox/preferences.py:34 +#: netbox/netbox/preferences.py:34 msgid "Forces UI translation to the specified language" msgstr "" -#: netbox/preferences.py:36 +#: netbox/netbox/preferences.py:36 msgid "Support for translation has been disabled locally" msgstr "" -#: netbox/preferences.py:42 +#: netbox/netbox/preferences.py:42 msgid "Page length" msgstr "" -#: netbox/preferences.py:44 +#: netbox/netbox/preferences.py:44 msgid "The default number of objects to display per page" msgstr "" -#: netbox/preferences.py:48 +#: netbox/netbox/preferences.py:48 msgid "Paginator placement" msgstr "" -#: netbox/preferences.py:50 +#: netbox/netbox/preferences.py:50 msgid "Bottom" msgstr "" -#: netbox/preferences.py:51 +#: netbox/netbox/preferences.py:51 msgid "Top" msgstr "" -#: netbox/preferences.py:52 +#: netbox/netbox/preferences.py:52 msgid "Both" msgstr "" -#: netbox/preferences.py:55 +#: netbox/netbox/preferences.py:55 msgid "Where the paginator controls will be displayed relative to a table" msgstr "" -#: netbox/preferences.py:60 +#: netbox/netbox/preferences.py:60 msgid "Data format" msgstr "" -#: netbox/preferences.py:65 +#: netbox/netbox/preferences.py:65 msgid "The preferred syntax for displaying generic data within the UI" msgstr "" -#: netbox/registry.py:14 +#: netbox/netbox/registry.py:14 #, python-brace-format msgid "Invalid store: {key}" msgstr "" -#: netbox/registry.py:17 +#: netbox/netbox/registry.py:17 msgid "Cannot add stores to registry after initialization" msgstr "" -#: netbox/registry.py:20 +#: netbox/netbox/registry.py:20 msgid "Cannot delete stores from registry" msgstr "" -#: netbox/settings.py:756 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "" -#: netbox/settings.py:757 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "" -#: netbox/settings.py:758 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "" -#: netbox/settings.py:759 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "" -#: netbox/settings.py:760 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "" -#: netbox/settings.py:761 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "" -#: netbox/settings.py:762 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "" -#: netbox/settings.py:763 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "" -#: netbox/settings.py:764 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "" -#: netbox/settings.py:765 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "" -#: netbox/settings.py:766 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "" -#: netbox/settings.py:767 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "" -#: netbox/settings.py:768 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "" -#: netbox/settings.py:769 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "" -#: netbox/settings.py:770 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "" -#: netbox/tables/columns.py:176 +#: netbox/netbox/tables/columns.py:176 msgid "Select all" msgstr "" -#: netbox/tables/columns.py:189 +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "" -#: netbox/tables/columns.py:300 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "" -#: netbox/tables/columns.py:572 templates/core/job.html:53 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "" -#: netbox/tables/tables.py:58 +#: netbox/netbox/tables/tables.py:58 #, python-brace-format msgid "No {model_name} found" msgstr "" -#: netbox/tables/tables.py:249 templates/generic/bulk_import.html:117 +#: netbox/netbox/tables/tables.py:249 +#: netbox/templates/generic/bulk_import.html:117 msgid "Field" msgstr "" -#: netbox/tables/tables.py:252 +#: netbox/netbox/tables/tables.py:252 msgid "Value" msgstr "" -#: netbox/tests/dummy_plugin/navigation.py:29 +#: netbox/netbox/tests/dummy_plugin/navigation.py:29 msgid "Dummy Plugin" msgstr "" -#: netbox/views/generic/bulk_views.py:114 +#: netbox/netbox/views/generic/bulk_views.py:114 #, python-brace-format msgid "" "There was an error rendering the selected export template ({template}): " "{error}" msgstr "" -#: netbox/views/generic/bulk_views.py:416 +#: netbox/netbox/views/generic/bulk_views.py:416 #, python-brace-format msgid "Row {i}: Object with ID {id} does not exist" msgstr "" -#: netbox/views/generic/bulk_views.py:699 -#: netbox/views/generic/bulk_views.py:897 -#: netbox/views/generic/bulk_views.py:945 +#: netbox/netbox/views/generic/bulk_views.py:699 +#: netbox/netbox/views/generic/bulk_views.py:897 +#: netbox/netbox/views/generic/bulk_views.py:945 #, python-brace-format msgid "No {object_type} were selected." msgstr "" -#: netbox/views/generic/bulk_views.py:779 +#: netbox/netbox/views/generic/bulk_views.py:779 #, python-brace-format msgid "Renamed {count} {object_type}" msgstr "" -#: netbox/views/generic/bulk_views.py:875 +#: netbox/netbox/views/generic/bulk_views.py:875 #, python-brace-format msgid "Deleted {count} {object_type}" msgstr "" -#: netbox/views/generic/feature_views.py:40 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "" -#: netbox/views/generic/feature_views.py:93 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "" -#: netbox/views/generic/feature_views.py:207 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "" -#: netbox/views/generic/feature_views.py:211 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "" -#: netbox/views/generic/feature_views.py:236 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "" -#: netbox/views/generic/object_views.py:108 +#: netbox/netbox/views/generic/object_views.py:108 #, python-brace-format msgid "{class_name} must implement get_children()" msgstr "" -#: netbox/views/misc.py:44 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." msgstr "" -#: templates/403.html:4 +#: netbox/templates/403.html:4 msgid "Access Denied" msgstr "" -#: templates/403.html:9 +#: netbox/templates/403.html:9 msgid "You do not have permission to access this page" msgstr "" -#: templates/404.html:4 +#: netbox/templates/404.html:4 msgid "Page Not Found" msgstr "" -#: templates/404.html:9 +#: netbox/templates/404.html:9 msgid "The requested page does not exist" msgstr "" -#: templates/500.html:7 templates/500.html:18 +#: netbox/templates/500.html:7 netbox/templates/500.html:18 msgid "Server Error" msgstr "" -#: templates/500.html:23 +#: netbox/templates/500.html:23 msgid "There was a problem with your request. Please contact an administrator" msgstr "" -#: templates/500.html:28 +#: netbox/templates/500.html:28 msgid "The complete exception is provided below" msgstr "" -#: templates/500.html:33 templates/core/system.html:40 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "" -#: templates/500.html:34 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "" -#: templates/500.html:36 +#: netbox/templates/500.html:36 msgid "None installed" msgstr "" -#: templates/500.html:39 +#: netbox/templates/500.html:39 msgid "If further assistance is required, please post to the" msgstr "" -#: templates/500.html:39 +#: netbox/templates/500.html:39 msgid "NetBox discussion forum" msgstr "" -#: templates/500.html:39 +#: netbox/templates/500.html:39 msgid "on GitHub" msgstr "" -#: templates/500.html:42 templates/base/40x.html:17 +#: netbox/templates/500.html:42 netbox/templates/base/40x.html:17 msgid "Home Page" msgstr "" -#: templates/account/base.html:7 templates/inc/user_menu.html:45 -#: vpn/forms/bulk_edit.py:255 vpn/forms/filtersets.py:189 -#: vpn/forms/model_forms.py:379 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 +#: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 +#: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "" -#: templates/account/base.html:13 templates/account/notifications.html:7 -#: templates/inc/user_menu.html:15 +#: netbox/templates/account/base.html:13 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 msgid "Notifications" msgstr "" -#: templates/account/base.html:16 templates/account/subscriptions.html:7 -#: templates/inc/user_menu.html:51 +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 msgid "Subscriptions" msgstr "" -#: templates/account/base.html:19 templates/inc/user_menu.html:54 +#: netbox/templates/account/base.html:19 netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "" -#: templates/account/password.html:5 +#: netbox/templates/account/password.html:5 msgid "Change Password" msgstr "" -#: templates/account/password.html:19 templates/account/preferences.html:77 -#: templates/core/configrevision_restore.html:63 -#: templates/dcim/devicebay_populate.html:34 -#: templates/dcim/virtualchassis_add_member.html:26 -#: templates/dcim/virtualchassis_edit.html:103 -#: templates/extras/object_journal.html:26 templates/extras/script.html:38 -#: templates/generic/bulk_add_component.html:67 -#: templates/generic/bulk_delete.html:65 templates/generic/bulk_edit.html:106 -#: templates/generic/bulk_import.html:56 templates/generic/bulk_import.html:78 -#: templates/generic/bulk_import.html:100 templates/generic/bulk_remove.html:62 -#: templates/generic/bulk_rename.html:63 -#: templates/generic/confirmation_form.html:19 -#: templates/generic/object_edit.html:72 templates/htmx/delete_form.html:53 -#: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:28 -#: templates/virtualization/cluster_add_devices.html:30 +#: netbox/templates/account/password.html:19 +#: netbox/templates/account/preferences.html:77 +#: netbox/templates/core/configrevision_restore.html:63 +#: netbox/templates/dcim/devicebay_populate.html:34 +#: netbox/templates/dcim/virtualchassis_add_member.html:26 +#: netbox/templates/dcim/virtualchassis_edit.html:103 +#: netbox/templates/extras/object_journal.html:26 +#: netbox/templates/extras/script.html:38 +#: netbox/templates/generic/bulk_add_component.html:67 +#: netbox/templates/generic/bulk_delete.html:65 +#: netbox/templates/generic/bulk_edit.html:106 +#: netbox/templates/generic/bulk_import.html:56 +#: netbox/templates/generic/bulk_import.html:78 +#: netbox/templates/generic/bulk_import.html:100 +#: netbox/templates/generic/bulk_remove.html:62 +#: netbox/templates/generic/bulk_rename.html:63 +#: netbox/templates/generic/confirmation_form.html:19 +#: netbox/templates/generic/object_edit.html:72 +#: netbox/templates/htmx/delete_form.html:53 +#: netbox/templates/htmx/delete_form.html:55 +#: netbox/templates/ipam/ipaddress_assign.html:28 +#: netbox/templates/virtualization/cluster_add_devices.html:30 msgid "Cancel" msgstr "" -#: templates/account/password.html:20 templates/account/preferences.html:78 -#: templates/dcim/devicebay_populate.html:35 -#: templates/dcim/virtualchassis_add_member.html:28 -#: templates/dcim/virtualchassis_edit.html:105 -#: templates/extras/dashboard/widget_add.html:26 -#: templates/extras/dashboard/widget_config.html:19 -#: templates/extras/object_journal.html:27 -#: templates/generic/object_edit.html:75 -#: utilities/templates/helpers/applied_filters.html:16 -#: utilities/templates/helpers/table_config_form.html:40 +#: netbox/templates/account/password.html:20 +#: netbox/templates/account/preferences.html:78 +#: netbox/templates/dcim/devicebay_populate.html:35 +#: netbox/templates/dcim/virtualchassis_add_member.html:28 +#: netbox/templates/dcim/virtualchassis_edit.html:105 +#: netbox/templates/extras/dashboard/widget_add.html:26 +#: netbox/templates/extras/dashboard/widget_config.html:19 +#: netbox/templates/extras/object_journal.html:27 +#: netbox/templates/generic/object_edit.html:75 +#: netbox/utilities/templates/helpers/applied_filters.html:16 +#: netbox/utilities/templates/helpers/table_config_form.html:40 msgid "Save" msgstr "" -#: templates/account/preferences.html:34 +#: netbox/templates/account/preferences.html:34 msgid "Table Configurations" msgstr "" -#: templates/account/preferences.html:39 +#: netbox/templates/account/preferences.html:39 msgid "Clear table preferences" msgstr "" -#: templates/account/preferences.html:47 +#: netbox/templates/account/preferences.html:47 msgid "Toggle All" msgstr "" -#: templates/account/preferences.html:49 +#: netbox/templates/account/preferences.html:49 msgid "Table" msgstr "" -#: templates/account/preferences.html:50 +#: netbox/templates/account/preferences.html:50 msgid "Ordering" msgstr "" -#: templates/account/preferences.html:51 +#: netbox/templates/account/preferences.html:51 msgid "Columns" msgstr "" -#: templates/account/preferences.html:71 templates/dcim/cable_trace.html:113 -#: templates/extras/object_configcontext.html:43 +#: netbox/templates/account/preferences.html:71 +#: netbox/templates/dcim/cable_trace.html:113 +#: netbox/templates/extras/object_configcontext.html:43 msgid "None found" msgstr "" -#: templates/account/profile.html:6 +#: netbox/templates/account/profile.html:6 msgid "User Profile" msgstr "" -#: templates/account/profile.html:12 +#: netbox/templates/account/profile.html:12 msgid "Account Details" msgstr "" -#: templates/account/profile.html:29 templates/tenancy/contact.html:43 -#: templates/users/user.html:25 tenancy/forms/bulk_edit.py:109 +#: netbox/templates/account/profile.html:29 +#: netbox/templates/tenancy/contact.html:43 netbox/templates/users/user.html:25 +#: netbox/tenancy/forms/bulk_edit.py:109 msgid "Email" msgstr "" -#: templates/account/profile.html:33 templates/users/user.html:29 +#: netbox/templates/account/profile.html:33 netbox/templates/users/user.html:29 msgid "Account Created" msgstr "" -#: templates/account/profile.html:37 templates/users/user.html:33 +#: netbox/templates/account/profile.html:37 netbox/templates/users/user.html:33 msgid "Last Login" msgstr "" -#: templates/account/profile.html:41 templates/users/user.html:45 +#: netbox/templates/account/profile.html:41 netbox/templates/users/user.html:45 msgid "Superuser" msgstr "" -#: templates/account/profile.html:45 templates/inc/user_menu.html:31 -#: templates/users/user.html:41 +#: netbox/templates/account/profile.html:45 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "" -#: templates/account/profile.html:53 templates/users/objectpermission.html:82 -#: templates/users/user.html:53 +#: netbox/templates/account/profile.html:53 +#: netbox/templates/users/objectpermission.html:82 +#: netbox/templates/users/user.html:53 msgid "Assigned Groups" msgstr "" -#: templates/account/profile.html:58 -#: templates/circuits/circuit_terminations_swap.html:18 -#: templates/circuits/circuit_terminations_swap.html:26 -#: templates/circuits/circuittermination.html:34 -#: templates/circuits/inc/circuit_termination.html:68 -#: templates/core/objectchange.html:124 templates/core/objectchange.html:142 -#: templates/dcim/devicebay.html:59 -#: templates/dcim/inc/panels/inventory_items.html:45 -#: templates/dcim/interface.html:296 templates/dcim/modulebay.html:80 -#: templates/extras/configcontext.html:70 templates/extras/eventrule.html:66 -#: templates/extras/htmx/script_result.html:60 templates/extras/webhook.html:65 -#: templates/extras/webhook.html:75 templates/inc/panel_table.html:13 -#: templates/inc/panels/comments.html:10 -#: templates/ipam/inc/panels/fhrp_groups.html:56 templates/users/group.html:34 -#: templates/users/group.html:44 templates/users/objectpermission.html:77 -#: templates/users/objectpermission.html:87 templates/users/user.html:58 -#: templates/users/user.html:68 +#: netbox/templates/account/profile.html:58 +#: netbox/templates/circuits/circuit_terminations_swap.html:18 +#: netbox/templates/circuits/circuit_terminations_swap.html:26 +#: netbox/templates/circuits/circuittermination.html:34 +#: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 +#: netbox/templates/dcim/devicebay.html:59 +#: netbox/templates/dcim/inc/panels/inventory_items.html:45 +#: netbox/templates/dcim/interface.html:296 +#: netbox/templates/dcim/modulebay.html:80 +#: netbox/templates/extras/configcontext.html:70 +#: netbox/templates/extras/eventrule.html:66 +#: netbox/templates/extras/htmx/script_result.html:60 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 +#: netbox/templates/inc/panel_table.html:13 +#: netbox/templates/inc/panels/comments.html:10 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 +#: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 +#: netbox/templates/users/objectpermission.html:77 +#: netbox/templates/users/objectpermission.html:87 +#: netbox/templates/users/user.html:58 netbox/templates/users/user.html:68 msgid "None" msgstr "" -#: templates/account/profile.html:68 templates/users/user.html:78 +#: netbox/templates/account/profile.html:68 netbox/templates/users/user.html:78 msgid "Recent Activity" msgstr "" -#: templates/account/token.html:8 templates/account/token_list.html:6 +#: netbox/templates/account/token.html:8 +#: netbox/templates/account/token_list.html:6 msgid "My API Tokens" msgstr "" -#: templates/account/token.html:11 templates/account/token.html:19 -#: templates/users/token.html:6 templates/users/token.html:14 -#: users/forms/filtersets.py:120 +#: netbox/templates/account/token.html:11 +#: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "" -#: templates/account/token.html:39 templates/users/token.html:31 -#: users/forms/bulk_edit.py:107 +#: netbox/templates/account/token.html:39 netbox/templates/users/token.html:31 +#: netbox/users/forms/bulk_edit.py:107 msgid "Write enabled" msgstr "" -#: templates/account/token.html:51 templates/users/token.html:43 +#: netbox/templates/account/token.html:51 netbox/templates/users/token.html:43 msgid "Last used" msgstr "" -#: templates/account/token_list.html:12 +#: netbox/templates/account/token_list.html:12 msgid "Add a Token" msgstr "" -#: templates/base/base.html:22 templates/home.html:27 +#: netbox/templates/base/base.html:22 netbox/templates/home.html:27 msgid "Home" msgstr "" -#: templates/base/layout.html:25 +#: netbox/templates/base/layout.html:25 msgid "NetBox Motif" msgstr "" -#: templates/base/layout.html:38 templates/base/layout.html:39 -#: templates/login.html:14 templates/login.html:15 +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "" -#: templates/base/layout.html:150 templates/base/layout.html:151 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "" -#: templates/base/layout.html:156 templates/base/layout.html:157 -#: templates/rest_framework/api.html:10 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 +#: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "" -#: templates/base/layout.html:162 templates/base/layout.html:163 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "" -#: templates/base/layout.html:169 templates/base/layout.html:170 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "" -#: templates/base/layout.html:185 templates/base/layout.html:186 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 msgid "NetBox Labs Support" msgstr "" -#: templates/base/layout.html:194 templates/base/layout.html:195 +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "" -#: templates/base/layout.html:200 templates/base/layout.html:201 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "" -#: templates/circuits/circuit.html:47 +#: netbox/templates/circuits/circuit.html:47 msgid "Install Date" msgstr "" -#: templates/circuits/circuit.html:51 +#: netbox/templates/circuits/circuit.html:51 msgid "Termination Date" msgstr "" -#: templates/circuits/circuit.html:70 -#: templates/ipam/inc/panels/fhrp_groups.html:15 +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 msgid "Assign Group" msgstr "" -#: templates/circuits/circuit_terminations_swap.html:4 +#: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "" -#: templates/circuits/circuit_terminations_swap.html:8 +#: netbox/templates/circuits/circuit_terminations_swap.html:8 #, python-format msgid "Swap these terminations for circuit %(circuit)s?" msgstr "" -#: templates/circuits/circuit_terminations_swap.html:14 +#: netbox/templates/circuits/circuit_terminations_swap.html:14 msgid "A side" msgstr "" -#: templates/circuits/circuit_terminations_swap.html:22 +#: netbox/templates/circuits/circuit_terminations_swap.html:22 msgid "Z side" msgstr "" -#: templates/circuits/circuitgroup.html:16 +#: netbox/templates/circuits/circuitgroup.html:16 msgid "Assign Circuit" msgstr "" -#: templates/circuits/circuitgroupassignment.html:19 +#: netbox/templates/circuits/circuitgroupassignment.html:19 msgid "Circuit Group Assignment" msgstr "" -#: templates/circuits/circuittype.html:10 +#: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "" -#: templates/circuits/circuittype.html:19 +#: netbox/templates/circuits/circuittype.html:19 msgid "Circuit Type" msgstr "" -#: templates/circuits/inc/circuit_termination.html:10 -#: templates/dcim/devicetype/component_templates.html:33 -#: templates/dcim/manufacturer.html:11 -#: templates/dcim/moduletype/component_templates.html:29 -#: templates/generic/bulk_add_component.html:22 -#: templates/users/objectpermission.html:38 -#: utilities/templates/buttons/add.html:4 -#: utilities/templates/helpers/table_config_form.html:20 +#: netbox/templates/circuits/inc/circuit_termination.html:10 +#: netbox/templates/dcim/devicetype/component_templates.html:33 +#: netbox/templates/dcim/manufacturer.html:11 +#: netbox/templates/dcim/moduletype/component_templates.html:29 +#: netbox/templates/generic/bulk_add_component.html:22 +#: netbox/templates/users/objectpermission.html:38 +#: netbox/utilities/templates/buttons/add.html:4 +#: netbox/utilities/templates/helpers/table_config_form.html:20 msgid "Add" msgstr "" -#: templates/circuits/inc/circuit_termination.html:15 -#: templates/circuits/inc/circuit_termination_fields.html:36 -#: templates/dcim/inc/panels/inventory_items.html:32 -#: templates/dcim/moduletype/component_templates.html:20 -#: templates/dcim/powerpanel.html:56 templates/extras/script_list.html:30 -#: templates/generic/object_edit.html:47 -#: templates/ipam/inc/ipaddress_edit_header.html:7 -#: templates/ipam/inc/panels/fhrp_groups.html:43 -#: utilities/templates/buttons/edit.html:3 +#: netbox/templates/circuits/inc/circuit_termination.html:15 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:36 +#: netbox/templates/dcim/inc/panels/inventory_items.html:32 +#: netbox/templates/dcim/moduletype/component_templates.html:20 +#: netbox/templates/dcim/powerpanel.html:56 +#: netbox/templates/extras/script_list.html:30 +#: netbox/templates/generic/object_edit.html:47 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 +#: netbox/utilities/templates/buttons/edit.html:3 msgid "Edit" msgstr "" -#: templates/circuits/inc/circuit_termination.html:18 +#: netbox/templates/circuits/inc/circuit_termination.html:18 msgid "Swap" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:19 -#: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:60 -#: templates/dcim/powerfeed.html:114 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:19 +#: netbox/templates/dcim/consoleport.html:59 +#: netbox/templates/dcim/consoleserverport.html:60 +#: netbox/templates/dcim/powerfeed.html:114 msgid "Marked as connected" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:21 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:21 msgid "to" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:31 -#: templates/circuits/inc/circuit_termination_fields.html:32 -#: templates/dcim/frontport.html:80 -#: templates/dcim/inc/connection_endpoints.html:7 -#: templates/dcim/interface.html:154 templates/dcim/rearport.html:76 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:31 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:32 +#: netbox/templates/dcim/frontport.html:80 +#: netbox/templates/dcim/inc/connection_endpoints.html:7 +#: netbox/templates/dcim/interface.html:154 +#: netbox/templates/dcim/rearport.html:76 msgid "Trace" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:35 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:35 msgid "Edit cable" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:40 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:40 msgid "Remove cable" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:41 -#: templates/dcim/bulk_disconnect.html:5 -#: templates/dcim/device/consoleports.html:12 -#: templates/dcim/device/consoleserverports.html:12 -#: templates/dcim/device/frontports.html:12 -#: templates/dcim/device/interfaces.html:16 -#: templates/dcim/device/poweroutlets.html:12 -#: templates/dcim/device/powerports.html:12 -#: templates/dcim/device/rearports.html:12 templates/dcim/powerpanel.html:61 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:41 +#: netbox/templates/dcim/bulk_disconnect.html:5 +#: netbox/templates/dcim/device/consoleports.html:12 +#: netbox/templates/dcim/device/consoleserverports.html:12 +#: netbox/templates/dcim/device/frontports.html:12 +#: netbox/templates/dcim/device/interfaces.html:16 +#: netbox/templates/dcim/device/poweroutlets.html:12 +#: netbox/templates/dcim/device/powerports.html:12 +#: netbox/templates/dcim/device/rearports.html:12 +#: netbox/templates/dcim/powerpanel.html:61 msgid "Disconnect" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:48 -#: templates/dcim/consoleport.html:69 templates/dcim/consoleserverport.html:70 -#: templates/dcim/frontport.html:102 templates/dcim/interface.html:180 -#: templates/dcim/interface.html:200 templates/dcim/powerfeed.html:127 -#: templates/dcim/poweroutlet.html:71 templates/dcim/poweroutlet.html:72 -#: templates/dcim/powerport.html:73 templates/dcim/rearport.html:98 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:48 +#: netbox/templates/dcim/consoleport.html:69 +#: netbox/templates/dcim/consoleserverport.html:70 +#: netbox/templates/dcim/frontport.html:102 +#: netbox/templates/dcim/interface.html:180 +#: netbox/templates/dcim/interface.html:200 +#: netbox/templates/dcim/powerfeed.html:127 +#: netbox/templates/dcim/poweroutlet.html:71 +#: netbox/templates/dcim/poweroutlet.html:72 +#: netbox/templates/dcim/powerport.html:73 +#: netbox/templates/dcim/rearport.html:98 msgid "Connect" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:70 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:70 msgid "Downstream" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:71 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:71 msgid "Upstream" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:80 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:80 msgid "Cross-Connect" msgstr "" -#: templates/circuits/inc/circuit_termination_fields.html:84 +#: netbox/templates/circuits/inc/circuit_termination_fields.html:84 msgid "Patch Panel/Port" msgstr "" -#: templates/circuits/provider.html:11 +#: netbox/templates/circuits/provider.html:11 msgid "Add circuit" msgstr "" -#: templates/circuits/provideraccount.html:17 +#: netbox/templates/circuits/provideraccount.html:17 msgid "Provider Account" msgstr "" -#: templates/core/configrevision.html:35 +#: netbox/templates/core/configrevision.html:35 msgid "Configuration Data" msgstr "" -#: templates/core/configrevision.html:40 +#: netbox/templates/core/configrevision.html:40 msgid "Comment" msgstr "" -#: templates/core/configrevision_restore.html:8 -#: templates/core/configrevision_restore.html:25 -#: templates/core/configrevision_restore.html:64 +#: netbox/templates/core/configrevision_restore.html:8 +#: netbox/templates/core/configrevision_restore.html:25 +#: netbox/templates/core/configrevision_restore.html:64 msgid "Restore" msgstr "" -#: templates/core/configrevision_restore.html:36 +#: netbox/templates/core/configrevision_restore.html:36 msgid "Parameter" msgstr "" -#: templates/core/configrevision_restore.html:37 +#: netbox/templates/core/configrevision_restore.html:37 msgid "Current Value" msgstr "" -#: templates/core/configrevision_restore.html:38 +#: netbox/templates/core/configrevision_restore.html:38 msgid "New Value" msgstr "" -#: templates/core/configrevision_restore.html:50 +#: netbox/templates/core/configrevision_restore.html:50 msgid "Changed" msgstr "" -#: templates/core/datafile.html:42 templates/ipam/iprange.html:25 -#: templates/virtualization/virtualdisk.html:29 -#: virtualization/tables/virtualmachines.py:198 +#: netbox/templates/core/datafile.html:42 netbox/templates/ipam/iprange.html:25 +#: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "" -#: templates/core/datafile.html:43 +#: netbox/templates/core/datafile.html:43 msgid "bytes" msgstr "" -#: templates/core/datafile.html:46 +#: netbox/templates/core/datafile.html:46 msgid "SHA256 Hash" msgstr "" -#: templates/core/datasource.html:14 templates/core/datasource.html:20 -#: utilities/templates/buttons/sync.html:5 +#: netbox/templates/core/datasource.html:14 +#: netbox/templates/core/datasource.html:20 +#: netbox/utilities/templates/buttons/sync.html:5 msgid "Sync" msgstr "" -#: templates/core/datasource.html:50 +#: netbox/templates/core/datasource.html:50 msgid "Last synced" msgstr "" -#: templates/core/datasource.html:84 +#: netbox/templates/core/datasource.html:84 msgid "Backend" msgstr "" -#: templates/core/datasource.html:99 +#: netbox/templates/core/datasource.html:99 msgid "No parameters defined" msgstr "" -#: templates/core/datasource.html:114 +#: netbox/templates/core/datasource.html:114 msgid "Files" msgstr "" -#: templates/core/inc/config_data.html:7 +#: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" msgstr "" -#: templates/core/inc/config_data.html:10 +#: netbox/templates/core/inc/config_data.html:10 msgid "Default unit height" msgstr "" -#: templates/core/inc/config_data.html:14 +#: netbox/templates/core/inc/config_data.html:14 msgid "Default unit width" msgstr "" -#: templates/core/inc/config_data.html:20 +#: netbox/templates/core/inc/config_data.html:20 msgid "Power feeds" msgstr "" -#: templates/core/inc/config_data.html:23 +#: netbox/templates/core/inc/config_data.html:23 msgid "Default voltage" msgstr "" -#: templates/core/inc/config_data.html:27 +#: netbox/templates/core/inc/config_data.html:27 msgid "Default amperage" msgstr "" -#: templates/core/inc/config_data.html:31 +#: netbox/templates/core/inc/config_data.html:31 msgid "Default max utilization" msgstr "" -#: templates/core/inc/config_data.html:40 +#: netbox/templates/core/inc/config_data.html:40 msgid "Enforce global unique" msgstr "" -#: templates/core/inc/config_data.html:83 +#: netbox/templates/core/inc/config_data.html:83 msgid "Paginate count" msgstr "" -#: templates/core/inc/config_data.html:87 +#: netbox/templates/core/inc/config_data.html:87 msgid "Max page size" msgstr "" -#: templates/core/inc/config_data.html:114 +#: netbox/templates/core/inc/config_data.html:114 msgid "User preferences" msgstr "" -#: templates/core/inc/config_data.html:141 +#: netbox/templates/core/inc/config_data.html:141 msgid "Job retention" msgstr "" -#: templates/core/job.html:35 templates/core/rq_task.html:12 -#: templates/core/rq_task.html:49 templates/core/rq_task.html:58 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "" -#: templates/core/job.html:58 templates/extras/journalentry.html:26 +#: netbox/templates/core/job.html:58 +#: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "" -#: templates/core/job.html:66 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "" -#: templates/core/job.html:77 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "" -#: templates/core/objectchange.html:29 templates/users/objectpermission.html:42 +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 msgid "Change" msgstr "" -#: templates/core/objectchange.html:79 +#: netbox/templates/core/objectchange.html:79 msgid "Difference" msgstr "" -#: templates/core/objectchange.html:82 +#: netbox/templates/core/objectchange.html:82 msgid "Previous" msgstr "" -#: templates/core/objectchange.html:85 +#: netbox/templates/core/objectchange.html:85 msgid "Next" msgstr "" -#: templates/core/objectchange.html:93 +#: netbox/templates/core/objectchange.html:93 msgid "Object Created" msgstr "" -#: templates/core/objectchange.html:95 +#: netbox/templates/core/objectchange.html:95 msgid "Object Deleted" msgstr "" -#: templates/core/objectchange.html:97 +#: netbox/templates/core/objectchange.html:97 msgid "No Changes" msgstr "" -#: templates/core/objectchange.html:111 +#: netbox/templates/core/objectchange.html:111 msgid "Pre-Change Data" msgstr "" -#: templates/core/objectchange.html:122 +#: netbox/templates/core/objectchange.html:122 msgid "Warning: Comparing non-atomic change to previous change record" msgstr "" -#: templates/core/objectchange.html:131 +#: netbox/templates/core/objectchange.html:131 msgid "Post-Change Data" msgstr "" -#: templates/core/objectchange.html:162 +#: netbox/templates/core/objectchange.html:162 #, python-format msgid "See All %(count)s Changes" msgstr "" -#: templates/core/objectchange_list.html:9 -#: templates/extras/object_changelog.html:15 +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 msgid "Change log retention" msgstr "" -#: templates/core/objectchange_list.html:9 -#: templates/extras/object_changelog.html:15 +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 msgid "days" msgstr "" -#: templates/core/objectchange_list.html:9 -#: templates/extras/object_changelog.html:15 +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 msgid "Indefinite" msgstr "" -#: templates/core/plugin.html:21 +#: netbox/templates/core/plugin.html:21 msgid "Not installed" msgstr "" -#: templates/core/plugin.html:32 +#: netbox/templates/core/plugin.html:32 msgid "Overview" msgstr "" -#: templates/core/plugin.html:38 +#: netbox/templates/core/plugin.html:38 msgid "Install" msgstr "" -#: templates/core/plugin.html:50 +#: netbox/templates/core/plugin.html:50 msgid "Plugin Details" msgstr "" -#: templates/core/plugin.html:57 +#: netbox/templates/core/plugin.html:57 msgid "Summary" msgstr "" -#: templates/core/plugin.html:75 +#: netbox/templates/core/plugin.html:75 msgid "License" msgstr "" -#: templates/core/plugin.html:95 +#: netbox/templates/core/plugin.html:95 msgid "Version History" msgstr "" -#: templates/core/plugin.html:106 +#: netbox/templates/core/plugin.html:106 msgid "Local Installation Instructions" msgstr "" -#: templates/core/rq_queue_list.html:5 templates/core/rq_queue_list.html:13 -#: templates/core/rq_task_list.html:14 templates/core/rq_worker.html:7 +#: netbox/templates/core/rq_queue_list.html:5 +#: netbox/templates/core/rq_queue_list.html:13 +#: netbox/templates/core/rq_task_list.html:14 +#: netbox/templates/core/rq_worker.html:7 msgid "Background Queues" msgstr "" -#: templates/core/rq_queue_list.html:24 templates/core/rq_queue_list.html:25 -#: templates/core/rq_worker_list.html:49 templates/core/rq_worker_list.html:50 -#: templates/extras/script_result.html:67 -#: templates/extras/script_result.html:69 -#: templates/inc/table_controls_htmx.html:30 -#: templates/inc/table_controls_htmx.html:33 +#: netbox/templates/core/rq_queue_list.html:24 +#: netbox/templates/core/rq_queue_list.html:25 +#: netbox/templates/core/rq_worker_list.html:49 +#: netbox/templates/core/rq_worker_list.html:50 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 +#: netbox/templates/inc/table_controls_htmx.html:30 +#: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" msgstr "" -#: templates/core/rq_task.html:29 +#: netbox/templates/core/rq_task.html:29 msgid "Stop" msgstr "" -#: templates/core/rq_task.html:34 +#: netbox/templates/core/rq_task.html:34 msgid "Requeue" msgstr "" -#: templates/core/rq_task.html:39 +#: netbox/templates/core/rq_task.html:39 msgid "Enqueue" msgstr "" -#: templates/core/rq_task.html:61 +#: netbox/templates/core/rq_task.html:61 msgid "Queue" msgstr "" -#: templates/core/rq_task.html:65 +#: netbox/templates/core/rq_task.html:65 msgid "Timeout" msgstr "" -#: templates/core/rq_task.html:69 +#: netbox/templates/core/rq_task.html:69 msgid "Result TTL" msgstr "" -#: templates/core/rq_task.html:89 +#: netbox/templates/core/rq_task.html:89 msgid "Meta" msgstr "" -#: templates/core/rq_task.html:93 +#: netbox/templates/core/rq_task.html:93 msgid "Arguments" msgstr "" -#: templates/core/rq_task.html:97 +#: netbox/templates/core/rq_task.html:97 msgid "Keyword Arguments" msgstr "" -#: templates/core/rq_task.html:103 +#: netbox/templates/core/rq_task.html:103 msgid "Depends on" msgstr "" -#: templates/core/rq_task.html:109 +#: netbox/templates/core/rq_task.html:109 msgid "Exception" msgstr "" -#: templates/core/rq_task_list.html:28 +#: netbox/templates/core/rq_task_list.html:28 msgid "tasks in " msgstr "" -#: templates/core/rq_task_list.html:33 +#: netbox/templates/core/rq_task_list.html:33 msgid "Queued Jobs" msgstr "" -#: templates/core/rq_task_list.html:64 templates/extras/script_result.html:86 +#: netbox/templates/core/rq_task_list.html:64 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" msgstr "" -#: templates/core/rq_worker.html:10 +#: netbox/templates/core/rq_worker.html:10 msgid "Worker Info" msgstr "" -#: templates/core/rq_worker.html:31 templates/core/rq_worker.html:40 +#: netbox/templates/core/rq_worker.html:31 +#: netbox/templates/core/rq_worker.html:40 msgid "Worker" msgstr "" -#: templates/core/rq_worker.html:55 +#: netbox/templates/core/rq_worker.html:55 msgid "Queues" msgstr "" -#: templates/core/rq_worker.html:63 +#: netbox/templates/core/rq_worker.html:63 msgid "Curent Job" msgstr "" -#: templates/core/rq_worker.html:67 +#: netbox/templates/core/rq_worker.html:67 msgid "Successful job count" msgstr "" -#: templates/core/rq_worker.html:71 +#: netbox/templates/core/rq_worker.html:71 msgid "Failed job count" msgstr "" -#: templates/core/rq_worker.html:75 +#: netbox/templates/core/rq_worker.html:75 msgid "Total working time" msgstr "" -#: templates/core/rq_worker.html:76 +#: netbox/templates/core/rq_worker.html:76 msgid "seconds" msgstr "" -#: templates/core/rq_worker_list.html:13 templates/core/rq_worker_list.html:21 +#: netbox/templates/core/rq_worker_list.html:13 +#: netbox/templates/core/rq_worker_list.html:21 msgid "Background Workers" msgstr "" -#: templates/core/rq_worker_list.html:29 +#: netbox/templates/core/rq_worker_list.html:29 #, python-format msgid "Workers in %(queue_name)s" msgstr "" -#: templates/core/system.html:11 utilities/templates/buttons/export.html:4 +#: netbox/templates/core/system.html:11 +#: netbox/utilities/templates/buttons/export.html:4 msgid "Export" msgstr "" -#: templates/core/system.html:28 +#: netbox/templates/core/system.html:28 msgid "System Status" msgstr "" -#: templates/core/system.html:31 +#: netbox/templates/core/system.html:31 msgid "NetBox release" msgstr "" -#: templates/core/system.html:44 +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "" -#: templates/core/system.html:48 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "" -#: templates/core/system.html:52 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "" -#: templates/core/system.html:56 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "" -#: templates/core/system.html:61 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "" -#: templates/core/system.html:66 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "" -#: templates/core/system.html:69 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "" -#: templates/core/system.html:73 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "" -#: templates/core/system.html:85 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "" -#: templates/dcim/bulk_disconnect.html:9 +#: netbox/templates/dcim/bulk_disconnect.html:9 #, python-format msgid "" "Are you sure you want to disconnect these %(count)s %(obj_type_plural)s?" msgstr "" -#: templates/dcim/cable_trace.html:10 +#: netbox/templates/dcim/cable_trace.html:10 #, python-format msgid "Cable Trace for %(object_type)s %(object)s" msgstr "" -#: templates/dcim/cable_trace.html:24 templates/dcim/inc/rack_elevation.html:7 +#: netbox/templates/dcim/cable_trace.html:24 +#: netbox/templates/dcim/inc/rack_elevation.html:7 msgid "Download SVG" msgstr "" -#: templates/dcim/cable_trace.html:30 +#: netbox/templates/dcim/cable_trace.html:30 msgid "Asymmetric Path" msgstr "" -#: templates/dcim/cable_trace.html:31 +#: netbox/templates/dcim/cable_trace.html:31 msgid "The nodes below have no links and result in an asymmetric path" msgstr "" -#: templates/dcim/cable_trace.html:38 +#: netbox/templates/dcim/cable_trace.html:38 msgid "Path split" msgstr "" -#: templates/dcim/cable_trace.html:39 +#: netbox/templates/dcim/cable_trace.html:39 msgid "Select a node below to continue" msgstr "" -#: templates/dcim/cable_trace.html:55 +#: netbox/templates/dcim/cable_trace.html:55 msgid "Trace Completed" msgstr "" -#: templates/dcim/cable_trace.html:58 +#: netbox/templates/dcim/cable_trace.html:58 msgid "Total segments" msgstr "" -#: templates/dcim/cable_trace.html:62 +#: netbox/templates/dcim/cable_trace.html:62 msgid "Total length" msgstr "" -#: templates/dcim/cable_trace.html:77 +#: netbox/templates/dcim/cable_trace.html:77 msgid "No paths found" msgstr "" -#: templates/dcim/cable_trace.html:85 +#: netbox/templates/dcim/cable_trace.html:85 msgid "Related Paths" msgstr "" -#: templates/dcim/cable_trace.html:89 +#: netbox/templates/dcim/cable_trace.html:89 msgid "Origin" msgstr "" -#: templates/dcim/cable_trace.html:90 +#: netbox/templates/dcim/cable_trace.html:90 msgid "Destination" msgstr "" -#: templates/dcim/cable_trace.html:91 +#: netbox/templates/dcim/cable_trace.html:91 msgid "Segments" msgstr "" -#: templates/dcim/cable_trace.html:104 +#: netbox/templates/dcim/cable_trace.html:104 msgid "Incomplete" msgstr "" -#: templates/dcim/component_list.html:14 +#: netbox/templates/dcim/component_list.html:14 msgid "Rename Selected" msgstr "" -#: templates/dcim/consoleport.html:65 templates/dcim/consoleserverport.html:66 -#: templates/dcim/frontport.html:98 templates/dcim/interface.html:176 -#: templates/dcim/poweroutlet.html:69 templates/dcim/powerport.html:69 +#: netbox/templates/dcim/consoleport.html:65 +#: netbox/templates/dcim/consoleserverport.html:66 +#: netbox/templates/dcim/frontport.html:98 +#: netbox/templates/dcim/interface.html:176 +#: netbox/templates/dcim/poweroutlet.html:69 +#: netbox/templates/dcim/powerport.html:69 msgid "Not Connected" msgstr "" -#: templates/dcim/device.html:34 +#: netbox/templates/dcim/device.html:34 msgid "Highlight device in rack" msgstr "" -#: templates/dcim/device.html:55 +#: netbox/templates/dcim/device.html:55 msgid "Not racked" msgstr "" -#: templates/dcim/device.html:62 templates/dcim/site.html:94 +#: netbox/templates/dcim/device.html:62 netbox/templates/dcim/site.html:94 msgid "GPS Coordinates" msgstr "" -#: templates/dcim/device.html:68 templates/dcim/site.html:100 -msgid "Map It" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" msgstr "" -#: templates/dcim/device.html:108 templates/dcim/inventoryitem.html:56 -#: templates/dcim/module.html:81 templates/dcim/modulebay.html:74 -#: templates/dcim/rack.html:61 +#: netbox/templates/dcim/device.html:108 +#: netbox/templates/dcim/inventoryitem.html:56 +#: netbox/templates/dcim/module.html:81 netbox/templates/dcim/modulebay.html:74 +#: netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "" -#: templates/dcim/device.html:123 +#: netbox/templates/dcim/device.html:123 msgid "View Virtual Chassis" msgstr "" -#: templates/dcim/device.html:164 +#: netbox/templates/dcim/device.html:164 msgid "Create VDC" msgstr "" -#: templates/dcim/device.html:175 templates/dcim/device_edit.html:64 -#: virtualization/forms/model_forms.py:223 +#: netbox/templates/dcim/device.html:175 +#: netbox/templates/dcim/device_edit.html:64 +#: netbox/virtualization/forms/model_forms.py:223 msgid "Management" msgstr "" -#: templates/dcim/device.html:195 templates/dcim/device.html:211 -#: templates/dcim/device.html:227 -#: templates/virtualization/virtualmachine.html:57 -#: templates/virtualization/virtualmachine.html:73 +#: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 +#: netbox/templates/dcim/device.html:227 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "" -#: templates/dcim/device.html:197 templates/dcim/device.html:213 -#: templates/dcim/device.html:229 -#: templates/virtualization/virtualmachine.html:59 -#: templates/virtualization/virtualmachine.html:75 +#: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 +#: netbox/templates/dcim/device.html:229 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "" -#: templates/dcim/device.html:252 templates/dcim/rack.html:73 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "" -#: templates/dcim/device.html:256 +#: netbox/templates/dcim/device.html:256 msgid "Input" msgstr "" -#: templates/dcim/device.html:257 +#: netbox/templates/dcim/device.html:257 msgid "Outlets" msgstr "" -#: templates/dcim/device.html:258 +#: netbox/templates/dcim/device.html:258 msgid "Allocated" msgstr "" -#: templates/dcim/device.html:268 templates/dcim/device.html:270 -#: templates/dcim/device.html:286 templates/dcim/powerfeed.html:67 +#: netbox/templates/dcim/device.html:268 netbox/templates/dcim/device.html:270 +#: netbox/templates/dcim/device.html:286 +#: netbox/templates/dcim/powerfeed.html:67 msgid "VA" msgstr "" -#: templates/dcim/device.html:280 +#: netbox/templates/dcim/device.html:280 msgctxt "Leg of a power feed" msgid "Leg" msgstr "" -#: templates/dcim/device.html:306 -#: templates/virtualization/virtualmachine.html:158 +#: netbox/templates/dcim/device.html:306 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "" -#: templates/dcim/device/base.html:21 templates/dcim/device_list.html:9 -#: templates/dcim/devicetype/base.html:18 templates/dcim/module.html:18 -#: templates/dcim/moduletype/base.html:18 -#: templates/virtualization/virtualmachine/base.html:22 -#: templates/virtualization/virtualmachine_list.html:8 +#: netbox/templates/dcim/device/base.html:21 +#: netbox/templates/dcim/device_list.html:9 +#: netbox/templates/dcim/devicetype/base.html:18 +#: netbox/templates/dcim/module.html:18 +#: netbox/templates/dcim/moduletype/base.html:18 +#: netbox/templates/virtualization/virtualmachine/base.html:22 +#: netbox/templates/virtualization/virtualmachine_list.html:8 msgid "Add Components" msgstr "" -#: templates/dcim/device/consoleports.html:24 +#: netbox/templates/dcim/device/consoleports.html:24 msgid "Add Console Ports" msgstr "" -#: templates/dcim/device/consoleserverports.html:24 +#: netbox/templates/dcim/device/consoleserverports.html:24 msgid "Add Console Server Ports" msgstr "" -#: templates/dcim/device/devicebays.html:10 +#: netbox/templates/dcim/device/devicebays.html:10 msgid "Add Device Bays" msgstr "" -#: templates/dcim/device/frontports.html:24 +#: netbox/templates/dcim/device/frontports.html:24 msgid "Add Front Ports" msgstr "" -#: templates/dcim/device/inc/interface_table_controls.html:9 +#: netbox/templates/dcim/device/inc/interface_table_controls.html:9 msgid "Hide Enabled" msgstr "" -#: templates/dcim/device/inc/interface_table_controls.html:10 +#: netbox/templates/dcim/device/inc/interface_table_controls.html:10 msgid "Hide Disabled" msgstr "" -#: templates/dcim/device/inc/interface_table_controls.html:11 +#: netbox/templates/dcim/device/inc/interface_table_controls.html:11 msgid "Hide Virtual" msgstr "" -#: templates/dcim/device/inc/interface_table_controls.html:12 +#: netbox/templates/dcim/device/inc/interface_table_controls.html:12 msgid "Hide Disconnected" msgstr "" -#: templates/dcim/device/interfaces.html:27 +#: netbox/templates/dcim/device/interfaces.html:27 msgid "Add Interfaces" msgstr "" -#: templates/dcim/device/inventory.html:10 -#: templates/dcim/inc/panels/inventory_items.html:10 +#: netbox/templates/dcim/device/inventory.html:10 +#: netbox/templates/dcim/inc/panels/inventory_items.html:10 msgid "Add Inventory Item" msgstr "" -#: templates/dcim/device/modulebays.html:10 +#: netbox/templates/dcim/device/modulebays.html:10 msgid "Add Module Bays" msgstr "" -#: templates/dcim/device/poweroutlets.html:24 +#: netbox/templates/dcim/device/poweroutlets.html:24 msgid "Add Power Outlets" msgstr "" -#: templates/dcim/device/powerports.html:24 +#: netbox/templates/dcim/device/powerports.html:24 msgid "Add Power Port" msgstr "" -#: templates/dcim/device/rearports.html:24 +#: netbox/templates/dcim/device/rearports.html:24 msgid "Add Rear Ports" msgstr "" -#: templates/dcim/device/render_config.html:5 -#: templates/virtualization/virtualmachine/render_config.html:5 +#: netbox/templates/dcim/device/render_config.html:5 +#: netbox/templates/virtualization/virtualmachine/render_config.html:5 msgid "Config" msgstr "" -#: templates/dcim/device/render_config.html:35 -#: templates/virtualization/virtualmachine/render_config.html:35 +#: netbox/templates/dcim/device/render_config.html:35 +#: netbox/templates/virtualization/virtualmachine/render_config.html:35 msgid "Context Data" msgstr "" -#: templates/dcim/device/render_config.html:53 -#: templates/virtualization/virtualmachine/render_config.html:53 +#: netbox/templates/dcim/device/render_config.html:53 +#: netbox/templates/virtualization/virtualmachine/render_config.html:53 msgid "Rendered Config" msgstr "" -#: templates/dcim/device/render_config.html:55 -#: templates/virtualization/virtualmachine/render_config.html:55 +#: netbox/templates/dcim/device/render_config.html:55 +#: netbox/templates/virtualization/virtualmachine/render_config.html:55 msgid "Download" msgstr "" -#: templates/dcim/device/render_config.html:61 -#: templates/virtualization/virtualmachine/render_config.html:61 +#: netbox/templates/dcim/device/render_config.html:61 +#: netbox/templates/virtualization/virtualmachine/render_config.html:61 msgid "No configuration template found" msgstr "" -#: templates/dcim/device_edit.html:44 +#: netbox/templates/dcim/device_edit.html:44 msgid "Parent Bay" msgstr "" -#: templates/dcim/device_edit.html:48 -#: utilities/templates/form_helpers/render_field.html:20 +#: netbox/templates/dcim/device_edit.html:48 +#: netbox/utilities/templates/form_helpers/render_field.html:20 msgid "Regenerate Slug" msgstr "" -#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:21 -#: utilities/templates/helpers/table_config_form.html:23 +#: netbox/templates/dcim/device_edit.html:49 +#: netbox/templates/generic/bulk_remove.html:21 +#: netbox/utilities/templates/helpers/table_config_form.html:23 msgid "Remove" msgstr "" -#: templates/dcim/device_edit.html:110 +#: netbox/templates/dcim/device_edit.html:110 msgid "Local Config Context Data" msgstr "" -#: templates/dcim/device_list.html:82 -#: templates/dcim/moduletype/component_templates.html:17 -#: templates/generic/bulk_rename.html:57 -#: templates/virtualization/virtualmachine/interfaces.html:11 -#: templates/virtualization/virtualmachine/virtual_disks.html:11 +#: netbox/templates/dcim/device_list.html:82 +#: netbox/templates/dcim/moduletype/component_templates.html:17 +#: netbox/templates/generic/bulk_rename.html:57 +#: netbox/templates/virtualization/virtualmachine/interfaces.html:11 +#: netbox/templates/virtualization/virtualmachine/virtual_disks.html:11 msgid "Rename" msgstr "" -#: templates/dcim/devicebay.html:17 +#: netbox/templates/dcim/devicebay.html:17 msgid "Device Bay" msgstr "" -#: templates/dcim/devicebay.html:43 +#: netbox/templates/dcim/devicebay.html:43 msgid "Installed Device" msgstr "" -#: templates/dcim/devicebay_depopulate.html:6 +#: netbox/templates/dcim/devicebay_depopulate.html:6 #, python-format msgid "Remove %(device)s from %(device_bay)s?" msgstr "" -#: templates/dcim/devicebay_depopulate.html:13 +#: netbox/templates/dcim/devicebay_depopulate.html:13 #, python-format msgid "" "Are you sure you want to remove %(device)s from " "%(device_bay)s?" msgstr "" -#: templates/dcim/devicebay_populate.html:13 +#: netbox/templates/dcim/devicebay_populate.html:13 msgid "Populate" msgstr "" -#: templates/dcim/devicebay_populate.html:22 +#: netbox/templates/dcim/devicebay_populate.html:22 msgid "Bay" msgstr "" -#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17 +#: netbox/templates/dcim/devicerole.html:14 +#: netbox/templates/dcim/platform.html:17 msgid "Add Device" msgstr "" -#: templates/dcim/devicerole.html:40 +#: netbox/templates/dcim/devicerole.html:40 msgid "VM Role" msgstr "" -#: templates/dcim/devicetype.html:18 templates/dcim/moduletype.html:18 +#: netbox/templates/dcim/devicetype.html:18 +#: netbox/templates/dcim/moduletype.html:18 msgid "Model Name" msgstr "" -#: templates/dcim/devicetype.html:25 templates/dcim/moduletype.html:22 +#: netbox/templates/dcim/devicetype.html:25 +#: netbox/templates/dcim/moduletype.html:22 msgid "Part Number" msgstr "" -#: templates/dcim/devicetype.html:41 +#: netbox/templates/dcim/devicetype.html:41 msgid "Exclude From Utilization" msgstr "" -#: templates/dcim/devicetype.html:59 +#: netbox/templates/dcim/devicetype.html:59 msgid "Parent/Child" msgstr "" -#: templates/dcim/devicetype.html:71 +#: netbox/templates/dcim/devicetype.html:71 msgid "Front Image" msgstr "" -#: templates/dcim/devicetype.html:83 +#: netbox/templates/dcim/devicetype.html:83 msgid "Rear Image" msgstr "" -#: templates/dcim/frontport.html:54 +#: netbox/templates/dcim/frontport.html:54 msgid "Rear Port Position" msgstr "" -#: templates/dcim/frontport.html:72 templates/dcim/interface.html:144 -#: templates/dcim/poweroutlet.html:63 templates/dcim/powerport.html:63 -#: templates/dcim/rearport.html:68 +#: netbox/templates/dcim/frontport.html:72 +#: netbox/templates/dcim/interface.html:144 +#: netbox/templates/dcim/poweroutlet.html:63 +#: netbox/templates/dcim/powerport.html:63 +#: netbox/templates/dcim/rearport.html:68 msgid "Marked as Connected" msgstr "" -#: templates/dcim/frontport.html:86 templates/dcim/rearport.html:82 +#: netbox/templates/dcim/frontport.html:86 +#: netbox/templates/dcim/rearport.html:82 msgid "Connection Status" msgstr "" -#: templates/dcim/htmx/cable_edit.html:10 +#: netbox/templates/dcim/htmx/cable_edit.html:10 msgid "A Side" msgstr "" -#: templates/dcim/htmx/cable_edit.html:30 +#: netbox/templates/dcim/htmx/cable_edit.html:30 msgid "B Side" msgstr "" -#: templates/dcim/inc/cable_termination.html:65 +#: netbox/templates/dcim/inc/cable_termination.html:65 msgid "No termination" msgstr "" -#: templates/dcim/inc/cable_toggle_buttons.html:3 +#: netbox/templates/dcim/inc/cable_toggle_buttons.html:3 msgid "Mark Planned" msgstr "" -#: templates/dcim/inc/cable_toggle_buttons.html:6 +#: netbox/templates/dcim/inc/cable_toggle_buttons.html:6 msgid "Mark Installed" msgstr "" -#: templates/dcim/inc/connection_endpoints.html:13 +#: netbox/templates/dcim/inc/connection_endpoints.html:13 msgid "Path Status" msgstr "" -#: templates/dcim/inc/connection_endpoints.html:18 +#: netbox/templates/dcim/inc/connection_endpoints.html:18 msgid "Not Reachable" msgstr "" -#: templates/dcim/inc/connection_endpoints.html:23 +#: netbox/templates/dcim/inc/connection_endpoints.html:23 msgid "Path Endpoints" msgstr "" -#: templates/dcim/inc/endpoint_connection.html:8 -#: templates/dcim/powerfeed.html:120 templates/dcim/rearport.html:94 +#: netbox/templates/dcim/inc/endpoint_connection.html:8 +#: netbox/templates/dcim/powerfeed.html:120 +#: netbox/templates/dcim/rearport.html:94 msgid "Not connected" msgstr "" -#: templates/dcim/inc/interface_vlans_table.html:6 +#: netbox/templates/dcim/inc/interface_vlans_table.html:6 msgid "Untagged" msgstr "" -#: templates/dcim/inc/interface_vlans_table.html:37 +#: netbox/templates/dcim/inc/interface_vlans_table.html:37 msgid "No VLANs Assigned" msgstr "" -#: templates/dcim/inc/interface_vlans_table.html:44 -#: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33 +#: netbox/templates/dcim/inc/interface_vlans_table.html:44 +#: netbox/templates/ipam/prefix_list.html:16 +#: netbox/templates/ipam/prefix_list.html:33 msgid "Clear" msgstr "" -#: templates/dcim/inc/interface_vlans_table.html:47 +#: netbox/templates/dcim/inc/interface_vlans_table.html:47 msgid "Clear All" msgstr "" -#: templates/dcim/inc/panels/racktype_dimensions.html:38 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 msgid "Mounting Depth" msgstr "" -#: templates/dcim/inc/panels/racktype_numbering.html:6 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 msgid "Starting Unit" msgstr "" -#: templates/dcim/inc/panels/racktype_numbering.html:10 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 msgid "Descending Units" msgstr "" -#: templates/dcim/inc/rack_elevation.html:3 +#: netbox/templates/dcim/inc/rack_elevation.html:3 msgid "Rack elevation" msgstr "" -#: templates/dcim/interface.html:17 +#: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "" -#: templates/dcim/interface.html:50 +#: netbox/templates/dcim/interface.html:50 msgid "Speed/Duplex" msgstr "" -#: templates/dcim/interface.html:73 +#: netbox/templates/dcim/interface.html:73 msgid "PoE Mode" msgstr "" -#: templates/dcim/interface.html:77 +#: netbox/templates/dcim/interface.html:77 msgid "PoE Type" msgstr "" -#: templates/dcim/interface.html:81 -#: templates/virtualization/vminterface.html:63 +#: netbox/templates/dcim/interface.html:81 +#: netbox/templates/virtualization/vminterface.html:63 msgid "802.1Q Mode" msgstr "" -#: templates/dcim/interface.html:125 -#: templates/virtualization/vminterface.html:59 +#: netbox/templates/dcim/interface.html:125 +#: netbox/templates/virtualization/vminterface.html:59 msgid "MAC Address" msgstr "" -#: templates/dcim/interface.html:151 +#: netbox/templates/dcim/interface.html:151 msgid "Wireless Link" msgstr "" -#: templates/dcim/interface.html:218 vpn/choices.py:55 +#: netbox/templates/dcim/interface.html:218 netbox/vpn/choices.py:55 msgid "Peer" msgstr "" -#: templates/dcim/interface.html:230 -#: templates/wireless/inc/wirelesslink_interface.html:26 +#: netbox/templates/dcim/interface.html:230 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:26 msgid "Channel" msgstr "" -#: templates/dcim/interface.html:239 -#: templates/wireless/inc/wirelesslink_interface.html:32 +#: netbox/templates/dcim/interface.html:239 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:32 msgid "Channel Frequency" msgstr "" -#: templates/dcim/interface.html:242 templates/dcim/interface.html:250 -#: templates/dcim/interface.html:261 templates/dcim/interface.html:269 +#: netbox/templates/dcim/interface.html:242 +#: netbox/templates/dcim/interface.html:250 +#: netbox/templates/dcim/interface.html:261 +#: netbox/templates/dcim/interface.html:269 msgid "MHz" msgstr "" -#: templates/dcim/interface.html:258 -#: templates/wireless/inc/wirelesslink_interface.html:42 +#: netbox/templates/dcim/interface.html:258 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:42 msgid "Channel Width" msgstr "" -#: templates/dcim/interface.html:285 templates/wireless/wirelesslan.html:14 -#: templates/wireless/wirelesslink.html:21 wireless/forms/bulk_edit.py:60 -#: wireless/forms/bulk_edit.py:102 wireless/forms/filtersets.py:40 -#: wireless/forms/filtersets.py:80 wireless/models.py:82 wireless/models.py:156 -#: wireless/tables/wirelesslan.py:44 +#: netbox/templates/dcim/interface.html:285 +#: netbox/templates/wireless/wirelesslan.html:14 +#: netbox/templates/wireless/wirelesslink.html:21 +#: netbox/wireless/forms/bulk_edit.py:60 netbox/wireless/forms/bulk_edit.py:102 +#: netbox/wireless/forms/filtersets.py:40 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "" -#: templates/dcim/interface.html:305 +#: netbox/templates/dcim/interface.html:305 msgid "LAG Members" msgstr "" -#: templates/dcim/interface.html:323 +#: netbox/templates/dcim/interface.html:323 msgid "No member interfaces" msgstr "" -#: templates/dcim/interface.html:343 templates/ipam/fhrpgroup.html:73 -#: templates/ipam/iprange/ip_addresses.html:7 -#: templates/ipam/prefix/ip_addresses.html:7 -#: templates/virtualization/vminterface.html:89 +#: netbox/templates/dcim/interface.html:343 +#: netbox/templates/ipam/fhrpgroup.html:73 +#: netbox/templates/ipam/iprange/ip_addresses.html:7 +#: netbox/templates/ipam/prefix/ip_addresses.html:7 +#: netbox/templates/virtualization/vminterface.html:89 msgid "Add IP Address" msgstr "" -#: templates/dcim/inventoryitem.html:24 +#: netbox/templates/dcim/inventoryitem.html:24 msgid "Parent Item" msgstr "" -#: templates/dcim/inventoryitem.html:48 +#: netbox/templates/dcim/inventoryitem.html:48 msgid "Part ID" msgstr "" -#: templates/dcim/location.html:17 +#: netbox/templates/dcim/location.html:17 msgid "Add Child Location" msgstr "" -#: templates/dcim/location.html:77 +#: netbox/templates/dcim/location.html:77 msgid "Child Locations" msgstr "" -#: templates/dcim/location.html:81 templates/dcim/site.html:131 +#: netbox/templates/dcim/location.html:81 netbox/templates/dcim/site.html:131 msgid "Add a Location" msgstr "" -#: templates/dcim/location.html:94 templates/dcim/site.html:144 +#: netbox/templates/dcim/location.html:94 netbox/templates/dcim/site.html:144 msgid "Add a Device" msgstr "" -#: templates/dcim/manufacturer.html:16 +#: netbox/templates/dcim/manufacturer.html:16 msgid "Add Device Type" msgstr "" -#: templates/dcim/manufacturer.html:21 +#: netbox/templates/dcim/manufacturer.html:21 msgid "Add Module Type" msgstr "" -#: templates/dcim/powerfeed.html:53 +#: netbox/templates/dcim/powerfeed.html:53 msgid "Connected Device" msgstr "" -#: templates/dcim/powerfeed.html:63 +#: netbox/templates/dcim/powerfeed.html:63 msgid "Utilization (Allocated" msgstr "" -#: templates/dcim/powerfeed.html:80 +#: netbox/templates/dcim/powerfeed.html:80 msgid "Electrical Characteristics" msgstr "" -#: templates/dcim/powerfeed.html:88 +#: netbox/templates/dcim/powerfeed.html:88 msgctxt "Abbreviation for volts" msgid "V" msgstr "" -#: templates/dcim/powerfeed.html:92 +#: netbox/templates/dcim/powerfeed.html:92 msgctxt "Abbreviation for amperes" msgid "A" msgstr "" -#: templates/dcim/poweroutlet.html:48 +#: netbox/templates/dcim/poweroutlet.html:48 msgid "Feed Leg" msgstr "" -#: templates/dcim/powerpanel.html:72 +#: netbox/templates/dcim/powerpanel.html:72 msgid "Add Power Feeds" msgstr "" -#: templates/dcim/powerport.html:44 +#: netbox/templates/dcim/powerport.html:44 msgid "Maximum Draw" msgstr "" -#: templates/dcim/powerport.html:48 +#: netbox/templates/dcim/powerport.html:48 msgid "Allocated Draw" msgstr "" -#: templates/dcim/rack.html:69 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "" -#: templates/dcim/rack.html:84 templates/dcim/racktype.html:44 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "" -#: templates/dcim/rack.html:94 templates/dcim/racktype.html:54 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "" -#: templates/dcim/rack.html:104 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "" -#: templates/dcim/rack.html:121 templates/dcim/rack_elevation_list.html:15 +#: netbox/templates/dcim/rack.html:121 +#: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "" -#: templates/dcim/rack.html:122 templates/dcim/rack_elevation_list.html:16 +#: netbox/templates/dcim/rack.html:122 +#: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "" -#: templates/dcim/rack.html:123 templates/dcim/rack_elevation_list.html:17 +#: netbox/templates/dcim/rack.html:123 +#: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "" -#: templates/dcim/rack/reservations.html:8 +#: netbox/templates/dcim/rack/reservations.html:8 msgid "Add reservation" msgstr "" -#: templates/dcim/rack_elevation_list.html:12 +#: netbox/templates/dcim/rack_elevation_list.html:12 msgid "View List" msgstr "" -#: templates/dcim/rack_elevation_list.html:14 +#: netbox/templates/dcim/rack_elevation_list.html:14 msgid "Select rack view" msgstr "" -#: templates/dcim/rack_elevation_list.html:25 +#: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "" -#: templates/dcim/rack_elevation_list.html:74 +#: netbox/templates/dcim/rack_elevation_list.html:74 msgid "No Racks Found" msgstr "" -#: templates/dcim/rack_list.html:8 +#: netbox/templates/dcim/rack_list.html:8 msgid "View Elevations" msgstr "" -#: templates/dcim/rackreservation.html:42 +#: netbox/templates/dcim/rackreservation.html:42 msgid "Reservation Details" msgstr "" -#: templates/dcim/rackrole.html:10 +#: netbox/templates/dcim/rackrole.html:10 msgid "Add Rack" msgstr "" -#: templates/dcim/rearport.html:50 +#: netbox/templates/dcim/rearport.html:50 msgid "Positions" msgstr "" -#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17 +#: netbox/templates/dcim/region.html:17 netbox/templates/dcim/sitegroup.html:17 msgid "Add Site" msgstr "" -#: templates/dcim/region.html:55 +#: netbox/templates/dcim/region.html:55 msgid "Child Regions" msgstr "" -#: templates/dcim/region.html:59 +#: netbox/templates/dcim/region.html:59 msgid "Add Region" msgstr "" -#: templates/dcim/site.html:64 +#: netbox/templates/dcim/site.html:64 msgid "Time Zone" msgstr "" -#: templates/dcim/site.html:67 +#: netbox/templates/dcim/site.html:67 msgid "UTC" msgstr "" -#: templates/dcim/site.html:68 +#: netbox/templates/dcim/site.html:68 msgid "Site time" msgstr "" -#: templates/dcim/site.html:75 +#: netbox/templates/dcim/site.html:75 msgid "Physical Address" msgstr "" -#: templates/dcim/site.html:81 -msgid "Map" -msgstr "" - -#: templates/dcim/site.html:90 +#: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "" -#: templates/dcim/sitegroup.html:55 templates/tenancy/contactgroup.html:46 -#: templates/tenancy/tenantgroup.html:55 -#: templates/wireless/wirelesslangroup.html:55 +#: netbox/templates/dcim/sitegroup.html:55 +#: netbox/templates/tenancy/contactgroup.html:46 +#: netbox/templates/tenancy/tenantgroup.html:55 +#: netbox/templates/wireless/wirelesslangroup.html:55 msgid "Child Groups" msgstr "" -#: templates/dcim/sitegroup.html:59 +#: netbox/templates/dcim/sitegroup.html:59 msgid "Add Site Group" msgstr "" -#: templates/dcim/trace/attachment.html:5 -#: templates/extras/exporttemplate.html:31 +#: netbox/templates/dcim/trace/attachment.html:5 +#: netbox/templates/extras/exporttemplate.html:31 msgid "Attachment" msgstr "" -#: templates/dcim/virtualchassis.html:57 +#: netbox/templates/dcim/virtualchassis.html:57 msgid "Add Member" msgstr "" -#: templates/dcim/virtualchassis_add.html:18 +#: netbox/templates/dcim/virtualchassis_add.html:18 msgid "Member Devices" msgstr "" -#: templates/dcim/virtualchassis_add_member.html:10 +#: netbox/templates/dcim/virtualchassis_add_member.html:10 #, python-format msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" msgstr "" -#: templates/dcim/virtualchassis_add_member.html:19 +#: netbox/templates/dcim/virtualchassis_add_member.html:19 msgid "Add New Member" msgstr "" -#: templates/dcim/virtualchassis_add_member.html:27 -#: templates/generic/object_edit.html:78 -#: templates/users/objectpermission.html:31 users/forms/filtersets.py:67 -#: users/forms/model_forms.py:313 +#: netbox/templates/dcim/virtualchassis_add_member.html:27 +#: netbox/templates/generic/object_edit.html:78 +#: netbox/templates/users/objectpermission.html:31 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "" -#: templates/dcim/virtualchassis_add_member.html:29 +#: netbox/templates/dcim/virtualchassis_add_member.html:29 msgid "Save & Add Another" msgstr "" -#: templates/dcim/virtualchassis_edit.html:7 +#: netbox/templates/dcim/virtualchassis_edit.html:7 #, python-format msgid "Editing Virtual Chassis %(name)s" msgstr "" -#: templates/dcim/virtualchassis_edit.html:53 +#: netbox/templates/dcim/virtualchassis_edit.html:53 msgid "Rack/Unit" msgstr "" -#: templates/dcim/virtualchassis_remove_member.html:5 +#: netbox/templates/dcim/virtualchassis_remove_member.html:5 msgid "Remove Virtual Chassis Member" msgstr "" -#: templates/dcim/virtualchassis_remove_member.html:9 +#: netbox/templates/dcim/virtualchassis_remove_member.html:9 #, python-format msgid "" "Are you sure you want to remove %(device)s from virtual " "chassis %(name)s?" msgstr "" -#: templates/dcim/virtualdevicecontext.html:26 templates/vpn/l2vpn.html:18 +#: netbox/templates/dcim/virtualdevicecontext.html:26 +#: netbox/templates/vpn/l2vpn.html:18 msgid "Identifier" msgstr "" -#: templates/exceptions/import_error.html:6 +#: netbox/templates/exceptions/import_error.html:6 msgid "" "A module import error occurred during this request. Common causes include " "the following:" msgstr "" -#: templates/exceptions/import_error.html:10 +#: netbox/templates/exceptions/import_error.html:10 msgid "Missing required packages" msgstr "" -#: templates/exceptions/import_error.html:11 +#: netbox/templates/exceptions/import_error.html:11 msgid "" "This installation of NetBox might be missing one or more required Python " "packages. These packages are listed in requirements.txt and " @@ -12047,28 +12701,28 @@ msgid "" "of required packages." msgstr "" -#: templates/exceptions/import_error.html:20 +#: netbox/templates/exceptions/import_error.html:20 msgid "WSGI service not restarted after upgrade" msgstr "" -#: templates/exceptions/import_error.html:21 +#: netbox/templates/exceptions/import_error.html:21 msgid "" "If this installation has recently been upgraded, check that the WSGI service " "(e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code " "is running." msgstr "" -#: templates/exceptions/permission_error.html:6 +#: netbox/templates/exceptions/permission_error.html:6 msgid "" "A file permission error was detected while processing this request. Common " "causes include the following:" msgstr "" -#: templates/exceptions/permission_error.html:10 +#: netbox/templates/exceptions/permission_error.html:10 msgid "Insufficient write permission to the media root" msgstr "" -#: templates/exceptions/permission_error.html:11 +#: netbox/templates/exceptions/permission_error.html:11 #, python-format msgid "" "The configured media root is %(media_root)s. Ensure that the " @@ -12076,367 +12730,372 @@ msgid "" "path." msgstr "" -#: templates/exceptions/programming_error.html:6 +#: netbox/templates/exceptions/programming_error.html:6 msgid "" "A database programming error was detected while processing this request. " "Common causes include the following:" msgstr "" -#: templates/exceptions/programming_error.html:10 +#: netbox/templates/exceptions/programming_error.html:10 msgid "Database migrations missing" msgstr "" -#: templates/exceptions/programming_error.html:11 +#: netbox/templates/exceptions/programming_error.html:11 msgid "" "When upgrading to a new NetBox release, the upgrade script must be run to " "apply any new database migrations. You can run migrations manually by " "executing python3 manage.py migrate from the command line." msgstr "" -#: templates/exceptions/programming_error.html:18 +#: netbox/templates/exceptions/programming_error.html:18 msgid "Unsupported PostgreSQL version" msgstr "" -#: templates/exceptions/programming_error.html:19 +#: netbox/templates/exceptions/programming_error.html:19 msgid "" "Ensure that PostgreSQL version 12 or later is in use. You can check this by " "connecting to the database using NetBox's credentials and issuing a query " "for SELECT VERSION()." msgstr "" -#: templates/extras/configcontext.html:45 -#: templates/extras/configtemplate.html:37 -#: templates/extras/exporttemplate.html:51 +#: netbox/templates/extras/configcontext.html:45 +#: netbox/templates/extras/configtemplate.html:37 +#: netbox/templates/extras/exporttemplate.html:51 msgid "The data file associated with this object has been deleted" msgstr "" -#: templates/extras/configcontext.html:54 -#: templates/extras/configtemplate.html:46 -#: templates/extras/exporttemplate.html:60 +#: netbox/templates/extras/configcontext.html:54 +#: netbox/templates/extras/configtemplate.html:46 +#: netbox/templates/extras/exporttemplate.html:60 msgid "Data Synced" msgstr "" -#: templates/extras/configcontext_list.html:7 -#: templates/extras/configtemplate_list.html:7 -#: templates/extras/exporttemplate_list.html:7 +#: netbox/templates/extras/configcontext_list.html:7 +#: netbox/templates/extras/configtemplate_list.html:7 +#: netbox/templates/extras/exporttemplate_list.html:7 msgid "Sync Data" msgstr "" -#: templates/extras/configtemplate.html:56 +#: netbox/templates/extras/configtemplate.html:56 msgid "Environment Parameters" msgstr "" -#: templates/extras/configtemplate.html:67 -#: templates/extras/exporttemplate.html:79 +#: netbox/templates/extras/configtemplate.html:67 +#: netbox/templates/extras/exporttemplate.html:79 msgid "Template" msgstr "" -#: templates/extras/customfield.html:30 templates/extras/customlink.html:21 +#: netbox/templates/extras/customfield.html:30 +#: netbox/templates/extras/customlink.html:21 msgid "Group Name" msgstr "" -#: templates/extras/customfield.html:42 +#: netbox/templates/extras/customfield.html:42 msgid "Must be Unique" msgstr "" -#: templates/extras/customfield.html:46 +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "" -#: templates/extras/customfield.html:56 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "" -#: templates/extras/customfield.html:73 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "" -#: templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "" -#: templates/extras/customfield.html:87 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "" -#: templates/extras/customfield.html:91 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "" -#: templates/extras/customfield.html:95 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "" -#: templates/extras/customfield.html:115 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "" -#: templates/extras/customfield.html:126 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "" -#: templates/extras/customlink.html:29 +#: netbox/templates/extras/customlink.html:29 msgid "Button Class" msgstr "" -#: templates/extras/customlink.html:39 templates/extras/exporttemplate.html:66 -#: templates/extras/savedfilter.html:39 +#: netbox/templates/extras/customlink.html:39 +#: netbox/templates/extras/exporttemplate.html:66 +#: netbox/templates/extras/savedfilter.html:39 msgid "Assigned Models" msgstr "" -#: templates/extras/customlink.html:52 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "" -#: templates/extras/customlink.html:58 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "" -#: templates/extras/dashboard/reset.html:4 templates/home.html:66 +#: netbox/templates/extras/dashboard/reset.html:4 netbox/templates/home.html:66 msgid "Reset Dashboard" msgstr "" -#: templates/extras/dashboard/reset.html:8 +#: netbox/templates/extras/dashboard/reset.html:8 msgid "" "This will remove all configured widgets and restore the " "default dashboard configuration." msgstr "" -#: templates/extras/dashboard/reset.html:13 +#: netbox/templates/extras/dashboard/reset.html:13 msgid "" "This change affects only your dashboard, and will not impact other " "users." msgstr "" -#: templates/extras/dashboard/widget.html:21 +#: netbox/templates/extras/dashboard/widget.html:21 msgid "widget configuration" msgstr "" -#: templates/extras/dashboard/widget.html:36 +#: netbox/templates/extras/dashboard/widget.html:36 msgid "Close widget" msgstr "" -#: templates/extras/dashboard/widget_add.html:7 +#: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "" -#: templates/extras/dashboard/widgets/bookmarks.html:14 +#: netbox/templates/extras/dashboard/widgets/bookmarks.html:14 msgid "No bookmarks have been added yet." msgstr "" -#: templates/extras/dashboard/widgets/objectcounts.html:10 +#: netbox/templates/extras/dashboard/widgets/objectcounts.html:10 msgid "No permission" msgstr "" -#: templates/extras/dashboard/widgets/objectlist.html:6 +#: netbox/templates/extras/dashboard/widgets/objectlist.html:6 msgid "No permission to view this content" msgstr "" -#: templates/extras/dashboard/widgets/objectlist.html:10 +#: netbox/templates/extras/dashboard/widgets/objectlist.html:10 msgid "Unable to load content. Invalid view name" msgstr "" -#: templates/extras/dashboard/widgets/rssfeed.html:12 +#: netbox/templates/extras/dashboard/widgets/rssfeed.html:12 msgid "No content found" msgstr "" -#: templates/extras/dashboard/widgets/rssfeed.html:18 +#: netbox/templates/extras/dashboard/widgets/rssfeed.html:18 msgid "There was a problem fetching the RSS feed" msgstr "" -#: templates/extras/dashboard/widgets/rssfeed.html:21 +#: netbox/templates/extras/dashboard/widgets/rssfeed.html:21 msgid "HTTP" msgstr "" -#: templates/extras/eventrule.html:61 +#: netbox/templates/extras/eventrule.html:61 msgid "Conditions" msgstr "" -#: templates/extras/exporttemplate.html:23 +#: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" msgstr "" -#: templates/extras/exporttemplate.html:27 +#: netbox/templates/extras/exporttemplate.html:27 msgid "File Extension" msgstr "" -#: templates/extras/htmx/script_result.html:10 +#: netbox/templates/extras/htmx/script_result.html:10 msgid "Scheduled for" msgstr "" -#: templates/extras/htmx/script_result.html:15 +#: netbox/templates/extras/htmx/script_result.html:15 msgid "Duration" msgstr "" -#: templates/extras/htmx/script_result.html:23 +#: netbox/templates/extras/htmx/script_result.html:23 msgid "Test Summary" msgstr "" -#: templates/extras/htmx/script_result.html:43 +#: netbox/templates/extras/htmx/script_result.html:43 msgid "Log" msgstr "" -#: templates/extras/htmx/script_result.html:56 +#: netbox/templates/extras/htmx/script_result.html:56 msgid "Output" msgstr "" -#: templates/extras/inc/result_pending.html:4 +#: netbox/templates/extras/inc/result_pending.html:4 msgid "Loading" msgstr "" -#: templates/extras/inc/result_pending.html:6 +#: netbox/templates/extras/inc/result_pending.html:6 msgid "Results pending" msgstr "" -#: templates/extras/journalentry.html:15 +#: netbox/templates/extras/journalentry.html:15 msgid "Journal Entry" msgstr "" -#: templates/extras/notificationgroup.html:11 +#: netbox/templates/extras/notificationgroup.html:11 msgid "Notification Group" msgstr "" -#: templates/extras/notificationgroup.html:36 -#: templates/extras/notificationgroup.html:46 -#: utilities/templates/widgets/clearable_file_input.html:12 +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 msgid "None assigned" msgstr "" -#: templates/extras/object_configcontext.html:19 +#: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" msgstr "" -#: templates/extras/object_configcontext.html:25 +#: netbox/templates/extras/object_configcontext.html:25 msgid "Source Contexts" msgstr "" -#: templates/extras/object_journal.html:17 +#: netbox/templates/extras/object_journal.html:17 msgid "New Journal Entry" msgstr "" -#: templates/extras/report/base.html:30 +#: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "" -#: templates/extras/script.html:14 +#: netbox/templates/extras/script.html:14 msgid "You do not have permission to run scripts" msgstr "" -#: templates/extras/script.html:41 templates/extras/script.html:45 -#: templates/extras/script_list.html:86 +#: netbox/templates/extras/script.html:41 +#: netbox/templates/extras/script.html:45 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "" -#: templates/extras/script.html:51 templates/extras/script/source.html:10 +#: netbox/templates/extras/script.html:51 +#: netbox/templates/extras/script/source.html:10 msgid "Error loading script" msgstr "" -#: templates/extras/script/jobs.html:16 +#: netbox/templates/extras/script/jobs.html:16 msgid "Script no longer exists in the source file." msgstr "" -#: templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "" -#: templates/extras/script_list.html:61 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "" -#: templates/extras/script_list.html:74 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "" -#: templates/extras/script_list.html:84 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "" -#: templates/extras/script_list.html:138 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "" -#: templates/extras/script_list.html:141 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " "an uploaded file or data source." msgstr "" -#: templates/extras/script_result.html:35 templates/generic/object_list.html:50 -#: templates/search.html:13 +#: netbox/templates/extras/script_result.html:35 +#: netbox/templates/generic/object_list.html:50 netbox/templates/search.html:13 msgid "Results" msgstr "" -#: templates/extras/script_result.html:46 +#: netbox/templates/extras/script_result.html:46 msgid "Log threshold" msgstr "" -#: templates/extras/script_result.html:56 +#: netbox/templates/extras/script_result.html:56 msgid "All" msgstr "" -#: templates/extras/tag.html:32 +#: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "" -#: templates/extras/tag.html:43 +#: netbox/templates/extras/tag.html:43 msgid "Allowed Object Types" msgstr "" -#: templates/extras/tag.html:51 +#: netbox/templates/extras/tag.html:51 msgid "Any" msgstr "" -#: templates/extras/tag.html:57 +#: netbox/templates/extras/tag.html:57 msgid "Tagged Item Types" msgstr "" -#: templates/extras/tag.html:81 +#: netbox/templates/extras/tag.html:81 msgid "Tagged Objects" msgstr "" -#: templates/extras/webhook.html:26 +#: netbox/templates/extras/webhook.html:26 msgid "HTTP Method" msgstr "" -#: templates/extras/webhook.html:34 +#: netbox/templates/extras/webhook.html:34 msgid "HTTP Content Type" msgstr "" -#: templates/extras/webhook.html:47 +#: netbox/templates/extras/webhook.html:47 msgid "SSL Verification" msgstr "" -#: templates/extras/webhook.html:60 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "" -#: templates/extras/webhook.html:70 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "" -#: templates/generic/bulk_add_component.html:29 +#: netbox/templates/generic/bulk_add_component.html:29 msgid "Bulk Creation" msgstr "" -#: templates/generic/bulk_add_component.html:34 -#: templates/generic/bulk_delete.html:32 templates/generic/bulk_edit.html:33 +#: netbox/templates/generic/bulk_add_component.html:34 +#: netbox/templates/generic/bulk_delete.html:32 +#: netbox/templates/generic/bulk_edit.html:33 msgid "Selected Objects" msgstr "" -#: templates/generic/bulk_add_component.html:58 +#: netbox/templates/generic/bulk_add_component.html:58 msgid "to Add" msgstr "" -#: templates/generic/bulk_delete.html:27 +#: netbox/templates/generic/bulk_delete.html:27 msgid "Bulk Delete" msgstr "" -#: templates/generic/bulk_delete.html:49 +#: netbox/templates/generic/bulk_delete.html:49 msgid "Confirm Bulk Deletion" msgstr "" -#: templates/generic/bulk_delete.html:50 +#: netbox/templates/generic/bulk_delete.html:50 #, python-format msgid "" "The following operation will delete %(count)s " @@ -12444,79 +13103,82 @@ msgid "" "this action." msgstr "" -#: templates/generic/bulk_edit.html:21 templates/generic/object_edit.html:22 +#: netbox/templates/generic/bulk_edit.html:21 +#: netbox/templates/generic/object_edit.html:22 msgid "Editing" msgstr "" -#: templates/generic/bulk_edit.html:28 +#: netbox/templates/generic/bulk_edit.html:28 msgid "Bulk Edit" msgstr "" -#: templates/generic/bulk_edit.html:107 templates/generic/bulk_rename.html:66 +#: netbox/templates/generic/bulk_edit.html:107 +#: netbox/templates/generic/bulk_rename.html:66 msgid "Apply" msgstr "" -#: templates/generic/bulk_import.html:19 +#: netbox/templates/generic/bulk_import.html:19 msgid "Bulk Import" msgstr "" -#: templates/generic/bulk_import.html:25 +#: netbox/templates/generic/bulk_import.html:25 msgid "Direct Import" msgstr "" -#: templates/generic/bulk_import.html:30 +#: netbox/templates/generic/bulk_import.html:30 msgid "Upload File" msgstr "" -#: templates/generic/bulk_import.html:58 templates/generic/bulk_import.html:80 -#: templates/generic/bulk_import.html:102 +#: netbox/templates/generic/bulk_import.html:58 +#: netbox/templates/generic/bulk_import.html:80 +#: netbox/templates/generic/bulk_import.html:102 msgid "Submit" msgstr "" -#: templates/generic/bulk_import.html:113 +#: netbox/templates/generic/bulk_import.html:113 msgid "Field Options" msgstr "" -#: templates/generic/bulk_import.html:119 +#: netbox/templates/generic/bulk_import.html:119 msgid "Accessor" msgstr "" -#: templates/generic/bulk_import.html:148 +#: netbox/templates/generic/bulk_import.html:148 msgid "choices" msgstr "" -#: templates/generic/bulk_import.html:161 +#: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "" -#: templates/generic/bulk_import.html:181 +#: netbox/templates/generic/bulk_import.html:181 msgid "Format: YYYY-MM-DD" msgstr "" -#: templates/generic/bulk_import.html:183 +#: netbox/templates/generic/bulk_import.html:183 msgid "Specify true or false" msgstr "" -#: templates/generic/bulk_import.html:195 +#: netbox/templates/generic/bulk_import.html:195 msgid "Required fields must be specified for all objects." msgstr "" -#: templates/generic/bulk_import.html:201 +#: netbox/templates/generic/bulk_import.html:201 #, python-format msgid "" "Related objects may be referenced by any unique attribute. For example, " "%(example)s would identify a VRF by its route distinguisher." msgstr "" -#: templates/generic/bulk_remove.html:28 +#: netbox/templates/generic/bulk_remove.html:28 msgid "Bulk Remove" msgstr "" -#: templates/generic/bulk_remove.html:42 +#: netbox/templates/generic/bulk_remove.html:42 msgid "Confirm Bulk Removal" msgstr "" -#: templates/generic/bulk_remove.html:43 +#: netbox/templates/generic/bulk_remove.html:43 #, python-format msgid "" "The following operation will remove %(count)s %(obj_type_plural)s from " @@ -12524,440 +13186,442 @@ msgid "" "removed and confirm below." msgstr "" -#: templates/generic/bulk_remove.html:64 +#: netbox/templates/generic/bulk_remove.html:64 #, python-format msgid "Remove these %(count)s %(obj_type_plural)s" msgstr "" -#: templates/generic/bulk_rename.html:20 +#: netbox/templates/generic/bulk_rename.html:20 msgid "Renaming" msgstr "" -#: templates/generic/bulk_rename.html:27 +#: netbox/templates/generic/bulk_rename.html:27 msgid "Bulk Rename" msgstr "" -#: templates/generic/bulk_rename.html:39 +#: netbox/templates/generic/bulk_rename.html:39 msgid "Current Name" msgstr "" -#: templates/generic/bulk_rename.html:40 +#: netbox/templates/generic/bulk_rename.html:40 msgid "New Name" msgstr "" -#: templates/generic/bulk_rename.html:64 -#: utilities/templates/widgets/markdown_input.html:11 +#: netbox/templates/generic/bulk_rename.html:64 +#: netbox/utilities/templates/widgets/markdown_input.html:11 msgid "Preview" msgstr "" -#: templates/generic/confirmation_form.html:16 +#: netbox/templates/generic/confirmation_form.html:16 msgid "Are you sure" msgstr "" -#: templates/generic/confirmation_form.html:20 +#: netbox/templates/generic/confirmation_form.html:20 msgid "Confirm" msgstr "" -#: templates/generic/object_children.html:47 -#: utilities/templates/buttons/bulk_edit.html:4 +#: netbox/templates/generic/object_children.html:47 +#: netbox/utilities/templates/buttons/bulk_edit.html:4 msgid "Edit Selected" msgstr "" -#: templates/generic/object_children.html:61 -#: utilities/templates/buttons/bulk_delete.html:4 +#: netbox/templates/generic/object_children.html:61 +#: netbox/utilities/templates/buttons/bulk_delete.html:4 msgid "Delete Selected" msgstr "" -#: templates/generic/object_edit.html:24 +#: netbox/templates/generic/object_edit.html:24 #, python-format msgid "Add a new %(object_type)s" msgstr "" -#: templates/generic/object_edit.html:35 +#: netbox/templates/generic/object_edit.html:35 msgid "View model documentation" msgstr "" -#: templates/generic/object_edit.html:36 +#: netbox/templates/generic/object_edit.html:36 msgid "Help" msgstr "" -#: templates/generic/object_edit.html:83 +#: netbox/templates/generic/object_edit.html:83 msgid "Create & Add Another" msgstr "" -#: templates/generic/object_list.html:57 +#: netbox/templates/generic/object_list.html:57 msgid "Filters" msgstr "" -#: templates/generic/object_list.html:88 +#: netbox/templates/generic/object_list.html:88 #, python-format msgid "" "Select all %(count)s " "%(object_type_plural)s matching query" msgstr "" -#: templates/home.html:15 +#: netbox/templates/home.html:15 msgid "New Release Available" msgstr "" -#: templates/home.html:16 +#: netbox/templates/home.html:16 msgid "is available" msgstr "" -#: templates/home.html:18 +#: netbox/templates/home.html:18 msgctxt "Document title" msgid "Upgrade Instructions" msgstr "" -#: templates/home.html:40 +#: netbox/templates/home.html:40 msgid "Unlock Dashboard" msgstr "" -#: templates/home.html:49 +#: netbox/templates/home.html:49 msgid "Lock Dashboard" msgstr "" -#: templates/home.html:60 +#: netbox/templates/home.html:60 msgid "Add Widget" msgstr "" -#: templates/home.html:63 +#: netbox/templates/home.html:63 msgid "Save Layout" msgstr "" -#: templates/htmx/delete_form.html:7 +#: netbox/templates/htmx/delete_form.html:7 msgid "Confirm Deletion" msgstr "" -#: templates/htmx/delete_form.html:11 +#: netbox/templates/htmx/delete_form.html:11 #, python-format msgid "" "Are you sure you want to delete " "%(object_type)s %(object)s?" msgstr "" -#: templates/htmx/delete_form.html:17 +#: netbox/templates/htmx/delete_form.html:17 msgid "The following objects will be deleted as a result of this action." msgstr "" -#: templates/htmx/notifications.html:15 +#: netbox/templates/htmx/notifications.html:15 msgid "ago" msgstr "" -#: templates/htmx/notifications.html:26 +#: netbox/templates/htmx/notifications.html:26 msgid "No unread notifications" msgstr "" -#: templates/htmx/notifications.html:31 +#: netbox/templates/htmx/notifications.html:31 msgid "All notifications" msgstr "" -#: templates/htmx/object_selector.html:5 +#: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "" -#: templates/inc/filter_list.html:42 -#: utilities/templates/helpers/table_config_form.html:39 +#: netbox/templates/inc/filter_list.html:42 +#: netbox/utilities/templates/helpers/table_config_form.html:39 msgid "Reset" msgstr "" -#: templates/inc/light_toggle.html:4 +#: netbox/templates/inc/light_toggle.html:4 msgid "Enable dark mode" msgstr "" -#: templates/inc/light_toggle.html:7 +#: netbox/templates/inc/light_toggle.html:7 msgid "Enable light mode" msgstr "" -#: templates/inc/missing_prerequisites.html:8 +#: netbox/templates/inc/missing_prerequisites.html:8 #, python-format msgid "" "Before you can add a %(model)s you must first create a " "%(prerequisite_model)s." msgstr "" -#: templates/inc/paginator.html:15 +#: netbox/templates/inc/paginator.html:15 msgid "Page selection" msgstr "" -#: templates/inc/paginator.html:75 +#: netbox/templates/inc/paginator.html:75 #, python-format msgid "Showing %(start)s-%(end)s of %(total)s" msgstr "" -#: templates/inc/paginator.html:82 +#: netbox/templates/inc/paginator.html:82 msgid "Pagination options" msgstr "" -#: templates/inc/paginator.html:86 +#: netbox/templates/inc/paginator.html:86 msgid "Per Page" msgstr "" -#: templates/inc/panels/image_attachments.html:10 +#: netbox/templates/inc/panels/image_attachments.html:10 msgid "Attach an image" msgstr "" -#: templates/inc/panels/related_objects.html:5 +#: netbox/templates/inc/panels/related_objects.html:5 msgid "Related Objects" msgstr "" -#: templates/inc/panels/tags.html:11 +#: netbox/templates/inc/panels/tags.html:11 msgid "No tags assigned" msgstr "" -#: templates/inc/sync_warning.html:10 +#: netbox/templates/inc/sync_warning.html:10 msgid "Data is out of sync with upstream file" msgstr "" -#: templates/inc/table_controls_htmx.html:7 +#: netbox/templates/inc/table_controls_htmx.html:7 msgid "Quick search" msgstr "" -#: templates/inc/table_controls_htmx.html:20 +#: netbox/templates/inc/table_controls_htmx.html:20 msgid "Saved filter" msgstr "" -#: templates/inc/table_htmx.html:18 +#: netbox/templates/inc/table_htmx.html:18 msgid "Clear ordering" msgstr "" -#: templates/inc/user_menu.html:6 +#: netbox/templates/inc/user_menu.html:6 msgid "Help center" msgstr "" -#: templates/inc/user_menu.html:41 +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "" -#: templates/inc/user_menu.html:61 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "" -#: templates/inc/user_menu.html:68 templates/login.html:38 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "" -#: templates/ipam/aggregate.html:14 templates/ipam/ipaddress.html:14 -#: templates/ipam/iprange.html:13 templates/ipam/prefix.html:15 +#: netbox/templates/ipam/aggregate.html:14 +#: netbox/templates/ipam/ipaddress.html:14 +#: netbox/templates/ipam/iprange.html:13 netbox/templates/ipam/prefix.html:15 msgid "Family" msgstr "" -#: templates/ipam/aggregate.html:39 +#: netbox/templates/ipam/aggregate.html:39 msgid "Date Added" msgstr "" -#: templates/ipam/aggregate/prefixes.html:8 -#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10 +#: netbox/templates/ipam/aggregate/prefixes.html:8 +#: netbox/templates/ipam/prefix/prefixes.html:8 +#: netbox/templates/ipam/role.html:10 msgid "Add Prefix" msgstr "" -#: templates/ipam/asn.html:23 +#: netbox/templates/ipam/asn.html:23 msgid "AS Number" msgstr "" -#: templates/ipam/fhrpgroup.html:52 +#: netbox/templates/ipam/fhrpgroup.html:52 msgid "Authentication Type" msgstr "" -#: templates/ipam/fhrpgroup.html:56 +#: netbox/templates/ipam/fhrpgroup.html:56 msgid "Authentication Key" msgstr "" -#: templates/ipam/fhrpgroup.html:69 +#: netbox/templates/ipam/fhrpgroup.html:69 msgid "Virtual IP Addresses" msgstr "" -#: templates/ipam/inc/ipaddress_edit_header.html:13 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:13 msgid "Assign IP" msgstr "" -#: templates/ipam/inc/ipaddress_edit_header.html:19 +#: netbox/templates/ipam/inc/ipaddress_edit_header.html:19 msgid "Bulk Create" msgstr "" -#: templates/ipam/inc/panels/fhrp_groups.html:10 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:10 msgid "Create Group" msgstr "" -#: templates/ipam/inc/panels/fhrp_groups.html:25 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "" -#: templates/ipam/inc/toggle_available.html:7 +#: netbox/templates/ipam/inc/toggle_available.html:7 msgid "Show Assigned" msgstr "" -#: templates/ipam/inc/toggle_available.html:10 +#: netbox/templates/ipam/inc/toggle_available.html:10 msgid "Show Available" msgstr "" -#: templates/ipam/inc/toggle_available.html:13 +#: netbox/templates/ipam/inc/toggle_available.html:13 msgid "Show All" msgstr "" -#: templates/ipam/ipaddress.html:23 templates/ipam/iprange.html:45 -#: templates/ipam/prefix.html:24 +#: netbox/templates/ipam/ipaddress.html:23 +#: netbox/templates/ipam/iprange.html:45 netbox/templates/ipam/prefix.html:24 msgid "Global" msgstr "" -#: templates/ipam/ipaddress.html:85 +#: netbox/templates/ipam/ipaddress.html:85 msgid "NAT (outside)" msgstr "" -#: templates/ipam/ipaddress_assign.html:8 +#: netbox/templates/ipam/ipaddress_assign.html:8 msgid "Assign an IP Address" msgstr "" -#: templates/ipam/ipaddress_assign.html:22 +#: netbox/templates/ipam/ipaddress_assign.html:22 msgid "Select IP Address" msgstr "" -#: templates/ipam/ipaddress_assign.html:35 +#: netbox/templates/ipam/ipaddress_assign.html:35 msgid "Search Results" msgstr "" -#: templates/ipam/ipaddress_bulk_add.html:6 +#: netbox/templates/ipam/ipaddress_bulk_add.html:6 msgid "Bulk Add IP Addresses" msgstr "" -#: templates/ipam/iprange.html:17 +#: netbox/templates/ipam/iprange.html:17 msgid "Starting Address" msgstr "" -#: templates/ipam/iprange.html:21 +#: netbox/templates/ipam/iprange.html:21 msgid "Ending Address" msgstr "" -#: templates/ipam/iprange.html:33 templates/ipam/prefix.html:110 +#: netbox/templates/ipam/iprange.html:33 netbox/templates/ipam/prefix.html:110 msgid "Marked fully utilized" msgstr "" -#: templates/ipam/prefix.html:99 +#: netbox/templates/ipam/prefix.html:99 msgid "Addressing Details" msgstr "" -#: templates/ipam/prefix.html:118 +#: netbox/templates/ipam/prefix.html:118 msgid "Child IPs" msgstr "" -#: templates/ipam/prefix.html:126 +#: netbox/templates/ipam/prefix.html:126 msgid "Available IPs" msgstr "" -#: templates/ipam/prefix.html:138 +#: netbox/templates/ipam/prefix.html:138 msgid "First available IP" msgstr "" -#: templates/ipam/prefix.html:179 +#: netbox/templates/ipam/prefix.html:179 msgid "Prefix Details" msgstr "" -#: templates/ipam/prefix.html:185 +#: netbox/templates/ipam/prefix.html:185 msgid "Network Address" msgstr "" -#: templates/ipam/prefix.html:189 +#: netbox/templates/ipam/prefix.html:189 msgid "Network Mask" msgstr "" -#: templates/ipam/prefix.html:193 +#: netbox/templates/ipam/prefix.html:193 msgid "Wildcard Mask" msgstr "" -#: templates/ipam/prefix.html:197 +#: netbox/templates/ipam/prefix.html:197 msgid "Broadcast Address" msgstr "" -#: templates/ipam/prefix/ip_ranges.html:7 +#: netbox/templates/ipam/prefix/ip_ranges.html:7 msgid "Add IP Range" msgstr "" -#: templates/ipam/prefix_list.html:7 +#: netbox/templates/ipam/prefix_list.html:7 msgid "Hide Depth Indicators" msgstr "" -#: templates/ipam/prefix_list.html:11 +#: netbox/templates/ipam/prefix_list.html:11 msgid "Max Depth" msgstr "" -#: templates/ipam/prefix_list.html:28 +#: netbox/templates/ipam/prefix_list.html:28 msgid "Max Length" msgstr "" -#: templates/ipam/rir.html:10 +#: netbox/templates/ipam/rir.html:10 msgid "Add Aggregate" msgstr "" -#: templates/ipam/routetarget.html:38 +#: netbox/templates/ipam/routetarget.html:38 msgid "Importing VRFs" msgstr "" -#: templates/ipam/routetarget.html:44 +#: netbox/templates/ipam/routetarget.html:44 msgid "Exporting VRFs" msgstr "" -#: templates/ipam/routetarget.html:52 +#: netbox/templates/ipam/routetarget.html:52 msgid "Importing L2VPNs" msgstr "" -#: templates/ipam/routetarget.html:58 +#: netbox/templates/ipam/routetarget.html:58 msgid "Exporting L2VPNs" msgstr "" -#: templates/ipam/vlan.html:88 +#: netbox/templates/ipam/vlan.html:88 msgid "Add a Prefix" msgstr "" -#: templates/ipam/vlangroup.html:18 +#: netbox/templates/ipam/vlangroup.html:18 msgid "Add VLAN" msgstr "" -#: templates/ipam/vrf.html:16 +#: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "" -#: templates/ipam/vrf.html:29 +#: netbox/templates/ipam/vrf.html:29 msgid "Unique IP Space" msgstr "" -#: templates/login.html:29 -#: utilities/templates/form_helpers/render_errors.html:7 +#: netbox/templates/login.html:29 +#: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "" -#: templates/login.html:69 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "" -#: templates/login.html:77 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "" -#: templates/media_failure.html:7 +#: netbox/templates/media_failure.html:7 msgid "Static Media Failure - NetBox" msgstr "" -#: templates/media_failure.html:21 +#: netbox/templates/media_failure.html:21 msgid "Static Media Failure" msgstr "" -#: templates/media_failure.html:23 +#: netbox/templates/media_failure.html:23 msgid "The following static media file failed to load" msgstr "" -#: templates/media_failure.html:26 +#: netbox/templates/media_failure.html:26 msgid "Check the following" msgstr "" -#: templates/media_failure.html:29 +#: netbox/templates/media_failure.html:29 msgid "" "manage.py collectstatic was run during the most recent upgrade. " "This installs the most recent iteration of each static file into the static " "root path." msgstr "" -#: templates/media_failure.html:35 +#: netbox/templates/media_failure.html:35 #, python-format msgid "" "The HTTP service (e.g. nginx or Apache) is configured to serve files from " @@ -12965,1879 +13629,1916 @@ msgid "" "installation documentation for further guidance." msgstr "" -#: templates/media_failure.html:47 +#: netbox/templates/media_failure.html:47 #, python-format msgid "" "The file %(filename)s exists in the static root directory and " "is readable by the HTTP server." msgstr "" -#: templates/media_failure.html:55 +#: netbox/templates/media_failure.html:55 #, python-format msgid "" "Click here to attempt loading NetBox again." msgstr "" -#: templates/tenancy/contact.html:18 tenancy/filtersets.py:148 -#: tenancy/forms/bulk_edit.py:137 tenancy/forms/filtersets.py:102 -#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:106 -#: tenancy/forms/model_forms.py:130 tenancy/tables/contacts.py:98 +#: netbox/templates/tenancy/contact.html:18 netbox/tenancy/filtersets.py:148 +#: netbox/tenancy/forms/bulk_edit.py:137 netbox/tenancy/forms/filtersets.py:102 +#: netbox/tenancy/forms/forms.py:56 netbox/tenancy/forms/model_forms.py:106 +#: netbox/tenancy/forms/model_forms.py:130 netbox/tenancy/tables/contacts.py:98 msgid "Contact" msgstr "" -#: templates/tenancy/contact.html:29 tenancy/forms/bulk_edit.py:99 +#: netbox/templates/tenancy/contact.html:29 +#: netbox/tenancy/forms/bulk_edit.py:99 msgid "Title" msgstr "" -#: templates/tenancy/contact.html:33 tenancy/forms/bulk_edit.py:104 -#: tenancy/tables/contacts.py:64 +#: netbox/templates/tenancy/contact.html:33 +#: netbox/tenancy/forms/bulk_edit.py:104 netbox/tenancy/tables/contacts.py:64 msgid "Phone" msgstr "" -#: templates/tenancy/contactgroup.html:18 tenancy/forms/forms.py:66 -#: tenancy/forms/model_forms.py:75 +#: netbox/templates/tenancy/contactgroup.html:18 +#: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" msgstr "" -#: templates/tenancy/contactgroup.html:50 +#: netbox/templates/tenancy/contactgroup.html:50 msgid "Add Contact Group" msgstr "" -#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:153 -#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:87 +#: netbox/templates/tenancy/contactrole.html:15 +#: netbox/tenancy/filtersets.py:153 netbox/tenancy/forms/forms.py:61 +#: netbox/tenancy/forms/model_forms.py:87 msgid "Contact Role" msgstr "" -#: templates/tenancy/object_contacts.html:9 +#: netbox/templates/tenancy/object_contacts.html:9 msgid "Add a contact" msgstr "" -#: templates/tenancy/tenantgroup.html:17 +#: netbox/templates/tenancy/tenantgroup.html:17 msgid "Add Tenant" msgstr "" -#: templates/tenancy/tenantgroup.html:26 tenancy/forms/model_forms.py:32 -#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61 +#: netbox/templates/tenancy/tenantgroup.html:26 +#: netbox/tenancy/forms/model_forms.py:32 netbox/tenancy/tables/columns.py:51 +#: netbox/tenancy/tables/columns.py:61 msgid "Tenant Group" msgstr "" -#: templates/tenancy/tenantgroup.html:59 +#: netbox/templates/tenancy/tenantgroup.html:59 msgid "Add Tenant Group" msgstr "" -#: templates/users/group.html:39 templates/users/user.html:63 +#: netbox/templates/users/group.html:39 netbox/templates/users/user.html:63 msgid "Assigned Permissions" msgstr "" -#: templates/users/objectpermission.html:6 -#: templates/users/objectpermission.html:14 users/forms/filtersets.py:66 +#: netbox/templates/users/objectpermission.html:6 +#: netbox/templates/users/objectpermission.html:14 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "" -#: templates/users/objectpermission.html:34 +#: netbox/templates/users/objectpermission.html:34 msgid "View" msgstr "" -#: templates/users/objectpermission.html:52 users/forms/model_forms.py:316 +#: netbox/templates/users/objectpermission.html:52 +#: netbox/users/forms/model_forms.py:316 msgid "Constraints" msgstr "" -#: templates/users/objectpermission.html:72 +#: netbox/templates/users/objectpermission.html:72 msgid "Assigned Users" msgstr "" -#: templates/virtualization/cluster.html:52 +#: netbox/templates/virtualization/cluster.html:52 msgid "Allocated Resources" msgstr "" -#: templates/virtualization/cluster.html:55 -#: templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/cluster.html:55 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "" -#: templates/virtualization/cluster.html:59 -#: templates/virtualization/virtualmachine.html:129 +#: netbox/templates/virtualization/cluster.html:59 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "" -#: templates/virtualization/cluster.html:69 -#: templates/virtualization/virtualmachine.html:140 +#: netbox/templates/virtualization/cluster.html:69 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "" -#: templates/virtualization/cluster.html:72 +#: netbox/templates/virtualization/cluster.html:72 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "" -#: templates/virtualization/cluster/base.html:18 +#: netbox/templates/virtualization/cluster/base.html:18 msgid "Add Virtual Machine" msgstr "" -#: templates/virtualization/cluster/base.html:24 +#: netbox/templates/virtualization/cluster/base.html:24 msgid "Assign Device" msgstr "" -#: templates/virtualization/cluster/devices.html:10 +#: netbox/templates/virtualization/cluster/devices.html:10 msgid "Remove Selected" msgstr "" -#: templates/virtualization/cluster_add_devices.html:9 +#: netbox/templates/virtualization/cluster_add_devices.html:9 #, python-format msgid "Add Device to Cluster %(cluster)s" msgstr "" -#: templates/virtualization/cluster_add_devices.html:23 +#: netbox/templates/virtualization/cluster_add_devices.html:23 msgid "Device Selection" msgstr "" -#: templates/virtualization/cluster_add_devices.html:31 +#: netbox/templates/virtualization/cluster_add_devices.html:31 msgid "Add Devices" msgstr "" -#: templates/virtualization/clustergroup.html:10 -#: templates/virtualization/clustertype.html:10 +#: netbox/templates/virtualization/clustergroup.html:10 +#: netbox/templates/virtualization/clustertype.html:10 msgid "Add Cluster" msgstr "" -#: templates/virtualization/clustergroup.html:19 -#: virtualization/forms/model_forms.py:50 +#: netbox/templates/virtualization/clustergroup.html:19 +#: netbox/virtualization/forms/model_forms.py:50 msgid "Cluster Group" msgstr "" -#: templates/virtualization/clustertype.html:19 -#: templates/virtualization/virtualmachine.html:110 -#: virtualization/forms/model_forms.py:36 +#: netbox/templates/virtualization/clustertype.html:19 +#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "" -#: templates/virtualization/virtualdisk.html:18 +#: netbox/templates/virtualization/virtualdisk.html:18 msgid "Virtual Disk" msgstr "" -#: templates/virtualization/virtualmachine.html:122 -#: virtualization/forms/bulk_edit.py:190 -#: virtualization/forms/model_forms.py:224 +#: netbox/templates/virtualization/virtualmachine.html:122 +#: netbox/virtualization/forms/bulk_edit.py:190 +#: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "" -#: templates/virtualization/virtualmachine.html:178 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "" -#: templates/vpn/ikepolicy.html:10 templates/vpn/ipsecprofile.html:33 -#: vpn/tables/crypto.py:166 +#: netbox/templates/vpn/ikepolicy.html:10 +#: netbox/templates/vpn/ipsecprofile.html:33 netbox/vpn/tables/crypto.py:166 msgid "IKE Policy" msgstr "" -#: templates/vpn/ikepolicy.html:21 +#: netbox/templates/vpn/ikepolicy.html:21 msgid "IKE Version" msgstr "" -#: templates/vpn/ikepolicy.html:29 +#: netbox/templates/vpn/ikepolicy.html:29 msgid "Pre-Shared Key" msgstr "" -#: templates/vpn/ikepolicy.html:33 -#: templates/wireless/inc/authentication_attrs.html:20 +#: netbox/templates/vpn/ikepolicy.html:33 +#: netbox/templates/wireless/inc/authentication_attrs.html:20 msgid "Show Secret" msgstr "" -#: templates/vpn/ikepolicy.html:57 templates/vpn/ipsecpolicy.html:45 -#: templates/vpn/ipsecprofile.html:52 templates/vpn/ipsecprofile.html:77 -#: vpn/forms/model_forms.py:316 vpn/forms/model_forms.py:352 -#: vpn/tables/crypto.py:68 vpn/tables/crypto.py:134 +#: netbox/templates/vpn/ikepolicy.html:57 +#: netbox/templates/vpn/ipsecpolicy.html:45 +#: netbox/templates/vpn/ipsecprofile.html:52 +#: netbox/templates/vpn/ipsecprofile.html:77 +#: netbox/vpn/forms/model_forms.py:316 netbox/vpn/forms/model_forms.py:352 +#: netbox/vpn/tables/crypto.py:68 netbox/vpn/tables/crypto.py:134 msgid "Proposals" msgstr "" -#: templates/vpn/ikeproposal.html:10 +#: netbox/templates/vpn/ikeproposal.html:10 msgid "IKE Proposal" msgstr "" -#: templates/vpn/ikeproposal.html:21 vpn/forms/bulk_edit.py:97 -#: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:101 +#: netbox/templates/vpn/ikeproposal.html:21 netbox/vpn/forms/bulk_edit.py:97 +#: netbox/vpn/forms/bulk_import.py:145 netbox/vpn/forms/filtersets.py:101 msgid "Authentication method" msgstr "" -#: templates/vpn/ikeproposal.html:25 templates/vpn/ipsecproposal.html:21 -#: vpn/forms/bulk_edit.py:102 vpn/forms/bulk_edit.py:172 -#: vpn/forms/bulk_import.py:149 vpn/forms/bulk_import.py:195 -#: vpn/forms/filtersets.py:106 vpn/forms/filtersets.py:154 +#: netbox/templates/vpn/ikeproposal.html:25 +#: netbox/templates/vpn/ipsecproposal.html:21 netbox/vpn/forms/bulk_edit.py:102 +#: netbox/vpn/forms/bulk_edit.py:172 netbox/vpn/forms/bulk_import.py:149 +#: netbox/vpn/forms/bulk_import.py:195 netbox/vpn/forms/filtersets.py:106 +#: netbox/vpn/forms/filtersets.py:154 msgid "Encryption algorithm" msgstr "" -#: templates/vpn/ikeproposal.html:29 templates/vpn/ipsecproposal.html:25 -#: vpn/forms/bulk_edit.py:107 vpn/forms/bulk_edit.py:177 -#: vpn/forms/bulk_import.py:153 vpn/forms/bulk_import.py:200 -#: vpn/forms/filtersets.py:111 vpn/forms/filtersets.py:159 +#: netbox/templates/vpn/ikeproposal.html:29 +#: netbox/templates/vpn/ipsecproposal.html:25 netbox/vpn/forms/bulk_edit.py:107 +#: netbox/vpn/forms/bulk_edit.py:177 netbox/vpn/forms/bulk_import.py:153 +#: netbox/vpn/forms/bulk_import.py:200 netbox/vpn/forms/filtersets.py:111 +#: netbox/vpn/forms/filtersets.py:159 msgid "Authentication algorithm" msgstr "" -#: templates/vpn/ikeproposal.html:33 +#: netbox/templates/vpn/ikeproposal.html:33 msgid "DH group" msgstr "" -#: templates/vpn/ikeproposal.html:37 templates/vpn/ipsecproposal.html:29 -#: vpn/forms/bulk_edit.py:182 vpn/models/crypto.py:146 +#: netbox/templates/vpn/ikeproposal.html:37 +#: netbox/templates/vpn/ipsecproposal.html:29 netbox/vpn/forms/bulk_edit.py:182 +#: netbox/vpn/models/crypto.py:146 msgid "SA lifetime (seconds)" msgstr "" -#: templates/vpn/ipsecpolicy.html:10 templates/vpn/ipsecprofile.html:66 -#: vpn/tables/crypto.py:170 +#: netbox/templates/vpn/ipsecpolicy.html:10 +#: netbox/templates/vpn/ipsecprofile.html:66 netbox/vpn/tables/crypto.py:170 msgid "IPSec Policy" msgstr "" -#: templates/vpn/ipsecpolicy.html:21 vpn/forms/bulk_edit.py:210 -#: vpn/models/crypto.py:193 +#: netbox/templates/vpn/ipsecpolicy.html:21 netbox/vpn/forms/bulk_edit.py:210 +#: netbox/vpn/models/crypto.py:193 msgid "PFS group" msgstr "" -#: templates/vpn/ipsecprofile.html:10 vpn/forms/model_forms.py:54 +#: netbox/templates/vpn/ipsecprofile.html:10 netbox/vpn/forms/model_forms.py:54 msgid "IPSec Profile" msgstr "" -#: templates/vpn/ipsecprofile.html:89 vpn/tables/crypto.py:137 +#: netbox/templates/vpn/ipsecprofile.html:89 netbox/vpn/tables/crypto.py:137 msgid "PFS Group" msgstr "" -#: templates/vpn/ipsecproposal.html:10 +#: netbox/templates/vpn/ipsecproposal.html:10 msgid "IPSec Proposal" msgstr "" -#: templates/vpn/ipsecproposal.html:33 vpn/forms/bulk_edit.py:186 -#: vpn/models/crypto.py:152 +#: netbox/templates/vpn/ipsecproposal.html:33 netbox/vpn/forms/bulk_edit.py:186 +#: netbox/vpn/models/crypto.py:152 msgid "SA lifetime (KB)" msgstr "" -#: templates/vpn/l2vpn.html:11 templates/vpn/l2vpntermination.html:9 +#: netbox/templates/vpn/l2vpn.html:11 +#: netbox/templates/vpn/l2vpntermination.html:9 msgid "L2VPN Attributes" msgstr "" -#: templates/vpn/l2vpn.html:60 templates/vpn/tunnel.html:76 +#: netbox/templates/vpn/l2vpn.html:60 netbox/templates/vpn/tunnel.html:76 msgid "Add a Termination" msgstr "" -#: templates/vpn/tunnel.html:9 +#: netbox/templates/vpn/tunnel.html:9 msgid "Add Termination" msgstr "" -#: templates/vpn/tunnel.html:37 vpn/forms/bulk_edit.py:49 -#: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:57 +#: netbox/templates/vpn/tunnel.html:37 netbox/vpn/forms/bulk_edit.py:49 +#: netbox/vpn/forms/bulk_import.py:48 netbox/vpn/forms/filtersets.py:57 msgid "Encapsulation" msgstr "" -#: templates/vpn/tunnel.html:41 vpn/forms/bulk_edit.py:55 -#: vpn/forms/bulk_import.py:53 vpn/forms/filtersets.py:64 -#: vpn/models/crypto.py:250 vpn/tables/tunnels.py:51 +#: netbox/templates/vpn/tunnel.html:41 netbox/vpn/forms/bulk_edit.py:55 +#: netbox/vpn/forms/bulk_import.py:53 netbox/vpn/forms/filtersets.py:64 +#: netbox/vpn/models/crypto.py:250 netbox/vpn/tables/tunnels.py:51 msgid "IPSec profile" msgstr "" -#: templates/vpn/tunnel.html:45 vpn/forms/bulk_edit.py:69 -#: vpn/forms/filtersets.py:68 +#: netbox/templates/vpn/tunnel.html:45 netbox/vpn/forms/bulk_edit.py:69 +#: netbox/vpn/forms/filtersets.py:68 msgid "Tunnel ID" msgstr "" -#: templates/vpn/tunnelgroup.html:14 +#: netbox/templates/vpn/tunnelgroup.html:14 msgid "Add Tunnel" msgstr "" -#: templates/vpn/tunnelgroup.html:23 vpn/forms/model_forms.py:36 -#: vpn/forms/model_forms.py:49 +#: netbox/templates/vpn/tunnelgroup.html:23 netbox/vpn/forms/model_forms.py:36 +#: netbox/vpn/forms/model_forms.py:49 msgid "Tunnel Group" msgstr "" -#: templates/vpn/tunneltermination.html:10 +#: netbox/templates/vpn/tunneltermination.html:10 msgid "Tunnel Termination" msgstr "" -#: templates/vpn/tunneltermination.html:35 vpn/forms/bulk_import.py:107 -#: vpn/forms/model_forms.py:102 vpn/forms/model_forms.py:138 -#: vpn/forms/model_forms.py:247 vpn/tables/tunnels.py:101 +#: netbox/templates/vpn/tunneltermination.html:35 +#: netbox/vpn/forms/bulk_import.py:107 netbox/vpn/forms/model_forms.py:102 +#: netbox/vpn/forms/model_forms.py:138 netbox/vpn/forms/model_forms.py:247 +#: netbox/vpn/tables/tunnels.py:101 msgid "Outside IP" msgstr "" -#: templates/vpn/tunneltermination.html:51 +#: netbox/templates/vpn/tunneltermination.html:51 msgid "Peer Terminations" msgstr "" -#: templates/wireless/inc/authentication_attrs.html:12 +#: netbox/templates/wireless/inc/authentication_attrs.html:12 msgid "Cipher" msgstr "" -#: templates/wireless/inc/authentication_attrs.html:16 +#: netbox/templates/wireless/inc/authentication_attrs.html:16 msgid "PSK" msgstr "" -#: templates/wireless/inc/wirelesslink_interface.html:35 -#: templates/wireless/inc/wirelesslink_interface.html:45 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:35 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:45 msgctxt "Abbreviation for megahertz" msgid "MHz" msgstr "" -#: templates/wireless/wirelesslan.html:57 +#: netbox/templates/wireless/wirelesslan.html:57 msgid "Attached Interfaces" msgstr "" -#: templates/wireless/wirelesslangroup.html:17 +#: netbox/templates/wireless/wirelesslangroup.html:17 msgid "Add Wireless LAN" msgstr "" -#: templates/wireless/wirelesslangroup.html:26 wireless/forms/model_forms.py:28 +#: netbox/templates/wireless/wirelesslangroup.html:26 +#: netbox/wireless/forms/model_forms.py:28 msgid "Wireless LAN Group" msgstr "" -#: templates/wireless/wirelesslangroup.html:59 +#: netbox/templates/wireless/wirelesslangroup.html:59 msgid "Add Wireless LAN Group" msgstr "" -#: templates/wireless/wirelesslink.html:14 +#: netbox/templates/wireless/wirelesslink.html:14 msgid "Link Properties" msgstr "" -#: templates/wireless/wirelesslink.html:38 wireless/forms/bulk_edit.py:129 -#: wireless/forms/filtersets.py:102 wireless/forms/model_forms.py:165 +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 msgid "Distance" msgstr "" -#: tenancy/filtersets.py:29 +#: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" msgstr "" -#: tenancy/filtersets.py:35 +#: netbox/tenancy/filtersets.py:35 msgid "Parent contact group (slug)" msgstr "" -#: tenancy/filtersets.py:41 tenancy/filtersets.py:68 tenancy/filtersets.py:111 +#: netbox/tenancy/filtersets.py:41 netbox/tenancy/filtersets.py:68 +#: netbox/tenancy/filtersets.py:111 msgid "Contact group (ID)" msgstr "" -#: tenancy/filtersets.py:48 tenancy/filtersets.py:75 tenancy/filtersets.py:118 +#: netbox/tenancy/filtersets.py:48 netbox/tenancy/filtersets.py:75 +#: netbox/tenancy/filtersets.py:118 msgid "Contact group (slug)" msgstr "" -#: tenancy/filtersets.py:105 +#: netbox/tenancy/filtersets.py:105 msgid "Contact (ID)" msgstr "" -#: tenancy/filtersets.py:122 +#: netbox/tenancy/filtersets.py:122 msgid "Contact role (ID)" msgstr "" -#: tenancy/filtersets.py:128 +#: netbox/tenancy/filtersets.py:128 msgid "Contact role (slug)" msgstr "" -#: tenancy/filtersets.py:159 +#: netbox/tenancy/filtersets.py:159 msgid "Contact group" msgstr "" -#: tenancy/filtersets.py:170 +#: netbox/tenancy/filtersets.py:170 msgid "Parent tenant group (ID)" msgstr "" -#: tenancy/filtersets.py:176 +#: netbox/tenancy/filtersets.py:176 msgid "Parent tenant group (slug)" msgstr "" -#: tenancy/filtersets.py:182 tenancy/filtersets.py:202 +#: netbox/tenancy/filtersets.py:182 netbox/tenancy/filtersets.py:202 msgid "Tenant group (ID)" msgstr "" -#: tenancy/filtersets.py:235 +#: netbox/tenancy/filtersets.py:235 msgid "Tenant Group (ID)" msgstr "" -#: tenancy/filtersets.py:242 +#: netbox/tenancy/filtersets.py:242 msgid "Tenant Group (slug)" msgstr "" -#: tenancy/forms/bulk_edit.py:66 +#: netbox/tenancy/forms/bulk_edit.py:66 msgid "Desciption" msgstr "" -#: tenancy/forms/bulk_import.py:101 +#: netbox/tenancy/forms/bulk_import.py:101 msgid "Assigned contact" msgstr "" -#: tenancy/models/contacts.py:32 +#: netbox/tenancy/models/contacts.py:32 msgid "contact group" msgstr "" -#: tenancy/models/contacts.py:33 +#: netbox/tenancy/models/contacts.py:33 msgid "contact groups" msgstr "" -#: tenancy/models/contacts.py:48 +#: netbox/tenancy/models/contacts.py:48 msgid "contact role" msgstr "" -#: tenancy/models/contacts.py:49 +#: netbox/tenancy/models/contacts.py:49 msgid "contact roles" msgstr "" -#: tenancy/models/contacts.py:68 +#: netbox/tenancy/models/contacts.py:68 msgid "title" msgstr "" -#: tenancy/models/contacts.py:73 +#: netbox/tenancy/models/contacts.py:73 msgid "phone" msgstr "" -#: tenancy/models/contacts.py:78 +#: netbox/tenancy/models/contacts.py:78 msgid "email" msgstr "" -#: tenancy/models/contacts.py:87 +#: netbox/tenancy/models/contacts.py:87 msgid "link" msgstr "" -#: tenancy/models/contacts.py:103 +#: netbox/tenancy/models/contacts.py:103 msgid "contact" msgstr "" -#: tenancy/models/contacts.py:104 +#: netbox/tenancy/models/contacts.py:104 msgid "contacts" msgstr "" -#: tenancy/models/contacts.py:153 +#: netbox/tenancy/models/contacts.py:153 msgid "contact assignment" msgstr "" -#: tenancy/models/contacts.py:154 +#: netbox/tenancy/models/contacts.py:154 msgid "contact assignments" msgstr "" -#: tenancy/models/contacts.py:170 +#: netbox/tenancy/models/contacts.py:170 #, python-brace-format msgid "Contacts cannot be assigned to this object type ({type})." msgstr "" -#: tenancy/models/tenants.py:32 +#: netbox/tenancy/models/tenants.py:32 msgid "tenant group" msgstr "" -#: tenancy/models/tenants.py:33 +#: netbox/tenancy/models/tenants.py:33 msgid "tenant groups" msgstr "" -#: tenancy/models/tenants.py:70 +#: netbox/tenancy/models/tenants.py:70 msgid "Tenant name must be unique per group." msgstr "" -#: tenancy/models/tenants.py:80 +#: netbox/tenancy/models/tenants.py:80 msgid "Tenant slug must be unique per group." msgstr "" -#: tenancy/models/tenants.py:88 +#: netbox/tenancy/models/tenants.py:88 msgid "tenant" msgstr "" -#: tenancy/models/tenants.py:89 +#: netbox/tenancy/models/tenants.py:89 msgid "tenants" msgstr "" -#: tenancy/tables/contacts.py:112 +#: netbox/tenancy/tables/contacts.py:112 msgid "Contact Title" msgstr "" -#: tenancy/tables/contacts.py:116 +#: netbox/tenancy/tables/contacts.py:116 msgid "Contact Phone" msgstr "" -#: tenancy/tables/contacts.py:121 +#: netbox/tenancy/tables/contacts.py:121 msgid "Contact Email" msgstr "" -#: tenancy/tables/contacts.py:125 +#: netbox/tenancy/tables/contacts.py:125 msgid "Contact Address" msgstr "" -#: tenancy/tables/contacts.py:129 +#: netbox/tenancy/tables/contacts.py:129 msgid "Contact Link" msgstr "" -#: tenancy/tables/contacts.py:133 +#: netbox/tenancy/tables/contacts.py:133 msgid "Contact Description" msgstr "" -#: users/filtersets.py:33 users/filtersets.py:73 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "" -#: users/filtersets.py:38 users/filtersets.py:78 +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 msgid "Notification group (ID)" msgstr "" -#: users/forms/bulk_edit.py:26 +#: netbox/users/forms/bulk_edit.py:26 msgid "First name" msgstr "" -#: users/forms/bulk_edit.py:31 +#: netbox/users/forms/bulk_edit.py:31 msgid "Last name" msgstr "" -#: users/forms/bulk_edit.py:43 +#: netbox/users/forms/bulk_edit.py:43 msgid "Staff status" msgstr "" -#: users/forms/bulk_edit.py:48 +#: netbox/users/forms/bulk_edit.py:48 msgid "Superuser status" msgstr "" -#: users/forms/bulk_import.py:41 +#: netbox/users/forms/bulk_import.py:41 msgid "If no key is provided, one will be generated automatically." msgstr "" -#: users/forms/filtersets.py:51 users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "" -#: users/forms/filtersets.py:58 users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "" -#: users/forms/filtersets.py:91 users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "" -#: users/forms/filtersets.py:98 users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "" -#: users/forms/filtersets.py:105 users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "" -#: users/forms/filtersets.py:112 users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "" -#: users/forms/model_forms.py:63 +#: netbox/users/forms/model_forms.py:63 msgid "User Interface" msgstr "" -#: users/forms/model_forms.py:115 +#: netbox/users/forms/model_forms.py:115 msgid "" "Keys must be at least 40 characters in length. Be sure to record " "your key prior to submitting this form, as it may no longer be " "accessible once the token has been created." msgstr "" -#: users/forms/model_forms.py:127 +#: netbox/users/forms/model_forms.py:127 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for " "no restrictions. Example: 10.1.1.0/24,192.168.10.16/32,2001:" "db8:1::/64" msgstr "" -#: users/forms/model_forms.py:176 +#: netbox/users/forms/model_forms.py:176 msgid "Confirm password" msgstr "" -#: users/forms/model_forms.py:179 +#: netbox/users/forms/model_forms.py:179 msgid "Enter the same password as before, for verification." msgstr "" -#: users/forms/model_forms.py:228 +#: netbox/users/forms/model_forms.py:228 msgid "Passwords do not match! Please check your input and try again." msgstr "" -#: users/forms/model_forms.py:295 +#: netbox/users/forms/model_forms.py:295 msgid "Additional actions" msgstr "" -#: users/forms/model_forms.py:298 +#: netbox/users/forms/model_forms.py:298 msgid "Actions granted in addition to those listed above" msgstr "" -#: users/forms/model_forms.py:314 +#: netbox/users/forms/model_forms.py:314 msgid "Objects" msgstr "" -#: users/forms/model_forms.py:326 +#: netbox/users/forms/model_forms.py:326 msgid "" "JSON expression of a queryset filter that will return only permitted " "objects. Leave null to match all objects of this type. A list of multiple " "objects will result in a logical OR operation." msgstr "" -#: users/forms/model_forms.py:365 +#: netbox/users/forms/model_forms.py:365 msgid "At least one action must be selected." msgstr "" -#: users/forms/model_forms.py:383 +#: netbox/users/forms/model_forms.py:383 #, python-brace-format msgid "Invalid filter for {model}: {error}" msgstr "" -#: users/models/permissions.py:39 +#: netbox/users/models/permissions.py:39 msgid "The list of actions granted by this permission" msgstr "" -#: users/models/permissions.py:44 +#: netbox/users/models/permissions.py:44 msgid "constraints" msgstr "" -#: users/models/permissions.py:45 +#: netbox/users/models/permissions.py:45 msgid "Queryset filter matching the applicable objects of the selected type(s)" msgstr "" -#: users/models/permissions.py:52 +#: netbox/users/models/permissions.py:52 msgid "permission" msgstr "" -#: users/models/permissions.py:53 users/models/users.py:47 +#: netbox/users/models/permissions.py:53 netbox/users/models/users.py:47 msgid "permissions" msgstr "" -#: users/models/preferences.py:29 users/models/preferences.py:30 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "" -#: users/models/preferences.py:97 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "" -#: users/models/preferences.py:109 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" -#: users/models/tokens.py:36 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "" -#: users/models/tokens.py:41 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "" -#: users/models/tokens.py:46 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "" -#: users/models/tokens.py:52 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "" -#: users/models/tokens.py:54 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" -#: users/models/tokens.py:65 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "" -#: users/models/tokens.py:67 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for " "no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" msgstr "" -#: users/models/tokens.py:75 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "" -#: users/models/tokens.py:76 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "" -#: users/models/users.py:57 vpn/models/crypto.py:42 +#: netbox/users/models/users.py:57 netbox/vpn/models/crypto.py:42 msgid "group" msgstr "" -#: users/models/users.py:92 +#: netbox/users/models/users.py:92 msgid "user" msgstr "" -#: users/models/users.py:104 +#: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "" -#: users/tables.py:98 +#: netbox/users/tables.py:98 msgid "Custom Actions" msgstr "" -#: utilities/api.py:153 +#: netbox/utilities/api.py:153 #, python-brace-format msgid "Related object not found using the provided attributes: {params}" msgstr "" -#: utilities/api.py:156 +#: netbox/utilities/api.py:156 #, python-brace-format msgid "Multiple objects match the provided attributes: {params}" msgstr "" -#: utilities/api.py:168 +#: netbox/utilities/api.py:168 #, python-brace-format msgid "" "Related objects must be referenced by numeric ID or by dictionary of " "attributes. Received an unrecognized value: {value}" msgstr "" -#: utilities/api.py:177 +#: netbox/utilities/api.py:177 #, python-brace-format msgid "Related object not found using the provided numeric ID: {id}" msgstr "" -#: utilities/choices.py:19 +#: netbox/utilities/choices.py:19 #, python-brace-format msgid "{name} has a key defined but CHOICES is not a list" msgstr "" -#: utilities/conversion.py:19 +#: netbox/utilities/conversion.py:19 msgid "Weight must be a positive number" msgstr "" -#: utilities/conversion.py:21 +#: netbox/utilities/conversion.py:21 #, python-brace-format msgid "Invalid value '{weight}' for weight (must be a number)" msgstr "" -#: utilities/conversion.py:32 utilities/conversion.py:62 +#: netbox/utilities/conversion.py:32 netbox/utilities/conversion.py:62 #, python-brace-format msgid "Unknown unit {unit}. Must be one of the following: {valid_units}" msgstr "" -#: utilities/conversion.py:45 +#: netbox/utilities/conversion.py:45 msgid "Length must be a positive number" msgstr "" -#: utilities/conversion.py:47 +#: netbox/utilities/conversion.py:47 #, python-brace-format msgid "Invalid value '{length}' for length (must be a number)" msgstr "" -#: utilities/error_handlers.py:31 +#: netbox/utilities/error_handlers.py:31 #, python-brace-format msgid "" "Unable to delete {objects}. {count} dependent objects were " "found: " msgstr "" -#: utilities/error_handlers.py:33 +#: netbox/utilities/error_handlers.py:33 msgid "More than 50" msgstr "" -#: utilities/fields.py:30 +#: netbox/utilities/fields.py:30 msgid "RGB color in hexadecimal. Example: " msgstr "" -#: utilities/fields.py:159 +#: netbox/utilities/fields.py:159 #, python-format msgid "" "%s(%r) is invalid. to_model parameter to CounterCacheField must be a string " "in the format 'app.model'" msgstr "" -#: utilities/fields.py:169 +#: netbox/utilities/fields.py:169 #, python-format msgid "" "%s(%r) is invalid. to_field parameter to CounterCacheField must be a string " "in the format 'field'" msgstr "" -#: utilities/forms/bulk_import.py:23 +#: netbox/utilities/forms/bulk_import.py:23 msgid "Enter object data in CSV, JSON or YAML format." msgstr "" -#: utilities/forms/bulk_import.py:36 +#: netbox/utilities/forms/bulk_import.py:36 msgid "CSV delimiter" msgstr "" -#: utilities/forms/bulk_import.py:37 +#: netbox/utilities/forms/bulk_import.py:37 msgid "The character which delimits CSV fields. Applies only to CSV format." msgstr "" -#: utilities/forms/bulk_import.py:51 +#: netbox/utilities/forms/bulk_import.py:51 msgid "Form data must be empty when uploading/selecting a file." msgstr "" -#: utilities/forms/bulk_import.py:80 +#: netbox/utilities/forms/bulk_import.py:80 #, python-brace-format msgid "Unknown data format: {format}" msgstr "" -#: utilities/forms/bulk_import.py:100 +#: netbox/utilities/forms/bulk_import.py:100 msgid "Unable to detect data format. Please specify." msgstr "" -#: utilities/forms/bulk_import.py:123 +#: netbox/utilities/forms/bulk_import.py:123 msgid "Invalid CSV delimiter" msgstr "" -#: utilities/forms/bulk_import.py:167 +#: netbox/utilities/forms/bulk_import.py:167 msgid "" "Invalid YAML data. Data must be in the form of multiple documents, or a " "single document comprising a list of dictionaries." msgstr "" -#: utilities/forms/fields/array.py:20 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " "order." msgstr "" -#: utilities/forms/fields/array.py:40 +#: netbox/utilities/forms/fields/array.py:40 msgid "" "Specify one or more numeric ranges separated by commas. Example: " "1-5,20-30" msgstr "" -#: utilities/forms/fields/array.py:47 +#: netbox/utilities/forms/fields/array.py:47 #, python-brace-format msgid "" "Invalid ranges ({value}). Must be a range of integers in ascending order." msgstr "" -#: utilities/forms/fields/csv.py:44 +#: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" msgstr "" -#: utilities/forms/fields/csv.py:57 utilities/forms/fields/csv.py:74 +#: netbox/utilities/forms/fields/csv.py:57 +#: netbox/utilities/forms/fields/csv.py:74 #, python-format msgid "Object not found: %(value)s" msgstr "" -#: utilities/forms/fields/csv.py:65 +#: netbox/utilities/forms/fields/csv.py:65 #, python-brace-format msgid "" "\"{value}\" is not a unique value for this field; multiple objects were found" msgstr "" -#: utilities/forms/fields/csv.py:97 +#: netbox/utilities/forms/fields/csv.py:97 msgid "Object type must be specified as \".\"" msgstr "" -#: utilities/forms/fields/csv.py:101 +#: netbox/utilities/forms/fields/csv.py:101 msgid "Invalid object type" msgstr "" -#: utilities/forms/fields/expandable.py:25 +#: netbox/utilities/forms/fields/expandable.py:25 msgid "" "Alphanumeric ranges are supported for bulk creation. Mixed cases and types " "within a single range are not supported (example: [ge,xe]-0/0/[0-9])." msgstr "" -#: utilities/forms/fields/expandable.py:46 +#: netbox/utilities/forms/fields/expandable.py:46 msgid "" "Specify a numeric range to create multiple IPs.
Example: 192.0.2." "[1,5,100-254]/24" msgstr "" -#: utilities/forms/fields/fields.py:31 +#: netbox/utilities/forms/fields/fields.py:31 #, python-brace-format msgid "" " Markdown syntax is supported" msgstr "" -#: utilities/forms/fields/fields.py:48 +#: netbox/utilities/forms/fields/fields.py:48 msgid "URL-friendly unique shorthand" msgstr "" -#: utilities/forms/fields/fields.py:101 +#: netbox/utilities/forms/fields/fields.py:101 msgid "Enter context data in JSON format." msgstr "" -#: utilities/forms/fields/fields.py:124 +#: netbox/utilities/forms/fields/fields.py:124 msgid "MAC address must be in EUI-48 format" msgstr "" -#: utilities/forms/forms.py:52 +#: netbox/utilities/forms/forms.py:52 msgid "Use regular expressions" msgstr "" -#: utilities/forms/forms.py:75 +#: netbox/utilities/forms/forms.py:75 msgid "" "Numeric ID of an existing object to update (if not creating a new object)" msgstr "" -#: utilities/forms/forms.py:92 +#: netbox/utilities/forms/forms.py:92 #, python-brace-format msgid "Unrecognized header: {name}" msgstr "" -#: utilities/forms/forms.py:118 +#: netbox/utilities/forms/forms.py:118 msgid "Available Columns" msgstr "" -#: utilities/forms/forms.py:126 +#: netbox/utilities/forms/forms.py:126 msgid "Selected Columns" msgstr "" -#: utilities/forms/mixins.py:44 +#: netbox/utilities/forms/mixins.py:44 msgid "" "This object has been modified since the form was rendered. Please consult " "the object's change log for details." msgstr "" -#: utilities/forms/utils.py:42 utilities/forms/utils.py:68 -#: utilities/forms/utils.py:85 utilities/forms/utils.py:87 +#: netbox/utilities/forms/utils.py:42 netbox/utilities/forms/utils.py:68 +#: netbox/utilities/forms/utils.py:85 netbox/utilities/forms/utils.py:87 #, python-brace-format msgid "Range \"{value}\" is invalid." msgstr "" -#: utilities/forms/utils.py:74 +#: netbox/utilities/forms/utils.py:74 #, python-brace-format msgid "" "Invalid range: Ending value ({end}) must be greater than beginning value " "({begin})." msgstr "" -#: utilities/forms/utils.py:232 +#: netbox/utilities/forms/utils.py:232 #, python-brace-format msgid "Duplicate or conflicting column header for \"{field}\"" msgstr "" -#: utilities/forms/utils.py:238 +#: netbox/utilities/forms/utils.py:238 #, python-brace-format msgid "Duplicate or conflicting column header for \"{header}\"" msgstr "" -#: utilities/forms/utils.py:247 +#: netbox/utilities/forms/utils.py:247 #, python-brace-format msgid "Row {row}: Expected {count_expected} columns but found {count_found}" msgstr "" -#: utilities/forms/utils.py:270 +#: netbox/utilities/forms/utils.py:270 #, python-brace-format msgid "Unexpected column header \"{field}\" found." msgstr "" -#: utilities/forms/utils.py:272 +#: netbox/utilities/forms/utils.py:272 #, python-brace-format msgid "Column \"{field}\" is not a related object; cannot use dots" msgstr "" -#: utilities/forms/utils.py:276 +#: netbox/utilities/forms/utils.py:276 #, python-brace-format msgid "Invalid related object attribute for column \"{field}\": {to_field}" msgstr "" -#: utilities/forms/utils.py:284 +#: netbox/utilities/forms/utils.py:284 #, python-brace-format msgid "Required column header \"{header}\" not found." msgstr "" -#: utilities/forms/widgets/apiselect.py:124 +#: netbox/utilities/forms/widgets/apiselect.py:124 #, python-brace-format msgid "Missing required value for dynamic query param: '{dynamic_params}'" msgstr "" -#: utilities/forms/widgets/apiselect.py:141 +#: netbox/utilities/forms/widgets/apiselect.py:141 #, python-brace-format msgid "Missing required value for static query param: '{static_params}'" msgstr "" -#: utilities/password_validation.py:13 +#: netbox/utilities/password_validation.py:13 msgid "Password must have at least one numeral." msgstr "" -#: utilities/password_validation.py:18 +#: netbox/utilities/password_validation.py:18 msgid "Password must have at least one uppercase letter." msgstr "" -#: utilities/password_validation.py:23 +#: netbox/utilities/password_validation.py:23 msgid "Password must have at least one lowercase letter." msgstr "" -#: utilities/password_validation.py:27 +#: netbox/utilities/password_validation.py:27 msgid "" "Your password must contain at least one numeral, one uppercase letter and " "one lowercase letter." msgstr "" -#: utilities/permissions.py:42 +#: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" "Invalid permission name: {name}. Must be in the format ." "_" msgstr "" -#: utilities/permissions.py:60 +#: netbox/utilities/permissions.py:60 #, python-brace-format msgid "Unknown app_label/model_name for {name}" msgstr "" -#: utilities/request.py:76 +#: netbox/utilities/request.py:76 #, python-brace-format msgid "Invalid IP address set for {header}: {ip}" msgstr "" -#: utilities/tables.py:47 +#: netbox/utilities/tables.py:47 #, python-brace-format msgid "A column named {name} is already defined for table {table_name}" msgstr "" -#: utilities/templates/builtins/customfield_value.html:30 +#: netbox/utilities/templates/builtins/customfield_value.html:30 msgid "Not defined" msgstr "" -#: utilities/templates/buttons/bookmark.html:9 +#: netbox/utilities/templates/buttons/bookmark.html:9 msgid "Unbookmark" msgstr "" -#: utilities/templates/buttons/bookmark.html:13 +#: netbox/utilities/templates/buttons/bookmark.html:13 msgid "Bookmark" msgstr "" -#: utilities/templates/buttons/clone.html:4 +#: netbox/utilities/templates/buttons/clone.html:4 msgid "Clone" msgstr "" -#: utilities/templates/buttons/export.html:7 +#: netbox/utilities/templates/buttons/export.html:7 msgid "Current View" msgstr "" -#: utilities/templates/buttons/export.html:8 +#: netbox/utilities/templates/buttons/export.html:8 msgid "All Data" msgstr "" -#: utilities/templates/buttons/export.html:28 +#: netbox/utilities/templates/buttons/export.html:28 msgid "Add export template" msgstr "" -#: utilities/templates/buttons/import.html:4 +#: netbox/utilities/templates/buttons/import.html:4 msgid "Import" msgstr "" -#: utilities/templates/buttons/subscribe.html:10 +#: netbox/utilities/templates/buttons/subscribe.html:10 msgid "Unsubscribe" msgstr "" -#: utilities/templates/buttons/subscribe.html:14 +#: netbox/utilities/templates/buttons/subscribe.html:14 msgid "Subscribe" msgstr "" -#: utilities/templates/form_helpers/render_field.html:39 +#: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "" -#: utilities/templates/form_helpers/render_field.html:55 +#: netbox/utilities/templates/form_helpers/render_field.html:55 msgid "This field is required" msgstr "" -#: utilities/templates/form_helpers/render_field.html:68 +#: netbox/utilities/templates/form_helpers/render_field.html:68 msgid "Set Null" msgstr "" -#: utilities/templates/helpers/applied_filters.html:11 +#: netbox/utilities/templates/helpers/applied_filters.html:11 msgid "Clear all" msgstr "" -#: utilities/templates/helpers/table_config_form.html:8 +#: netbox/utilities/templates/helpers/table_config_form.html:8 msgid "Table Configuration" msgstr "" -#: utilities/templates/helpers/table_config_form.html:31 +#: netbox/utilities/templates/helpers/table_config_form.html:31 msgid "Move Up" msgstr "" -#: utilities/templates/helpers/table_config_form.html:34 +#: netbox/utilities/templates/helpers/table_config_form.html:34 msgid "Move Down" msgstr "" -#: utilities/templates/navigation/menu.html:14 +#: netbox/utilities/templates/navigation/menu.html:14 msgid "Search…" msgstr "" -#: utilities/templates/navigation/menu.html:14 +#: netbox/utilities/templates/navigation/menu.html:14 msgid "Search NetBox" msgstr "" -#: utilities/templates/widgets/apiselect.html:7 +#: netbox/utilities/templates/widgets/apiselect.html:7 msgid "Open selector" msgstr "" -#: utilities/templates/widgets/markdown_input.html:6 +#: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "" -#: utilities/testing/views.py:632 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "" -#: utilities/validators.py:65 +#: netbox/utilities/validators.py:65 #, python-brace-format msgid "{value} is not a valid regular expression." msgstr "" -#: utilities/views.py:57 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" -#: utilities/views.py:93 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "" -#: utilities/views.py:117 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only " "be used on views which define a base queryset" msgstr "" -#: virtualization/filtersets.py:79 +#: netbox/virtualization/filtersets.py:79 msgid "Parent group (ID)" msgstr "" -#: virtualization/filtersets.py:85 +#: netbox/virtualization/filtersets.py:85 msgid "Parent group (slug)" msgstr "" -#: virtualization/filtersets.py:89 virtualization/filtersets.py:141 +#: netbox/virtualization/filtersets.py:89 +#: netbox/virtualization/filtersets.py:141 msgid "Cluster type (ID)" msgstr "" -#: virtualization/filtersets.py:151 virtualization/filtersets.py:271 +#: netbox/virtualization/filtersets.py:151 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "" -#: virtualization/forms/bulk_edit.py:166 -#: virtualization/models/virtualmachines.py:115 +#: netbox/virtualization/forms/bulk_edit.py:166 +#: netbox/virtualization/models/virtualmachines.py:115 msgid "vCPUs" msgstr "" -#: virtualization/forms/bulk_edit.py:170 +#: netbox/virtualization/forms/bulk_edit.py:170 msgid "Memory (MB)" msgstr "" -#: virtualization/forms/bulk_edit.py:174 +#: netbox/virtualization/forms/bulk_edit.py:174 msgid "Disk (GB)" msgstr "" -#: virtualization/forms/bulk_edit.py:334 virtualization/forms/filtersets.py:251 +#: netbox/virtualization/forms/bulk_edit.py:334 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "" -#: virtualization/forms/bulk_import.py:44 +#: netbox/virtualization/forms/bulk_import.py:44 msgid "Type of cluster" msgstr "" -#: virtualization/forms/bulk_import.py:51 +#: netbox/virtualization/forms/bulk_import.py:51 msgid "Assigned cluster group" msgstr "" -#: virtualization/forms/bulk_import.py:96 +#: netbox/virtualization/forms/bulk_import.py:96 msgid "Assigned cluster" msgstr "" -#: virtualization/forms/bulk_import.py:103 +#: netbox/virtualization/forms/bulk_import.py:103 msgid "Assigned device within cluster" msgstr "" -#: virtualization/forms/filtersets.py:183 +#: netbox/virtualization/forms/filtersets.py:183 msgid "Serial number" msgstr "" -#: virtualization/forms/model_forms.py:153 +#: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" "{device} belongs to a different site ({device_site}) than the cluster " "({cluster_site})" msgstr "" -#: virtualization/forms/model_forms.py:192 +#: netbox/virtualization/forms/model_forms.py:192 msgid "Optionally pin this VM to a specific host device within the cluster" msgstr "" -#: virtualization/forms/model_forms.py:221 +#: netbox/virtualization/forms/model_forms.py:221 msgid "Site/Cluster" msgstr "" -#: virtualization/forms/model_forms.py:244 +#: netbox/virtualization/forms/model_forms.py:244 msgid "Disk size is managed via the attachment of virtual disks." msgstr "" -#: virtualization/forms/model_forms.py:372 -#: virtualization/tables/virtualmachines.py:111 +#: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "" -#: virtualization/models/clusters.py:25 +#: netbox/virtualization/models/clusters.py:25 msgid "cluster type" msgstr "" -#: virtualization/models/clusters.py:26 +#: netbox/virtualization/models/clusters.py:26 msgid "cluster types" msgstr "" -#: virtualization/models/clusters.py:45 +#: netbox/virtualization/models/clusters.py:45 msgid "cluster group" msgstr "" -#: virtualization/models/clusters.py:46 +#: netbox/virtualization/models/clusters.py:46 msgid "cluster groups" msgstr "" -#: virtualization/models/clusters.py:121 +#: netbox/virtualization/models/clusters.py:121 msgid "cluster" msgstr "" -#: virtualization/models/clusters.py:122 +#: netbox/virtualization/models/clusters.py:122 msgid "clusters" msgstr "" -#: virtualization/models/clusters.py:141 +#: netbox/virtualization/models/clusters.py:141 #, python-brace-format msgid "" "{count} devices are assigned as hosts for this cluster but are not in site " "{site}" msgstr "" -#: virtualization/models/virtualmachines.py:123 +#: netbox/virtualization/models/virtualmachines.py:123 msgid "memory (MB)" msgstr "" -#: virtualization/models/virtualmachines.py:128 +#: netbox/virtualization/models/virtualmachines.py:128 msgid "disk (MB)" msgstr "" -#: virtualization/models/virtualmachines.py:166 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "" -#: virtualization/models/virtualmachines.py:169 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "" -#: virtualization/models/virtualmachines.py:170 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "" -#: virtualization/models/virtualmachines.py:184 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" -#: virtualization/models/virtualmachines.py:191 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" -#: virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "" -#: virtualization/models/virtualmachines.py:203 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "" -#: virtualization/models/virtualmachines.py:215 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " "virtual disks ({total_size})." msgstr "" -#: virtualization/models/virtualmachines.py:229 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "" -#: virtualization/models/virtualmachines.py:238 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "" -#: virtualization/models/virtualmachines.py:396 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "" -#: virtualization/models/virtualmachines.py:411 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "" -#: virtualization/models/virtualmachines.py:422 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " "interface's parent virtual machine, or it must be global." msgstr "" -#: virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:434 msgid "size (MB)" msgstr "" -#: virtualization/models/virtualmachines.py:438 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "" -#: virtualization/models/virtualmachines.py:439 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "" -#: virtualization/views.py:275 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "" -#: virtualization/views.py:310 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "" -#: vpn/choices.py:31 +#: netbox/vpn/choices.py:31 msgid "IPsec - Transport" msgstr "" -#: vpn/choices.py:32 +#: netbox/vpn/choices.py:32 msgid "IPsec - Tunnel" msgstr "" -#: vpn/choices.py:33 +#: netbox/vpn/choices.py:33 msgid "IP-in-IP" msgstr "" -#: vpn/choices.py:34 +#: netbox/vpn/choices.py:34 msgid "GRE" msgstr "" -#: vpn/choices.py:56 +#: netbox/vpn/choices.py:56 msgid "Hub" msgstr "" -#: vpn/choices.py:57 +#: netbox/vpn/choices.py:57 msgid "Spoke" msgstr "" -#: vpn/choices.py:80 +#: netbox/vpn/choices.py:80 msgid "Aggressive" msgstr "" -#: vpn/choices.py:81 +#: netbox/vpn/choices.py:81 msgid "Main" msgstr "" -#: vpn/choices.py:92 +#: netbox/vpn/choices.py:92 msgid "Pre-shared keys" msgstr "" -#: vpn/choices.py:93 +#: netbox/vpn/choices.py:93 msgid "Certificates" msgstr "" -#: vpn/choices.py:94 +#: netbox/vpn/choices.py:94 msgid "RSA signatures" msgstr "" -#: vpn/choices.py:95 +#: netbox/vpn/choices.py:95 msgid "DSA signatures" msgstr "" -#: vpn/choices.py:178 vpn/choices.py:179 vpn/choices.py:180 vpn/choices.py:181 -#: vpn/choices.py:182 vpn/choices.py:183 vpn/choices.py:184 vpn/choices.py:185 -#: vpn/choices.py:186 vpn/choices.py:187 vpn/choices.py:188 vpn/choices.py:189 -#: vpn/choices.py:190 vpn/choices.py:191 vpn/choices.py:192 vpn/choices.py:193 -#: vpn/choices.py:194 vpn/choices.py:195 vpn/choices.py:196 vpn/choices.py:197 -#: vpn/choices.py:198 vpn/choices.py:199 vpn/choices.py:200 vpn/choices.py:201 +#: netbox/vpn/choices.py:178 netbox/vpn/choices.py:179 +#: netbox/vpn/choices.py:180 netbox/vpn/choices.py:181 +#: netbox/vpn/choices.py:182 netbox/vpn/choices.py:183 +#: netbox/vpn/choices.py:184 netbox/vpn/choices.py:185 +#: netbox/vpn/choices.py:186 netbox/vpn/choices.py:187 +#: netbox/vpn/choices.py:188 netbox/vpn/choices.py:189 +#: netbox/vpn/choices.py:190 netbox/vpn/choices.py:191 +#: netbox/vpn/choices.py:192 netbox/vpn/choices.py:193 +#: netbox/vpn/choices.py:194 netbox/vpn/choices.py:195 +#: netbox/vpn/choices.py:196 netbox/vpn/choices.py:197 +#: netbox/vpn/choices.py:198 netbox/vpn/choices.py:199 +#: netbox/vpn/choices.py:200 netbox/vpn/choices.py:201 #, python-brace-format msgid "Group {n}" msgstr "" -#: vpn/choices.py:241 +#: netbox/vpn/choices.py:241 msgid "Ethernet Private LAN" msgstr "" -#: vpn/choices.py:242 +#: netbox/vpn/choices.py:242 msgid "Ethernet Virtual Private LAN" msgstr "" -#: vpn/choices.py:245 +#: netbox/vpn/choices.py:245 msgid "Ethernet Private Tree" msgstr "" -#: vpn/choices.py:246 +#: netbox/vpn/choices.py:246 msgid "Ethernet Virtual Private Tree" msgstr "" -#: vpn/filtersets.py:41 +#: netbox/vpn/filtersets.py:41 msgid "Tunnel group (ID)" msgstr "" -#: vpn/filtersets.py:47 +#: netbox/vpn/filtersets.py:47 msgid "Tunnel group (slug)" msgstr "" -#: vpn/filtersets.py:54 +#: netbox/vpn/filtersets.py:54 msgid "IPSec profile (ID)" msgstr "" -#: vpn/filtersets.py:60 +#: netbox/vpn/filtersets.py:60 msgid "IPSec profile (name)" msgstr "" -#: vpn/filtersets.py:81 +#: netbox/vpn/filtersets.py:81 msgid "Tunnel (ID)" msgstr "" -#: vpn/filtersets.py:87 +#: netbox/vpn/filtersets.py:87 msgid "Tunnel (name)" msgstr "" -#: vpn/filtersets.py:118 +#: netbox/vpn/filtersets.py:118 msgid "Outside IP (ID)" msgstr "" -#: vpn/filtersets.py:130 vpn/filtersets.py:153 vpn/filtersets.py:274 +#: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "" -#: vpn/filtersets.py:136 vpn/filtersets.py:159 vpn/filtersets.py:280 +#: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "" -#: vpn/filtersets.py:211 vpn/filtersets.py:284 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "" -#: vpn/filtersets.py:217 vpn/filtersets.py:290 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "" -#: vpn/filtersets.py:359 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "" -#: vpn/filtersets.py:423 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "" -#: vpn/filtersets.py:429 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "" -#: vpn/forms/bulk_edit.py:45 vpn/forms/bulk_import.py:42 -#: vpn/forms/filtersets.py:54 +#: netbox/vpn/forms/bulk_edit.py:45 netbox/vpn/forms/bulk_import.py:42 +#: netbox/vpn/forms/filtersets.py:54 msgid "Tunnel group" msgstr "" -#: vpn/forms/bulk_edit.py:117 vpn/models/crypto.py:47 +#: netbox/vpn/forms/bulk_edit.py:117 netbox/vpn/models/crypto.py:47 msgid "SA lifetime" msgstr "" -#: vpn/forms/bulk_edit.py:151 wireless/forms/bulk_edit.py:79 -#: wireless/forms/bulk_edit.py:126 wireless/forms/filtersets.py:64 -#: wireless/forms/filtersets.py:98 +#: netbox/vpn/forms/bulk_edit.py:151 netbox/wireless/forms/bulk_edit.py:79 +#: netbox/wireless/forms/bulk_edit.py:126 +#: netbox/wireless/forms/filtersets.py:64 +#: netbox/wireless/forms/filtersets.py:98 msgid "Pre-shared key" msgstr "" -#: vpn/forms/bulk_edit.py:237 vpn/forms/bulk_import.py:239 -#: vpn/forms/filtersets.py:199 vpn/forms/model_forms.py:370 -#: vpn/models/crypto.py:104 +#: netbox/vpn/forms/bulk_edit.py:237 netbox/vpn/forms/bulk_import.py:239 +#: netbox/vpn/forms/filtersets.py:199 netbox/vpn/forms/model_forms.py:370 +#: netbox/vpn/models/crypto.py:104 msgid "IKE policy" msgstr "" -#: vpn/forms/bulk_edit.py:242 vpn/forms/bulk_import.py:244 -#: vpn/forms/filtersets.py:204 vpn/forms/model_forms.py:374 -#: vpn/models/crypto.py:209 +#: netbox/vpn/forms/bulk_edit.py:242 netbox/vpn/forms/bulk_import.py:244 +#: netbox/vpn/forms/filtersets.py:204 netbox/vpn/forms/model_forms.py:374 +#: netbox/vpn/models/crypto.py:209 msgid "IPSec policy" msgstr "" -#: vpn/forms/bulk_import.py:50 +#: netbox/vpn/forms/bulk_import.py:50 msgid "Tunnel encapsulation" msgstr "" -#: vpn/forms/bulk_import.py:83 +#: netbox/vpn/forms/bulk_import.py:83 msgid "Operational role" msgstr "" -#: vpn/forms/bulk_import.py:90 +#: netbox/vpn/forms/bulk_import.py:90 msgid "Parent device of assigned interface" msgstr "" -#: vpn/forms/bulk_import.py:97 +#: netbox/vpn/forms/bulk_import.py:97 msgid "Parent VM of assigned interface" msgstr "" -#: vpn/forms/bulk_import.py:104 +#: netbox/vpn/forms/bulk_import.py:104 msgid "Device or virtual machine interface" msgstr "" -#: vpn/forms/bulk_import.py:183 +#: netbox/vpn/forms/bulk_import.py:183 msgid "IKE proposal(s)" msgstr "" -#: vpn/forms/bulk_import.py:215 vpn/models/crypto.py:197 +#: netbox/vpn/forms/bulk_import.py:215 netbox/vpn/models/crypto.py:197 msgid "Diffie-Hellman group for Perfect Forward Secrecy" msgstr "" -#: vpn/forms/bulk_import.py:222 +#: netbox/vpn/forms/bulk_import.py:222 msgid "IPSec proposal(s)" msgstr "" -#: vpn/forms/bulk_import.py:236 +#: netbox/vpn/forms/bulk_import.py:236 msgid "IPSec protocol" msgstr "" -#: vpn/forms/bulk_import.py:266 +#: netbox/vpn/forms/bulk_import.py:266 msgid "L2VPN type" msgstr "" -#: vpn/forms/bulk_import.py:287 +#: netbox/vpn/forms/bulk_import.py:287 msgid "Parent device (for interface)" msgstr "" -#: vpn/forms/bulk_import.py:294 +#: netbox/vpn/forms/bulk_import.py:294 msgid "Parent virtual machine (for interface)" msgstr "" -#: vpn/forms/bulk_import.py:301 +#: netbox/vpn/forms/bulk_import.py:301 msgid "Assigned interface (device or VM)" msgstr "" -#: vpn/forms/bulk_import.py:334 +#: netbox/vpn/forms/bulk_import.py:334 msgid "Cannot import device and VM interface terminations simultaneously." msgstr "" -#: vpn/forms/bulk_import.py:336 +#: netbox/vpn/forms/bulk_import.py:336 msgid "Each termination must specify either an interface or a VLAN." msgstr "" -#: vpn/forms/bulk_import.py:338 +#: netbox/vpn/forms/bulk_import.py:338 msgid "Cannot assign both an interface and a VLAN." msgstr "" -#: vpn/forms/filtersets.py:130 +#: netbox/vpn/forms/filtersets.py:130 msgid "IKE version" msgstr "" -#: vpn/forms/filtersets.py:142 vpn/forms/filtersets.py:175 -#: vpn/forms/model_forms.py:298 vpn/forms/model_forms.py:334 +#: netbox/vpn/forms/filtersets.py:142 netbox/vpn/forms/filtersets.py:175 +#: netbox/vpn/forms/model_forms.py:298 netbox/vpn/forms/model_forms.py:334 msgid "Proposal" msgstr "" -#: vpn/forms/filtersets.py:251 +#: netbox/vpn/forms/filtersets.py:251 msgid "Assigned Object Type" msgstr "" -#: vpn/forms/model_forms.py:95 vpn/forms/model_forms.py:130 -#: vpn/forms/model_forms.py:240 vpn/tables/tunnels.py:91 +#: netbox/vpn/forms/model_forms.py:95 netbox/vpn/forms/model_forms.py:130 +#: netbox/vpn/forms/model_forms.py:240 netbox/vpn/tables/tunnels.py:91 msgid "Tunnel interface" msgstr "" -#: vpn/forms/model_forms.py:150 +#: netbox/vpn/forms/model_forms.py:150 msgid "First Termination" msgstr "" -#: vpn/forms/model_forms.py:153 +#: netbox/vpn/forms/model_forms.py:153 msgid "Second Termination" msgstr "" -#: vpn/forms/model_forms.py:197 +#: netbox/vpn/forms/model_forms.py:197 msgid "This parameter is required when defining a termination." msgstr "" -#: vpn/forms/model_forms.py:320 vpn/forms/model_forms.py:356 +#: netbox/vpn/forms/model_forms.py:320 netbox/vpn/forms/model_forms.py:356 msgid "Policy" msgstr "" -#: vpn/forms/model_forms.py:487 +#: netbox/vpn/forms/model_forms.py:487 msgid "A termination must specify an interface or VLAN." msgstr "" -#: vpn/forms/model_forms.py:489 +#: netbox/vpn/forms/model_forms.py:489 msgid "" "A termination can only have one terminating object (an interface or VLAN)." msgstr "" -#: vpn/models/crypto.py:33 +#: netbox/vpn/models/crypto.py:33 msgid "encryption algorithm" msgstr "" -#: vpn/models/crypto.py:37 +#: netbox/vpn/models/crypto.py:37 msgid "authentication algorithm" msgstr "" -#: vpn/models/crypto.py:44 +#: netbox/vpn/models/crypto.py:44 msgid "Diffie-Hellman group ID" msgstr "" -#: vpn/models/crypto.py:50 +#: netbox/vpn/models/crypto.py:50 msgid "Security association lifetime (in seconds)" msgstr "" -#: vpn/models/crypto.py:59 +#: netbox/vpn/models/crypto.py:59 msgid "IKE proposal" msgstr "" -#: vpn/models/crypto.py:60 +#: netbox/vpn/models/crypto.py:60 msgid "IKE proposals" msgstr "" -#: vpn/models/crypto.py:76 +#: netbox/vpn/models/crypto.py:76 msgid "version" msgstr "" -#: vpn/models/crypto.py:88 vpn/models/crypto.py:190 +#: netbox/vpn/models/crypto.py:88 netbox/vpn/models/crypto.py:190 msgid "proposals" msgstr "" -#: vpn/models/crypto.py:91 wireless/models.py:39 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "" -#: vpn/models/crypto.py:105 +#: netbox/vpn/models/crypto.py:105 msgid "IKE policies" msgstr "" -#: vpn/models/crypto.py:118 +#: netbox/vpn/models/crypto.py:118 msgid "Mode is required for selected IKE version" msgstr "" -#: vpn/models/crypto.py:122 +#: netbox/vpn/models/crypto.py:122 msgid "Mode cannot be used for selected IKE version" msgstr "" -#: vpn/models/crypto.py:136 +#: netbox/vpn/models/crypto.py:136 msgid "encryption" msgstr "" -#: vpn/models/crypto.py:141 +#: netbox/vpn/models/crypto.py:141 msgid "authentication" msgstr "" -#: vpn/models/crypto.py:149 +#: netbox/vpn/models/crypto.py:149 msgid "Security association lifetime (seconds)" msgstr "" -#: vpn/models/crypto.py:155 +#: netbox/vpn/models/crypto.py:155 msgid "Security association lifetime (in kilobytes)" msgstr "" -#: vpn/models/crypto.py:164 +#: netbox/vpn/models/crypto.py:164 msgid "IPSec proposal" msgstr "" -#: vpn/models/crypto.py:165 +#: netbox/vpn/models/crypto.py:165 msgid "IPSec proposals" msgstr "" -#: vpn/models/crypto.py:178 +#: netbox/vpn/models/crypto.py:178 msgid "Encryption and/or authentication algorithm must be defined" msgstr "" -#: vpn/models/crypto.py:210 +#: netbox/vpn/models/crypto.py:210 msgid "IPSec policies" msgstr "" -#: vpn/models/crypto.py:251 +#: netbox/vpn/models/crypto.py:251 msgid "IPSec profiles" msgstr "" -#: vpn/models/l2vpn.py:116 +#: netbox/vpn/models/l2vpn.py:116 msgid "L2VPN termination" msgstr "" -#: vpn/models/l2vpn.py:117 +#: netbox/vpn/models/l2vpn.py:117 msgid "L2VPN terminations" msgstr "" -#: vpn/models/l2vpn.py:135 +#: netbox/vpn/models/l2vpn.py:135 #, python-brace-format msgid "L2VPN Termination already assigned ({assigned_object})" msgstr "" -#: vpn/models/l2vpn.py:147 +#: netbox/vpn/models/l2vpn.py:147 #, python-brace-format msgid "" "{l2vpn_type} L2VPNs cannot have more than two terminations; found " "{terminations_count} already defined." msgstr "" -#: vpn/models/tunnels.py:26 +#: netbox/vpn/models/tunnels.py:26 msgid "tunnel group" msgstr "" -#: vpn/models/tunnels.py:27 +#: netbox/vpn/models/tunnels.py:27 msgid "tunnel groups" msgstr "" -#: vpn/models/tunnels.py:53 +#: netbox/vpn/models/tunnels.py:53 msgid "encapsulation" msgstr "" -#: vpn/models/tunnels.py:72 +#: netbox/vpn/models/tunnels.py:72 msgid "tunnel ID" msgstr "" -#: vpn/models/tunnels.py:94 +#: netbox/vpn/models/tunnels.py:94 msgid "tunnel" msgstr "" -#: vpn/models/tunnels.py:95 +#: netbox/vpn/models/tunnels.py:95 msgid "tunnels" msgstr "" -#: vpn/models/tunnels.py:153 +#: netbox/vpn/models/tunnels.py:153 msgid "An object may be terminated to only one tunnel at a time." msgstr "" -#: vpn/models/tunnels.py:156 +#: netbox/vpn/models/tunnels.py:156 msgid "tunnel termination" msgstr "" -#: vpn/models/tunnels.py:157 +#: netbox/vpn/models/tunnels.py:157 msgid "tunnel terminations" msgstr "" -#: vpn/models/tunnels.py:174 +#: netbox/vpn/models/tunnels.py:174 #, python-brace-format msgid "{name} is already attached to a tunnel ({tunnel})." msgstr "" -#: vpn/tables/crypto.py:22 +#: netbox/vpn/tables/crypto.py:22 msgid "Authentication Method" msgstr "" -#: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97 +#: netbox/vpn/tables/crypto.py:25 netbox/vpn/tables/crypto.py:97 msgid "Encryption Algorithm" msgstr "" -#: vpn/tables/crypto.py:28 vpn/tables/crypto.py:100 +#: netbox/vpn/tables/crypto.py:28 netbox/vpn/tables/crypto.py:100 msgid "Authentication Algorithm" msgstr "" -#: vpn/tables/crypto.py:34 +#: netbox/vpn/tables/crypto.py:34 msgid "SA Lifetime" msgstr "" -#: vpn/tables/crypto.py:71 +#: netbox/vpn/tables/crypto.py:71 msgid "Pre-shared Key" msgstr "" -#: vpn/tables/crypto.py:103 +#: netbox/vpn/tables/crypto.py:103 msgid "SA Lifetime (Seconds)" msgstr "" -#: vpn/tables/crypto.py:106 +#: netbox/vpn/tables/crypto.py:106 msgid "SA Lifetime (KB)" msgstr "" -#: vpn/tables/l2vpn.py:69 +#: netbox/vpn/tables/l2vpn.py:69 msgid "Object Parent" msgstr "" -#: vpn/tables/l2vpn.py:74 +#: netbox/vpn/tables/l2vpn.py:74 msgid "Object Site" msgstr "" -#: wireless/choices.py:11 +#: netbox/wireless/choices.py:11 msgid "Access point" msgstr "" -#: wireless/choices.py:12 +#: netbox/wireless/choices.py:12 msgid "Station" msgstr "" -#: wireless/choices.py:467 +#: netbox/wireless/choices.py:467 msgid "Open" msgstr "" -#: wireless/choices.py:469 +#: netbox/wireless/choices.py:469 msgid "WPA Personal (PSK)" msgstr "" -#: wireless/choices.py:470 +#: netbox/wireless/choices.py:470 msgid "WPA Enterprise" msgstr "" -#: wireless/forms/bulk_edit.py:73 wireless/forms/bulk_edit.py:120 -#: wireless/forms/bulk_import.py:68 wireless/forms/bulk_import.py:71 -#: wireless/forms/bulk_import.py:110 wireless/forms/bulk_import.py:113 -#: wireless/forms/filtersets.py:59 wireless/forms/filtersets.py:93 +#: netbox/wireless/forms/bulk_edit.py:73 netbox/wireless/forms/bulk_edit.py:120 +#: netbox/wireless/forms/bulk_import.py:68 +#: netbox/wireless/forms/bulk_import.py:71 +#: netbox/wireless/forms/bulk_import.py:110 +#: netbox/wireless/forms/bulk_import.py:113 +#: netbox/wireless/forms/filtersets.py:59 +#: netbox/wireless/forms/filtersets.py:93 msgid "Authentication cipher" msgstr "" -#: wireless/forms/bulk_edit.py:134 wireless/forms/bulk_import.py:116 -#: wireless/forms/bulk_import.py:119 wireless/forms/filtersets.py:106 +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 msgid "Distance unit" msgstr "" -#: wireless/forms/bulk_import.py:52 +#: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "" -#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:28 +#: netbox/wireless/forms/bulk_import.py:89 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "" -#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:37 +#: netbox/wireless/forms/bulk_import.py:93 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "" -#: wireless/forms/model_forms.py:161 +#: netbox/wireless/forms/model_forms.py:161 msgid "Side B" msgstr "" -#: wireless/models.py:31 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "" -#: wireless/models.py:69 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "" -#: wireless/models.py:70 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "" -#: wireless/models.py:116 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "" -#: wireless/models.py:144 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "" -#: wireless/models.py:151 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "" -#: wireless/models.py:165 +#: netbox/wireless/models.py:165 msgid "distance" msgstr "" -#: wireless/models.py:172 +#: netbox/wireless/models.py:172 msgid "distance unit" msgstr "" -#: wireless/models.py:219 +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "" -#: wireless/models.py:220 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "" -#: wireless/models.py:236 +#: netbox/wireless/models.py:236 msgid "Must specify a unit when setting a wireless distance" msgstr "" -#: wireless/models.py:242 wireless/models.py:248 +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "" -#: wireless/utils.py:16 +#: netbox/wireless/utils.py:16 #, python-brace-format msgid "Invalid channel value: {channel}" msgstr "" -#: wireless/utils.py:26 +#: netbox/wireless/utils.py:26 #, python-brace-format msgid "Invalid channel attribute: {name}" msgstr "" diff --git a/netbox/translations/es/LC_MESSAGES/django.mo b/netbox/translations/es/LC_MESSAGES/django.mo index d9309adb7cc..67ba55ddee6 100644 Binary files a/netbox/translations/es/LC_MESSAGES/django.mo and b/netbox/translations/es/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/es/LC_MESSAGES/django.po b/netbox/translations/es/LC_MESSAGES/django.po index 88213f7337b..000ea9d09a9 100644 --- a/netbox/translations/es/LC_MESSAGES/django.po +++ b/netbox/translations/es/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Spanish (https://app.transifex.com/netbox-community/teams/178115/es/)\n" @@ -27,16 +27,17 @@ msgstr "" msgid "Key" msgstr "Llave" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Escritura habilitada" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -48,11 +49,11 @@ msgstr "Creado" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Caduca" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Utilizado por última vez" @@ -62,47 +63,47 @@ msgstr "Utilizado por última vez" msgid "Allowed IPs" msgstr "IPs permitidas" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Ha iniciado sesión como {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Has cerrado sesión." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Se han actualizado tus preferencias." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "Las credenciales de usuario autenticadas por LDAP no se pueden cambiar en " "NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "La contraseña se ha cambiado correctamente." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Planificado" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Aprovisionamiento" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -111,9 +112,9 @@ msgstr "Aprovisionamiento" msgid "Active" msgstr "Activo" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Desconectado" @@ -126,98 +127,116 @@ msgstr "Desaprovisionamiento" msgid "Decommissioned" msgstr "Desmantelado" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Primaria" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Secundaria" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Terciario" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inactivo" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Región (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Región (slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Grupo de sitios (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Grupo de sitios (slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -229,172 +248,197 @@ msgstr "Grupo de sitios (slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Sitio" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Sitio (babosa)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Proveedor (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Proveedor (babosa)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Cuenta de proveedor (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Cuenta de proveedor (cuenta)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Red de proveedores (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Tipo de circuito (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Tipo de circuito (slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Sitio (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Terminación A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Búsqueda" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Circuito" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Red de proveedores (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Circuito (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Circuito (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Grupo de circuitos (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Grupo de circuitos (slug)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASNs" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -407,16 +451,17 @@ msgstr "ASNs" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -426,8 +471,9 @@ msgstr "ASNs" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -480,26 +526,28 @@ msgstr "ASNs" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Descripción" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -511,22 +559,22 @@ msgstr "Descripción" msgid "Provider" msgstr "Proveedor" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "ID de servicio" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -537,33 +585,33 @@ msgstr "ID de servicio" msgid "Color" msgstr "Color" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -576,9 +624,9 @@ msgstr "Color" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -594,52 +642,52 @@ msgstr "Color" msgid "Type" msgstr "Tipo" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Cuenta de proveedor" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -648,7 +696,7 @@ msgstr "Cuenta de proveedor" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -656,7 +704,7 @@ msgstr "Cuenta de proveedor" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -666,45 +714,49 @@ msgstr "Cuenta de proveedor" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Estado" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -716,7 +768,7 @@ msgstr "Estado" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -739,36 +791,37 @@ msgstr "Estado" msgid "Tenant" msgstr "Inquilino" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Fecha de instalación" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Fecha de terminación" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Velocidad de confirmación (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Parámetros de servicio" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -778,37 +831,37 @@ msgstr "Parámetros de servicio" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Arrendamiento" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Red de proveedores" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Velocidad del puerto (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Velocidad de subida (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Marcar conectado" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -816,46 +869,60 @@ msgstr "Marcar conectado" msgid "Circuit Termination" msgstr "Terminación del circuito" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Detalles de terminación" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Prioridad" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Proveedor asignado" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Cuenta de proveedor asignada" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Tipo de circuito" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Estado operativo" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -863,7 +930,7 @@ msgstr "Estado operativo" msgid "Assigned tenant" msgstr "Inquilino asignado" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -871,44 +938,44 @@ msgstr "Inquilino asignado" msgid "Termination" msgstr "Terminación" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Red de proveedores" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -917,13 +984,13 @@ msgstr "Red de proveedores" msgid "Location" msgstr "Ubicación" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -932,22 +999,22 @@ msgstr "Ubicación" msgid "Contacts" msgstr "Contactos" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -960,17 +1027,17 @@ msgstr "Contactos" msgid "Region" msgstr "Región" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -978,180 +1045,263 @@ msgstr "Región" msgid "Site group" msgstr "Grupo de sitios" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Atributos" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Cuenta" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Lado del término" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Asignación" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Grupo" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Grupo de circuitos" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "color" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "tipo de circuito" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "tipos de circuitos" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "ID de circuito" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "ID de circuito único" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "estado" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "instalada" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "termina" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "velocidad de confirmación (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Tarifa comprometida" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "circuito" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "circuitos" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "grupo de circuitos" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "grupos de circuitos" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "prioridad" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Asignación de grupos de circuitos" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Asignaciones de grupos de circuitos" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "terminación" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "velocidad de puerto (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Velocidad del circuito físico" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "velocidad de subida (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Velocidad ascendente, si es diferente de la velocidad del puerto" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "ID de conexión cruzada" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID de la conexión cruzada local" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "panel de parche/puerto(s)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "ID del panel de conexiones y números de puerto" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "descripción" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "terminación de circuito" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "terminaciones de circuitos" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Una terminación de circuito debe conectarse a un sitio o a una red de " "proveedores." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1160,33 +1310,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "nombre" @@ -1195,11 +1346,12 @@ msgid "Full name of the provider" msgstr "Nombre completo del proveedor" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "pegar" @@ -1235,40 +1387,45 @@ msgstr "red de proveedores" msgid "provider networks" msgstr "redes de proveedores" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1283,7 +1440,7 @@ msgstr "redes de proveedores" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1297,8 +1454,9 @@ msgstr "redes de proveedores" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1338,9 +1496,9 @@ msgstr "redes de proveedores" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1350,56 +1508,57 @@ msgstr "redes de proveedores" msgid "Name" msgstr "Nombre" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Circuitos" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "ID de circuito" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Lado A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Lado Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Tasa de compromiso" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1408,6 +1567,12 @@ msgstr "Tasa de compromiso" msgid "Comments" msgstr "Comentarios" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Asignaciones" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Cuentas" @@ -1430,7 +1595,7 @@ msgstr "No se han definido terminaciones para el circuito {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Terminaciones intercambiadas por circuito {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "Este usuario no tiene permiso para sincronizar esta fuente de datos." @@ -1448,21 +1613,19 @@ msgid "Syncing" msgstr "Sincronización" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Completado" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Falló" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1474,30 +1637,39 @@ msgstr "Guiones" msgid "Reports" msgstr "Informes" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "Pendiente" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Programado" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Corriendo" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Erróneo" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Actualizado" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Eliminado" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Terminado" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Empezado" @@ -1514,11 +1686,13 @@ msgstr "Detenido" msgid "Cancelled" msgstr "Cancelado" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Local" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1528,8 +1702,8 @@ msgstr "Nombre de usuario" msgid "Only used for cloning with HTTP(S)" msgstr "Solo se usa para clonar con HTTP (S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Contraseña" @@ -1551,24 +1725,63 @@ msgstr "ID de clave de acceso de AWS" msgid "AWS secret access key" msgstr "Clave de acceso secreta de AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Objeto creado" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Objeto actualizado" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Objeto eliminado" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Trabajo iniciado" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Trabajo completado" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Fallo en el trabajo" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Error en el trabajo" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Fuente de datos (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Fuente de datos (nombre)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Usuario (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Nombre de usuario" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1576,14 +1789,14 @@ msgstr "Fuente de datos (nombre)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Habilitado" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1596,11 +1809,11 @@ msgstr "Parámetros" msgid "Ignore rules" msgstr "Ignorar las reglas" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1610,76 +1823,99 @@ msgstr "Ignorar las reglas" msgid "Data Source" msgstr "Fuente de datos" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Expediente" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Fuente de datos" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Creación" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Tipo de objeto" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Creado después" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Creado antes" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Programado después" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Programado antes" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Comenzó después" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Comenzó antes" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Completado después" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Completado antes" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "usuario" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Hora" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Después" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Antes" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Acción" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1710,19 +1946,19 @@ msgstr "" msgid "Rack Elevations" msgstr "Elevaciones de estanterías" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Potencia" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1739,7 +1975,9 @@ msgstr "Banners" msgid "Pagination" msgstr "Paginación" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Validación" @@ -1749,7 +1987,7 @@ msgstr "Validación" msgid "User Preferences" msgstr "Preferencias de usuario" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1772,10 +2010,49 @@ msgstr "Valor actual: {value}" msgid " (default)" msgstr " (predeterminado)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "tiempo" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "nombre de usuario" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "ID de solicitud" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "acción" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "datos de cambio previo" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "datos posteriores al cambio" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "cambio de objeto" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "cambios de objetos" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"El registro de cambios no es compatible con este tipo de objeto ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "creado" @@ -1808,14 +2085,14 @@ msgstr "Configuración actual" msgid "Config revision #{id}" msgstr "Revisión de configuración #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1823,63 +2100,64 @@ msgstr "Revisión de configuración #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "tipo" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "habilitado" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ignorar reglas" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Patrones (uno por línea) que coinciden con los archivos para ignorarlos al " "sincronizar" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "parámetros" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "sincronizado por última vez" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "fuente de datos" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "fuentes de datos" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Tipo de backend desconocido: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "" "No se puede iniciar la sincronización; la sincronización ya está en curso." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1887,48 +2165,48 @@ msgstr "" "Se ha producido un error al inicializar el backend. Es necesario instalar " "una dependencia: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "última actualización" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "ruta" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Ruta del archivo relativa a la raíz de la fuente de datos" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "tamaño" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "picadillo" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "La longitud debe ser de 64 caracteres hexadecimales." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "Hash SHA256 de los datos del archivo" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "archivo de datos" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "archivos de datos" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "registro de sincronización automática" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "sincronización automática de registros" @@ -1952,60 +2230,96 @@ msgstr "archivo gestionado" msgid "managed files" msgstr "archivos gestionados" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "programado" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "intervalo" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Intervalo de recurrencia (en minutos)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "iniciado" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "completado" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "dato" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "error" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "ID de trabajo" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "trabajo" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "trabajos" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "No se pueden asignar trabajos a este tipo de objeto ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" "Estado no válido para la terminación del trabajo. Las opciones son: " "{choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"no se puede llamar a enqueue () con valores tanto para schedule_at como para" +" immediate." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "La eliminación se impide mediante una regla de protección: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Nombre completo" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objeto" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "ID de solicitud" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Está activo" @@ -2020,51 +2334,63 @@ msgid "Last updated" msgstr "Última actualización" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Objeto" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Intervalo" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Versión" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Paquete" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Última actualización" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Versión mínima de NetBox" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Versión máxima de NetBox" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "No se han encontrado datos de complementos" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "autor" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Correo electrónico del autor" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Instalado" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Certificado" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Publicado" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "No se han encontrado complementos" +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Versión instalada" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Versión más reciente" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2078,7 +2404,7 @@ msgstr "Trabajadores" msgid "Host" msgstr "Anfitrión" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Puerto" @@ -2126,62 +2452,72 @@ msgstr "PAGADO" msgid "No workers found" msgstr "No se encontró ningún trabajador" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "N.º de trabajo en cola{id} sincronizar {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Revisión de la configuración restaurada #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Trabajo {job_id} no se encontró" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Trabajo {id} se ha eliminado." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Error al eliminar el trabajo {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Trabajo {id} no se encontró." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Trabajo {id} se ha vuelto a poner en cola." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Trabajo {id} ha sido puesto en cola." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Trabajo {id} se ha detenido." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "No se pudo detener el trabajo {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "No se pudo cargar el catálogo de complementos" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Plugin {name} no se encontró" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Posición (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "ID de la instalación" @@ -2189,8 +2525,8 @@ msgstr "ID de la instalación" msgid "Staging" msgstr "Puesta en escena" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Desmantelamiento" @@ -2249,27 +2585,39 @@ msgstr "Disponible" msgid "Deprecated" msgstr "Obsoleto" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Milímetros" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Pulgadas" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "De adelante hacia atrás" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "De atrás hacia adelante" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2285,278 +2633,273 @@ msgstr "Pulgadas" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Padre" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Niño" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Delantera" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Trasera" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Escenificado" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Inventario" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "De adelante hacia atrás" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "De atrás hacia adelante" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "De izquierda a derecha" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "De derecha a izquierda" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "De lado a atrás" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Pasivo" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Mezclado" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (sin bloqueo)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (Bloqueo)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Estilo californiano" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "Internacional/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Proprietario" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Otros" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/Internacional" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Físico" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Virtual" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "inalámbrico" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Interfaces virtuales" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "puente" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Grupo de agregación de enlaces (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (fijo)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modular)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (placa base)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Celular" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "serie" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Coaxial" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Apilamiento" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Mitad" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Lleno" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Acceso" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Etiquetado" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Etiquetado (Todos)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "Estándar IEEE" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Pasivo 24 V (2 pares)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Pasivo de 24 V (4 pares)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Pasivo 48 V (2 pares)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Pasivo de 48 V (4 pares)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Cobre" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Fibra óptica" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Fibra" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Conectado" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Kilómetros" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Medidores" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Centímetros" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Millas" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Pies" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Kilogramos" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Gramos" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Libras" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Onzas" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Primaria" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Redundante" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Monofásico" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Trifásico" @@ -2570,330 +2913,335 @@ msgstr "Formato de dirección MAC no válido: {value}" msgid "Invalid WWN format: {value}" msgstr "Formato WWN no válido: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Región principal (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Región principal (babosa)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Grupo de sitio principal (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Grupo de sitios principal (slug)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Grupo (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Grupo (babosa)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "COMO (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Ubicación principal (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Ubicación principal (slug)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Ubicación (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Ubicación (babosa)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Fabricante (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Fabricante (babosa)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Tipo de bastidor (babosa)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Tipo de bastidor (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Función (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rol (babosa)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Rack (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Usuario (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Usuario (nombre)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Fabricante (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Fabricante (babosa)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Plataforma predeterminada (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Plataforma predeterminada (slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Tiene una imagen frontal" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Tiene una imagen trasera" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Tiene puertos de consola" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Tiene puertos de servidor de consola" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Tiene puertos de alimentación" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Tiene tomas de corriente" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Tiene interfaces" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Tiene puertos de paso" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Tiene compartimentos para módulos" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Tiene compartimentos para dispositivos" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Tiene artículos de inventario" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Tipo de dispositivo (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Tipo de módulo (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Puerto de alimentación (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Artículo del inventario principal (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Plantilla de configuración (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Tipo de dispositivo (slug)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Dispositivo principal (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Plataforma (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Plataforma (babosa)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Nombre del sitio (slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Bahía principal (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "Clúster de máquinas virtuales (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Grupo de racimos (babosa)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Grupo de clústeres (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Modelo de dispositivo (slug)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Es de profundidad total" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "Dirección MAC" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Tiene una IP principal" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Tiene una IP fuera de banda" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Chasis virtual (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Es un miembro del chasis virtual" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "LOB VIP (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Tiene contexto de dispositivo virtual" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (IDENTIFICACIÓN)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Modelo de dispositivo" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Interfaz (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Tipo de módulo (modelo)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" msgstr "Bahía de módulos (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Dispositivo (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Rack (nombre)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Dispositivo (nombre)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Tipo de dispositivo (modelo)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Función del dispositivo (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Función del dispositivo (slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Chasis virtual (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2902,33 +3250,33 @@ msgstr "Chasis virtual (ID)" msgid "Virtual Chassis" msgstr "Chasis virtual" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Módulo (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Cable (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "VLAN asignada" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "VID asignado" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2945,121 +3293,125 @@ msgstr "VID asignado" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (ROJO)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Interfaces de chasis virtuales para dispositivos" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Interfaces de chasis virtuales para dispositivos (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Tipo de interfaz" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Interfaz principal (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Interfaz puenteada (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "Interfaz LAG (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Contexto de dispositivo virtual" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Contexto de dispositivo virtual (identificador)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "LAN inalámbrica" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Enlace inalámbrico" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Compartimento del módulo principal (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Módulo instalado (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Dispositivo instalado (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Dispositivo instalado (nombre)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Maestro (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Maestro (nombre)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Inquilino (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Inquilino (babosa)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Inacabado" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Panel de alimentación (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3067,13 +3419,13 @@ msgstr "Panel de alimentación (ID)" msgid "Tags" msgstr "Etiquetas" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3087,168 +3439,114 @@ msgstr "" "Se admiten los rangos alfanuméricos. (Debe coincidir con el número de " "nombres que se están creando)." -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Grupo" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Nombre de contacto" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Teléfono de contacto" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "Correo electrónico de contacto" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Zona horaria" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Rol" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Número de serie" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Etiqueta de activo" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "fabricante" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Factor de forma" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Anchura" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Altura (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Unidades descendentes" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Anchura exterior" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Profundidad exterior" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Unidad exterior" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Profundidad de montaje" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3256,31 +3554,127 @@ msgstr "Profundidad de montaje" msgid "Weight" msgstr "Peso" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Peso máximo" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Unidad de peso" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Tipo de bastidor" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Dimensiones exteriores" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Dimensiones" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Numeración" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Rol" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Número de serie" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Etiqueta de activo" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Flujo de aire" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3290,158 +3684,132 @@ msgstr "Unidad de peso" msgid "Rack" msgstr "Estante" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Hardware" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "fabricante" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Plataforma predeterminada" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Número de pieza" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Altura en U" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 -msgid "Exclude from utilization" -msgstr "Excluir de la utilización" - -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Flujo de aire" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 +msgid "Exclude from utilization" +msgstr "Excluir de la utilización" + +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Tipo de dispositivo" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Tipo de módulo" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Chasis" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "Función de máquina virtual" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Plantilla de configuración" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Tipo de dispositivo" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Función del dispositivo" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Plataforma" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3452,7 +3820,7 @@ msgstr "Plataforma" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3460,7 +3828,7 @@ msgstr "Plataforma" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3468,7 +3836,7 @@ msgstr "Plataforma" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3478,23 +3846,23 @@ msgstr "Plataforma" msgid "Device" msgstr "Dispositivo" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Configuración" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Tipo de módulo" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3503,7 +3871,7 @@ msgstr "Tipo de módulo" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3512,141 +3880,142 @@ msgstr "Tipo de módulo" msgid "Label" msgstr "Etiqueta" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Longitud" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Unidad de longitud" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Dominio" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Panel de alimentación" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Suministro" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Tensión" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Amperaje" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Utilización máxima" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Sorteo máximo" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Consumo máximo de energía (vatios)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Sorteo asignado" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Consumo de energía asignado (vatios)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Puerto de alimentación" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Pierna de alimentación" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Solo administración" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "Modo PoE" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "Tipo de PoE" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Función inalámbrica" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Módulo" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "DESFASE" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Contextos de dispositivos virtuales" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Velocidad" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3660,293 +4029,298 @@ msgstr "Velocidad" msgid "Mode" msgstr "Modo" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Grupo de VLAN" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN sin etiquetar" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLAN etiquetadas" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Grupo LAN inalámbrico" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "LAN inalámbricas" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Dirigiéndose" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Operación" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Interfaces relacionadas" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "Conmutación 802.1Q" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "Se debe especificar el modo de interfaz para asignar las VLAN" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "Una interfaz de acceso no puede tener asignadas VLAN etiquetadas." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Nombre de la región principal" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Nombre del grupo de sitios principal" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Región asignada" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Grupo asignado" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "opciones disponibles" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Sitio asignado" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Ubicación de los padres" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "No se encontró la ubicación." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Nombre del inquilino asignado" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Nombre de la función asignada" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "El fabricante de este tipo de bastidor" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Tipo de bastidor" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "La posición con el número más bajo del estante" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Ancho de raíl a raíl (en pulgadas)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Unidad para dimensiones exteriores" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Unidad para pesas de cremallera" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Nombre del inquilino asignado" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Nombre de la función asignada" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Dirección del flujo de aire" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Sitio para padres" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Ubicación del bastidor (si existe)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Unidades" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Lista separada por comas de números de unidades individuales" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "El fabricante que produce este tipo de dispositivo" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "" "La plataforma predeterminada para dispositivos de este tipo (opcional)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Peso del dispositivo" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Unidad para el peso del dispositivo" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Peso del módulo" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Unidad para el peso del módulo" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Limite las asignaciones de plataforma a este fabricante" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Función asignada" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Fabricante del tipo de dispositivo" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Modelo de tipo de dispositivo" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Plataforma asignada" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Chasis virtual" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Clúster" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Clúster de virtualización" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Ubicación asignada (si la hay)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Bastidor asignado (si lo hay)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Cara" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Cara de bastidor montada" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Dispositivo principal (para dispositivos infantiles)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Compartimento para dispositivos" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Compartimento de dispositivos en el que está instalado este dispositivo " "(para dispositivos infantiles)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Dirección del flujo de aire" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "El dispositivo en el que está instalado este módulo" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Compartimento de módulos" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "El compartimiento del módulo en el que está instalado este módulo" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "El tipo de módulo" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Replicar componentes" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3954,238 +4328,238 @@ msgstr "" "Rellenar automáticamente los componentes asociados a este tipo de módulo " "(activado de forma predeterminada)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Adopte componentes" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Adopte los componentes ya existentes" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Tipo de puerto" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Velocidad de puerto en bps" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Tipo de toma" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Puerto de alimentación local que alimenta esta toma" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Fase eléctrica (para circuitos trifásicos)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Interfaz principal" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Interfaz puenteada" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Retraso" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Interfaz LAG principal" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "VDC" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "Los nombres de los VDC están separados por comas y entre comillas dobles. " "Ejemplo:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Medio físico" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Dúplex" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Modo Poe" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Tipo de Poe" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "Modo operativo IEEE 802.1Q (para interfaces L2)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "VRF asignado" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Rol RF" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Función inalámbrica (AP/estación)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} no está asignado al dispositivo {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Puerto trasero" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Puerto trasero correspondiente" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Clasificación de medios físicos" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Dispositivo instalado" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Dispositivo infantil instalado en esta bahía" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "No se encontró el dispositivo infantil." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Artículo del inventario principal" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Tipo de componente" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Tipo de componente" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Nombre del componente" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Nombre del componente" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "No se encontró el componente: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Dispositivo del lado A" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Nombre del dispositivo" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Tipo de lado A" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Tipo de terminación" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Nombre de la cara A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Nombre de terminación" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Dispositivo Side B" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Tipo de lado B" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Nombre de la cara B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Estado de conexión" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Lado {side_upper}: {device} {termination_object} ya está conectado" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} no se encontró la terminación lateral: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Maestro" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Dispositivo maestro" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Nombre del sitio principal" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Panel de alimentación ascendente" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Primario o redundante" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Tipo de alimentación (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Monofásico o trifásico" @@ -4205,7 +4579,7 @@ msgstr "" "Las VLAN etiquetadas ({vlans}) deben pertenecer al mismo sitio que el " "dispositivo o máquina virtual principal de la interfaz o deben ser globales" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4213,17 +4587,27 @@ msgstr "" "No se puede instalar el módulo con valores de marcador de posición en un " "compartimento de módulos sin una posición definida." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"No se puede instalar un módulo con valores de marcador de posición en un " +"árbol de compartimentos de módulos {level} en un árbol, pero {tokens} " +"marcadores de posición dados." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "No puede adoptar {model} {name} porque ya pertenece a un módulo" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "UN {model} llamado {name} ya existe" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4232,7 +4616,7 @@ msgstr "UN {model} llamado {name} ya existe" msgid "Power Panel" msgstr "Panel de alimentación" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4242,15 +4626,15 @@ msgstr "Alimentación eléctrica" msgid "Side" msgstr "Lado" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Estado del dispositivo" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Región principal" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4258,62 +4642,67 @@ msgstr "Región principal" msgid "Parent group" msgstr "Grupo de padres" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Instalación" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Tipo de bastidor" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Función" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Imágenes" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Componentes" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Función de subdispositivo" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "modelo" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Tiene una IP OOB" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Miembro del chasis virtual" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Tiene contextos de dispositivos virtuales" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Grupo de clústeres" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Cableado" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Ocupado" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4325,43 +4714,43 @@ msgstr "Ocupado" msgid "Connection" msgstr "Conexión" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Amable" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Solo administración" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Canal inalámbrico" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Frecuencia de canal (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Ancho de canal (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Potencia de transmisión (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4371,7 +4760,7 @@ msgstr "Potencia de transmisión (dBm)" msgid "Cable" msgstr "Cable" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Descubierto" @@ -4380,28 +4769,31 @@ msgstr "Descubierto" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Ya existe un miembro del chasis virtual en posición {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Información de contacto" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Rol de bastidor" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Control de inventario" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Babosa" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Dimensiones exteriores" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Seleccione un tipo de bastidor predefinido o defina las características " +"físicas a continuación." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Dimensiones" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Control de inventario" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4409,94 +4801,71 @@ msgstr "" "Lista de identificadores de unidades numéricas separados por comas. Se puede" " especificar un rango mediante un guión." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Reservación" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Babosa" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Chasis" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Función del dispositivo" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "La unidad con el número más bajo ocupado por el dispositivo" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" "La posición en el chasis virtual por la que se identifica este dispositivo" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Prioridad" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "La prioridad del dispositivo en el chasis virtual" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "" "Rellenar automáticamente los componentes asociados a este tipo de módulo" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "La longitud máxima es 32767 (cualquier unidad)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Características" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Plantilla de puerto de consola" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Plantilla de puerto de servidor de consola" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Plantilla de puerto frontal" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Plantilla de interfaz" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Plantilla de toma de corriente" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Plantilla de puerto de alimentación" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Plantilla de puerto trasero" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4507,7 +4876,7 @@ msgstr "Plantilla de puerto trasero" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4516,7 +4885,7 @@ msgstr "Plantilla de puerto trasero" msgid "Interface" msgstr "Interfaz" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4524,14 +4893,14 @@ msgstr "Interfaz" msgid "Console Port" msgstr "Puerto de consola" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Puerto de servidor de consola" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4542,8 +4911,8 @@ msgstr "Puerto de servidor de consola" msgid "Front Port" msgstr "Puerto frontal" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4555,36 +4924,36 @@ msgstr "Puerto frontal" msgid "Rear Port" msgstr "Puerto trasero" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Puerto de alimentación" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Toma de corriente" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Asignación de componentes" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "Un InventoryItem solo se puede asignar a un único componente." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "Interfaz LAG" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Dispositivo infantil" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4592,41 +4961,41 @@ msgstr "" "Los dispositivos secundarios primero deben crearse y asignarse al sitio y al" " rack del dispositivo principal." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Puerto de consola" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Puerto de servidor de consola" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Puerto frontal" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "toma de corriente" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Artículo de inventario" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Función del artículo de inventario" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "IPv4 principal" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "IPv6 principal" @@ -4690,7 +5059,7 @@ msgstr "" "coincidir con el número seleccionado de posiciones de los puertos traseros " "({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4716,7 +5085,7 @@ msgstr "Se debe especificar un puesto para el primer miembro del VC." #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "etiqueta" @@ -4847,138 +5216,138 @@ msgstr "" "Una plantilla de componente debe estar asociada a un tipo de dispositivo o a" " un tipo de módulo." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "plantilla de puerto de consola" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "plantillas de puertos de consola" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "plantilla de puerto de servidor de consola" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "plantillas de puertos de servidor de consola" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "sorteo máximo" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "sorteo asignado" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "plantilla de puerto de alimentación" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "plantillas de puertos de alimentación" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" "El sorteo asignado no puede superar el sorteo máximo ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "pierna de alimentación" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Fase (para alimentaciones trifásicas)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "plantilla de toma de corriente" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "plantillas de tomas de corriente" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Puerto de alimentación principal ({power_port}) debe pertenecer al mismo " "tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Puerto de alimentación principal ({power_port}) debe pertenecer al mismo " "tipo de módulo" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "solo administración" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "interfaz de puente" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "función inalámbrica" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "plantilla de interfaz" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "plantillas de interfaz" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Una interfaz no se puede conectar a sí misma." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Interfaz de puente ({bridge}) debe pertenecer al mismo tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Interfaz de puente ({bridge}) debe pertenecer al mismo tipo de módulo" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "posición del puerto trasero" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "plantilla de puerto frontal" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "plantillas de puertos frontales" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Puerto trasero ({name}) debe pertenecer al mismo tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4987,48 +5356,48 @@ msgstr "" "Posición del puerto trasero no válida ({position}); puerto trasero {name} " "solo tiene {count} posiciones" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "posiciones" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "plantilla de puerto trasero" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "plantillas de puertos traseros" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "posición" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Identificador al que se debe hacer referencia al cambiar el nombre de los " "componentes instalados" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "plantilla de bahía de módulos" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "plantillas de compartimentos de módulos" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "plantilla de compartimento de dispositivos" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "plantillas de compartimentos de dispositivos" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5038,21 +5407,21 @@ msgstr "" "configurarse como «principal» para permitir compartimentos para " "dispositivos." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "ID de pieza" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Identificador de pieza asignado por el fabricante" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "plantilla de artículos de inventario" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "plantillas de artículos de inventario" @@ -5195,27 +5564,27 @@ msgstr "Se rellena por el canal seleccionado (si está configurado)" msgid "transmit power (dBm)" msgstr "potencia de transmisión (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "LAN inalámbricas" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "VLAN sin etiquetar" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "VLAN etiquetadas" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "interfaz" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "interfaz" @@ -5230,7 +5599,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type} las interfaces no se pueden marcar como conectadas." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Una interfaz no puede ser su propia interfaz principal." @@ -5399,34 +5768,40 @@ msgstr "" "El número de posiciones no puede ser inferior al número de puertos frontales" " mapeados ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "compartimiento de módulos" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "compartimentos de módulos" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "" +"Una bahía de módulos no puede pertenecer a un módulo instalado en ella." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "compartimiento de dispositivos" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "compartimentos para dispositivos" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" "Este tipo de dispositivo ({device_type}) no admite compartimentos para " "dispositivos." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "No se puede instalar un dispositivo en sí mismo." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5434,60 +5809,61 @@ msgstr "" "No se puede instalar el dispositivo especificado; el dispositivo ya está " "instalado en {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "rol de artículo de inventario" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "roles de artículos de inventario" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "número de serie" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "etiqueta de activo" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Una etiqueta única que se utiliza para identificar este artículo" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "descubierto" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Este artículo se descubrió automáticamente" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "artículo de inventario" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "artículos de inventario" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "No se puede asignar a sí mismo como padre." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "" "El artículo del inventario principal no pertenece al mismo dispositivo." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "No se puede mover un artículo del inventario con hijos a cargo" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "" "No se puede asignar un artículo de inventario a un componente de otro " @@ -5502,6 +5878,7 @@ msgid "manufacturers" msgstr "fabricantes" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "modelo" @@ -5517,7 +5894,7 @@ msgstr "número de pieza" msgid "Discrete part number (optional)" msgstr "Número de pieza discreto (opcional)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "altura (U)" @@ -5552,7 +5929,8 @@ msgstr "" "compartimentos para dispositivos. Déjelo en blanco si este tipo de " "dispositivo no es para padres ni para niños." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "flujo de aire" @@ -5600,151 +5978,151 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Los tipos de dispositivos secundarios deben ser 0U." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "tipo de módulo" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "tipos de módulos" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Se pueden asignar máquinas virtuales a esta función" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "rol del dispositivo" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "funciones del dispositivo" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Si lo desea, limite esta plataforma a dispositivos de un fabricante " "determinado." -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "plataforma" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "plataformas" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "La función que cumple este dispositivo" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Número de serie del chasis, asignado por el fabricante" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Una etiqueta única que se utiliza para identificar este dispositivo" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "posición (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "cara del estante" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "IPv4 principal" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "IPv6 principal" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "IP fuera de banda" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "Posición VC" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Posición virtual del chasis" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "Prioridad VC" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Prioridad de elección del maestro del chasis virtual" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "latitud" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Coordenada GPS en formato decimal (xx.aaaaa)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "longitud" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "El nombre del dispositivo debe ser único por sitio." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "dispositivo" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "dispositivos" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Estante {rack} no pertenece al sitio {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Ubicación {location} no pertenece al sitio {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Estante {rack} no pertenece a la ubicación {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "No se puede seleccionar una cara de bastidor sin asignar un bastidor." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "" "No se puede seleccionar una posición de cremallera sin asignar una " "cremallera." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "La posición debe estar en incrementos de 0,5 unidades de estante." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" "Debe especificar la cara de la cremallera al definir la posición de la " "cremallera." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -5752,7 +6130,7 @@ msgstr "" "Un tipo de dispositivo 0U ({device_type}) no se puede asignar a una posición" " de estantería." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5760,7 +6138,7 @@ msgstr "" "Los tipos de dispositivos secundarios no se pueden asignar a la cara de un " "bastidor. Este es un atributo del dispositivo principal." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5768,7 +6146,7 @@ msgstr "" "Los tipos de dispositivos secundarios no se pueden asignar a una posición de" " bastidor. Este es un atributo del dispositivo principal." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5777,23 +6155,23 @@ msgstr "" "U{position} ya está ocupado o no tiene espacio suficiente para este tipo de " "dispositivo: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} no es una dirección IPv4." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" "La dirección IP especificada ({ip}) no está asignado a este dispositivo." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} no es una dirección IPv6." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5803,25 +6181,25 @@ msgstr "" "dispositivos, pero el tipo de este dispositivo pertenece a " "{devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "El clúster asignado pertenece a un sitio diferente ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Un dispositivo asignado a un chasis virtual debe tener su posición definida." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "módulo" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "módulos" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5830,22 +6208,22 @@ msgstr "" "El módulo debe instalarse en un compartimiento de módulos que pertenezca al " "dispositivo asignado ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "dominio" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "chasis virtual" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "El maestro seleccionado ({master}) no está asignado a este chasis virtual." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5854,41 +6232,41 @@ msgstr "" "No se puede eliminar el chasis virtual {self}. Hay interfaces miembros que " "forman interfaces LAG entre chasis." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identificador" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Identificador numérico exclusivo del dispositivo principal" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "comentarios" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "contexto de dispositivo virtual" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "contextos de dispositivos virtuales" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} no es un IPv{family} dirección." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "La dirección IP principal debe pertenecer a una interfaz del dispositivo " "asignado." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "peso" @@ -5966,94 +6344,59 @@ msgid "Voltage cannot be negative for AC supply" msgstr "" "La tensión no puede ser negativa para el suministro de corriente alterna" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "rol de bastidor" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "roles de seguimiento" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "ID de la instalación" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Identificador asignado localmente" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Función funcional" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Una etiqueta única que se utiliza para identificar este estante" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "anchura" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Ancho de riel a riel" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Altura en unidades de estantería" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "unidad de arranque" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Unidad de arranque para bastidor" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "unidades descendentes" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Las unidades están numeradas de arriba a abajo" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "ancho exterior" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Dimensión exterior del estante (ancho)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "profundidad exterior" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Dimensión exterior del bastidor (profundidad)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "unidad exterior" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "peso máximo" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Capacidad de carga máxima del bastidor" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "profundidad de montaje" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6062,30 +6405,77 @@ msgstr "" "los estantes de cuatro postes, esta es la distancia entre los rieles " "delantero y trasero." -#: netbox/dcim/models/racks.py:221 -msgid "rack" -msgstr "estante" +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "peso máximo" -#: netbox/dcim/models/racks.py:222 -msgid "racks" -msgstr "bastidores" +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Capacidad de carga máxima del bastidor" -#: netbox/dcim/models/racks.py:237 -#, python-brace-format -msgid "Assigned location must belong to parent site ({site})." -msgstr "La ubicación asignada debe pertenecer al sitio principal ({site})." +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "factor de forma" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "tipo de bastidor" -#: netbox/dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "tipos de estanterías" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" "Debe especificar una unidad al establecer una anchura o profundidad " "exteriores" -#: netbox/dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "Debe especificar una unidad al establecer un peso máximo" -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "rol de bastidor" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "roles de seguimiento" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "ID de la instalación" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Identificador asignado localmente" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Función funcional" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Una etiqueta única que se utiliza para identificar este estante" + +#: netbox/dcim/models/racks.py:359 +msgid "rack" +msgstr "estante" + +#: netbox/dcim/models/racks.py:360 +msgid "racks" +msgstr "bastidores" + +#: netbox/dcim/models/racks.py:375 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "La ubicación asignada debe pertenecer al sitio principal ({site})." + +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6094,7 +6484,7 @@ msgstr "" "El estante debe tener al menos {min_height}Hablo para alojar los " "dispositivos instalados actualmente." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6103,30 +6493,30 @@ msgstr "" "La numeración de las unidades del bastidor debe comenzar en {position} o " "menos para alojar los dispositivos actualmente instalados." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "La ubicación debe ser del mismo sitio, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "unidades" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "reserva de seguimiento" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "Seguimiento de reservas" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "" "Unidad (es) no válida (s) para {height}Rack de Reino Unido: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Ya se han reservado las siguientes unidades: {unit_list}" @@ -6229,11 +6619,11 @@ msgstr "Terminación A" msgid "Termination B" msgstr "Terminación B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Dispositivo A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Dispositivo B" @@ -6268,13 +6658,13 @@ msgid "Reachable" msgstr "Accesible" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Dispositivos" @@ -6284,17 +6674,17 @@ msgid "VMs" msgstr "VM" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Plantilla de configuración" @@ -6302,22 +6692,22 @@ msgstr "Plantilla de configuración" msgid "Site Group" msgstr "Grupo de sitios" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "Dirección IP" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "Dirección IPv4" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "Dirección IPv6" @@ -6354,10 +6744,10 @@ msgstr "Puertos de alimentación" msgid "Power outlets" msgstr "tomas de corriente" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6367,8 +6757,8 @@ msgstr "tomas de corriente" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfaces" @@ -6394,8 +6784,8 @@ msgid "Module Bay" msgstr "Bahía de módulos" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6404,30 +6794,30 @@ msgstr "Bahía de módulos" msgid "Inventory Items" msgstr "Artículos de inventario" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Color del cable" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Vincula a tus compañeros" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Marcar conectado" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Consumo máximo (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Sorteo asignado (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6436,12 +6826,12 @@ msgstr "Sorteo asignado (W)" msgid "IP Addresses" msgstr "Direcciones IP" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Grupos FHRP" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6452,52 +6842,52 @@ msgstr "Grupos FHRP" msgid "Tunnel" msgstr "Túnel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Solo administración" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Módulo instalado" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Serie del módulo" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Etiqueta de activo del módulo" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Estado del módulo" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Componente" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Artículos" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Tipos de dispositivos" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Tipos de módulos" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Plataformas" @@ -6516,12 +6906,13 @@ msgid "U Height" msgstr "Altura en U" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Instancias" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6530,9 +6921,9 @@ msgstr "Instancias" msgid "Console Ports" msgstr "Puertos de consola" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6541,9 +6932,9 @@ msgstr "Puertos de consola" msgid "Console Server Ports" msgstr "Puertos de servidor de consola" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6552,9 +6943,9 @@ msgstr "Puertos de servidor de consola" msgid "Power Ports" msgstr "Puertos de alimentación" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6563,9 +6954,9 @@ msgstr "Puertos de alimentación" msgid "Power Outlets" msgstr "Tomas de corriente" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6573,9 +6964,9 @@ msgstr "Tomas de corriente" msgid "Front Ports" msgstr "Puertos frontales" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6584,23 +6975,26 @@ msgstr "Puertos frontales" msgid "Rear Ports" msgstr "Puertos traseros" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Bahías de dispositivos" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Bahías de módulos" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Fuentes de alimentación" @@ -6613,41 +7007,45 @@ msgstr "Utilización máxima" msgid "Available Power (VA)" msgstr "Potencia disponible (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Bastidores" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Altura" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Espacio" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Anchura exterior" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Profundidad exterior" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Peso máximo" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Espacio" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Sitios" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "El caso de prueba debe establecer peer_termination_type" @@ -6656,79 +7054,79 @@ msgstr "El caso de prueba debe establecer peer_termination_type" msgid "Disconnected {count} {type}" msgstr "Desconectado {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Reservaciones" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Dispositivos no rakeados" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Contexto de configuración" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Configuración de renderizado" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Se ha producido un error al renderizar la plantilla: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Máquinas virtuales" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Dispositivo instalado {device} en la bahía {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Dispositivo eliminado {device} desde la bahía {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Niños" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Miembro agregado {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "No se puede eliminar el dispositivo maestro {device} desde el chasis " "virtual." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Eliminado {device} desde un chasis virtual {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Objeto (s) relacionado (s) desconocido (s): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "No se admite cambiar el tipo de campos personalizados." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "La programación no está habilitada para este script." @@ -6777,7 +7175,7 @@ msgid "Multiple objects" msgstr "Objetos múltiples" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Discapacitado" @@ -6812,7 +7210,7 @@ msgstr "No" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Enlace" @@ -6832,65 +7230,56 @@ msgstr "Alfabético (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Alfabético (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Actualizado" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Eliminado" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Información" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Éxito" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Advertencia" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Peligro" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Depurar" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Predeterminado" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Fracaso" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Cada hora" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 horas" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Diariamente" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Semanal" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 días" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6898,18 +7287,16 @@ msgstr "30 días" msgid "Create" msgstr "Crear" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Actualización" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6920,81 +7307,85 @@ msgstr "Actualización" msgid "Delete" msgstr "Eliminar" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Azul" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "añil" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Morado" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Rosado" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "rojo" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "naranja" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Amarillo" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Verde" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Verde azulado" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Cian" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Gris" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Negro" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "blanco" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Guión" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Notificación" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7069,60 +7460,60 @@ msgstr "" "Formato no válido. Los filtros de objetos se deben pasar como un " "diccionario." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Lista de objetos" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Muestra una lista arbitraria de objetos." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "El número predeterminado de objetos que se van a mostrar" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" "Formato no válido. Los parámetros de URL se deben pasar como un diccionario." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "Fuente RSS" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Inserte una fuente RSS desde un sitio web externo." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "URL del feed" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "El número máximo de objetos que se van a mostrar" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Cuánto tiempo se debe almacenar el contenido en caché (en segundos)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Marcadores" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Muestra tus marcadores personales" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Tipo de acción desconocido para una regla de evento: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "No se puede importar la canalización de eventos {name} error: {error}" @@ -7131,211 +7522,220 @@ msgstr "No se puede importar la canalización de eventos {name} error: {error}" msgid "Script module (ID)" msgstr "Módulo de script (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Archivo de datos (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Grupo (nombre)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Tipo de clúster" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Tipo de clúster (babosa)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Grupo de inquilinos" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Grupo de inquilinos (slug)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Etiqueta" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Etiqueta (babosa)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Tiene datos de contexto de configuración local" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Nombre de usuario" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Nombre del grupo" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Obligatorio" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Debe ser único" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "Interfaz de usuario visible" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "Interfaz de usuario editable" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Es clonable" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Valor mínimo" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Valor máximo" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Regex de validación" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Comportamiento" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Ventana nueva" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Clase de botones" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "Tipo MIME" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Extensión de archivo" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Como archivo adjunto" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Compartido" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "Método HTTP" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "URL de carga" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "Verificación SSL" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Secreto" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "Ruta del archivo CA" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Al crear" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "En la actualización" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Tipos de eventos" -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Al eliminar" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "Empezando a trabajar" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "Al final del trabajo" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Está activo" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Tipos de objetos" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Uno o más tipos de objetos asignados" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Tipo de datos de campo (por ejemplo, texto, entero, etc.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Tipo de objeto" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Tipo de objeto (para campos de objetos o de varios objetos)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Set de elección" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Conjunto de opciones (para campos de selección)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Si el campo personalizado se muestra en la interfaz de usuario" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Si el campo personalizado se puede editar en la interfaz de usuario" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "" "El conjunto base de opciones predefinidas que se van a utilizar (si las hay)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7344,205 +7744,200 @@ msgstr "" " opcionales separadas por dos puntos: «Choice1:First Choice, Choice2:Second " "Choice»" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "clase de botones" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "La clase del primer enlace de un grupo se usará para el botón desplegable" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Los tipos de eventos que activarán esta regla" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Objeto de acción" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Nombre o script del webhook como ruta punteada module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} no se encontró" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Guión {name} no se encontró" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Tipo de objeto asignado" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "La clasificación de entrada" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "usuarios" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "Nombres de usuario separados por comas y entre comillas dobles" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Grupos" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Nombres de grupos separados por comas y entre comillas" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Tipo de objeto relacionado" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Tipo de campo" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Opciones" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Datos" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Archivo de datos" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Tipos de contenido" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "Tipo de contenido HTTP" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Eventos" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "Tipo de evento" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "Tipo de acción" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Creaciones de objetos" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Actualizaciones de objetos" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Eliminaciones de objetos" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Comienza el trabajo" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Cese de puestos" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Tipo de objeto etiquetado" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Tipo de objeto permitido" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Regiones" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Grupos de sitios" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Ubicaciones" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Tipos de dispositivos" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Funciones" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Tipos de clústeres" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Grupos de clústeres" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Clústers" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Grupos de inquilinos" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Después" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Antes" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Hora" - -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Acción" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Los tipos de objeto que tienen este campo personalizado" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Valor predeterminado" + +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "Tipo del objeto relacionado (solo para campos de objeto/multiobjeto)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Filtro de objetos relacionados" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Especifique los parámetros de consulta como un objeto JSON." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Campo personalizado" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Comportamiento" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Valores" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7550,7 +7945,7 @@ msgstr "" "El tipo de datos almacenados en este campo. Para los campos de objetos o " "multiobjetos, seleccione el tipo de objeto relacionado a continuación." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7558,7 +7953,11 @@ msgstr "" "Esto se mostrará como texto de ayuda para el campo del formulario. Markdown " "es compatible." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Objeto relacionado" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7566,16 +7965,16 @@ msgstr "" "Introduzca una opción por línea. Se puede especificar una etiqueta opcional " "para cada elección añadiendo dos puntos. Ejemplo:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Vínculo personalizado" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Plantillas" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7585,7 +7984,7 @@ msgstr "" "objeto como {example}. Los enlaces que se muestren como texto vacío no se " "mostrarán." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." @@ -7593,58 +7992,62 @@ msgstr "" "Código de plantilla Jinja2 para la URL del enlace. Haga referencia al objeto" " como {example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Código de plantilla" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Plantilla de exportación" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Renderización" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "El contenido de la plantilla se rellena desde la fuente remota seleccionada " "a continuación." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Debe especificar el contenido local o un archivo de datos" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Filtro guardado" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "Un grupo de notificaciones especifica al menos un usuario o grupo." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "Solicitud HTTP" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Elección de acción" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "" "Introduzca las condiciones en JSON " "formato." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7652,56 +8055,34 @@ msgstr "" "Introduzca los parámetros para pasar a la acción en JSON formato." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Regla del evento" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Condiciones" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Creaciones" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Disparadores" -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Actualizaciones" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Grupo de notificaciones" -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Eliminaciones" - -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Ejecuciones de trabajos" - -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Inquilinos" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Asignación" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "" "Los datos se rellenan desde la fuente remota seleccionada a continuación." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Debe especificar datos locales o un archivo de datos" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Contenido" @@ -7749,48 +8130,25 @@ msgstr "Programe la ejecución del script a una hora determinada" msgid "Interval at which this script is re-run (in minutes)" msgstr "Intervalo en el que se vuelve a ejecutar este script (en minutos)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "¡No se encontró ningún indexador!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "tiempo" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "nombre de usuario" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "ID de solicitud" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "acción" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "datos de cambio previo" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Los cambios en la base de datos se han revertido automáticamente." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "datos posteriores al cambio" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Secuencia de comandos abortada con un error: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "cambio de objeto" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Se ha producido una excepción: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "cambios de objetos" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Los cambios en la base de datos se han revertido debido a un error." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "" -"El registro de cambios no es compatible con este tipo de objeto ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "¡No se encontró ningún indexador!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7842,35 +8200,35 @@ msgstr "plantilla de configuración" msgid "config templates" msgstr "plantillas de configuración" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Los objetos a los que se aplica este campo." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "El tipo de datos que contiene este campo personalizado" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "El tipo de objeto NetBox al que se asigna este campo (para campos de " "objetos)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Nombre del campo interno" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Solo se permiten caracteres alfanuméricos y guiones bajos." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "No se permiten los guiones dobles de subrayado en los nombres de campo " "personalizados." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7878,31 +8236,39 @@ msgstr "" "Nombre del campo tal como se muestra a los usuarios (si no se proporciona, " "se usará el nombre del campo)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "nombre del grupo" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Los campos personalizados del mismo grupo se mostrarán juntos" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "requerido" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Si es verdadero, este campo es obligatorio al crear objetos nuevos o editar " -"un objeto existente." +"Este campo es obligatorio para crear objetos nuevos o editar un objeto " +"existente." -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "debe ser único" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "El valor de este campo debe ser único para el objeto asignado" + +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "peso de búsqueda" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7910,11 +8276,11 @@ msgstr "" "Ponderación para la búsqueda. Los valores más bajos se consideran más " "importantes. Los campos con un peso de búsqueda de cero se ignorarán." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "lógica de filtros" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7922,11 +8288,11 @@ msgstr "" "Loose coincide con cualquier instancia de una cadena determinada; exact " "coincide con todo el campo." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "predeterminado" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7934,35 +8300,44 @@ msgstr "" "Valor predeterminado para el campo (debe ser un valor JSON). Encapsula " "cadenas con comillas dobles (por ejemplo, «Foo»)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filtre las opciones de selección de objetos usando un diccionario " +"query_params (debe ser un valor JSON). Encapsula cadenas con comillas dobles" +" (por ejemplo, «Foo»)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "peso de la pantalla" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "Los campos con pesos más altos aparecen más abajo en un formulario." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "valor mínimo" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Valor mínimo permitido (para campos numéricos)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "valor máximo" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Valor máximo permitido (para campos numéricos)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "expresión regular de validación" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7973,280 +8348,251 @@ msgstr "" "y $ para forzar la coincidencia de toda la cadena. Por ejemplo, ^ " "[A-Z]{3}$ limitará los valores a exactamente tres letras mayúsculas." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "conjunto de opciones" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Especifica si el campo personalizado se muestra en la interfaz de usuario" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Especifica si el valor del campo personalizado se puede editar en la " "interfaz de usuario" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "es clonable" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Replique este valor al clonar objetos" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "campo personalizado" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "campos personalizados" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Valor predeterminado no válido»{value}«: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "Solo se puede establecer un valor mínimo para los campos numéricos" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "Solo se puede establecer un valor máximo para los campos numéricos" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "La validación de expresiones regulares solo se admite para campos de texto y" " URL" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "La unicidad no se puede aplicar a los campos booleanos" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Los campos de selección deben especificar un conjunto de opciones." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Las elecciones solo se pueden establecer en los campos de selección." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Los campos de objeto deben definir un tipo de objeto." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} es posible que los campos no definan un tipo de objeto." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "" +"Un filtro de objetos relacionados solo se puede definir para los campos de " +"objetos." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"El filtro debe definirse como un diccionario que asigna atributos a valores." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Cierto" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Falso" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" "Los valores deben coincidir con esta expresión regular: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "El valor debe ser una cadena." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "El valor debe coincidir con la expresión regular '{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "El valor debe ser un número entero." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "El valor debe ser al menos {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "El valor no debe superar {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "El valor debe ser decimal." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "El valor debe ser verdadero o falso." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Los valores de fecha deben estar en formato ISO 8601 (AAAA-MM-DD)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Los valores de fecha y hora deben estar en formato ISO 8601 (AAAA-MM-DD " "HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "" "Elección no válida ({value}) para el conjunto de opciones {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "" "Elecciones no válidas ({value}) para el conjunto de opciones {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "El valor debe ser un ID de objeto, no {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "El valor debe ser una lista de identificadores de objetos, no {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Se encontró un ID de objeto no válido: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "El campo obligatorio no puede estar vacío." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Conjunto básico de opciones predefinidas (opcional)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Las opciones se ordenan alfabéticamente automáticamente" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "conjunto de opciones de campo personalizadas" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "conjuntos de opciones de campo personalizadas" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Debe definir opciones básicas o adicionales." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "diseño" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "configuración" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "salpicadero" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "tableros" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "tipos de objetos" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Los objetos a los que se aplica esta regla." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "al crear" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Se activa cuando se crea un objeto coincidente." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "en la actualización" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Se activa cuando se actualiza un objeto coincidente." +msgid "The types of event which will trigger this rule." +msgstr "Los tipos de eventos que activarán esta regla." -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "al eliminar" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Se activa cuando se elimina un objeto coincidente." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "al iniciar el trabajo" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Se activa cuando se inicia un trabajo para un objeto coincidente." - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "al final del trabajo" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Se activa cuando finaliza un trabajo para un objeto coincidente." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "condiciones" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Conjunto de condiciones que determinan si se generará el evento." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "tipo de acción" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Datos adicionales para pasar al objeto de acción" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "regla de evento" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "reglas del evento" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Debe seleccionarse al menos un tipo de evento: crear, actualizar, eliminar, " -"iniciar o finalizar el trabajo." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8256,7 +8602,7 @@ msgstr "" "webhook. El procesamiento de plantillas de Jinja2 se admite en el mismo " "contexto que el cuerpo de la solicitud." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available aquí." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "encabezados adicionales" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8283,11 +8629,11 @@ msgstr "" " Jinja2 se admite en el mismo contexto que el cuerpo de la solicitud (a " "continuación)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "plantilla corporal" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8300,11 +8646,11 @@ msgstr "" "marca de tiempo, nombre de usuario, " "id_solicitud, y dato." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "secreto" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8315,16 +8661,16 @@ msgstr "" "carga utilizando el secreto como clave. El secreto no se transmite en la " "solicitud." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" "Habilita la verificación del certificado SSL. ¡Desactívala con precaución!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "Ruta del archivo CA" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8333,65 +8679,65 @@ msgstr "" "verificación SSL. Déjelo en blanco para usar los valores predeterminados del" " sistema." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "webhook" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "webhooks" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "No especifique un archivo de certificado de CA si la verificación SSL está " "deshabilitada." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Los tipos de objeto a los que se aplica este enlace." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "texto de enlace" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Código de plantilla Jinja2 para texto de enlace" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL del enlace" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Código de plantilla Jinja2 para la URL del enlace" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Los enlaces con el mismo grupo aparecerán en un menú desplegable" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "ventana nueva" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Forzar que el enlace se abra en una ventana nueva" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "enlace personalizado" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "enlaces personalizados" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Los tipos de objeto a los que se aplica esta plantilla." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8399,114 +8745,161 @@ msgstr "" "Código de plantilla Jinja2. La lista de objetos que se exportan se pasa como" " una variable de contexto denominada conjunto de consultas." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "El valor predeterminado es texto/plano; charset=utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "extensión de archivo" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Extensión para añadir al nombre de archivo renderizado" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "como adjunto" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Descargar archivo como archivo adjunto" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "plantilla de exportación" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "plantillas de exportación" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "«{name}\"es un nombre reservado. Elija un nombre diferente." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Los tipos de objeto a los que se aplica este filtro." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "compartido" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "filtro guardado" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "filtros guardados" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Los parámetros de filtro se deben almacenar como un diccionario de " "argumentos de palabras clave." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "altura de la imagen" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "ancho de imagen" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "adjunto de imagen" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "archivos adjuntos de imágenes" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" "Los archivos adjuntos de imágenes no se pueden asignar a este tipo de objeto" " ({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "amable" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "entrada de diario" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "entradas de diario" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "No se admite el registro en diario para este tipo de objeto ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "marcalibros" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "marcapáginas" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "No se pueden asignar marcadores a este tipo de objeto ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "leer" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "acto" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "notificación" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "notificaciones" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Objetos de este tipo ({type}) no admiten notificaciones." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "grupos" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "usuarios" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "grupo de notificaciones" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "grupos de notificaciones" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "suscripción" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "suscripciones" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "es ejecutable" @@ -8547,19 +8940,19 @@ msgstr "valor almacenado en caché" msgid "cached values" msgstr "valores en caché" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "sucursal" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "sucursales" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "cambio por etapas" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "cambios por etapas" @@ -8583,85 +8976,87 @@ msgstr "artículo etiquetado" msgid "tagged items" msgstr "artículos etiquetados" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Datos del script" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Parámetros de ejecución del script" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Los cambios en la base de datos se han revertido automáticamente." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Secuencia de comandos abortada con un error: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Se ha producido una excepción: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Los cambios en la base de datos se han revertido debido a un error." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "La eliminación se impide mediante una regla de protección: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Descartar" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Tipos de objetos" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Valide la singularidad" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Visible" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Editable" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Tipo de objeto relacionado" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Set de elección" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Se puede clonar" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Valor mínimo" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Valor máximo" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Regex de validación" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Contar" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Ordenar alfabéticamente" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Ventana nueva" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Como archivo adjunto" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8671,63 +9066,54 @@ msgstr "Como archivo adjunto" msgid "Data File" msgstr "Archivo de datos" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Sincronizado" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Imagen" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Tamaño (bytes)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Leer" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "Validación SSL" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Inicio del trabajo" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Fin del trabajo" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Tipos de eventos" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Funciones del dispositivo" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Nombre completo" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "ID de solicitud" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Comentarios (cortos)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Línea" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Nivel" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Mensaje" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Método" @@ -8758,37 +9144,37 @@ msgstr "Las reglas de validación se deben pasar como un diccionario" msgid "Custom validation failed for {attribute}: {exception}" msgstr "Fallo en la validación personalizada para {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Atributo no válido»{name}«para solicitar" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Atributo no válido»{name}«para {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Tu panel de control se ha restablecido." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Widget añadido: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Widget actualizado: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Widget eliminado: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Error al eliminar el widget: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "" "No se puede ejecutar el script: el proceso de trabajo de RQ no se está " @@ -8835,10 +9221,6 @@ msgstr "SLACO" msgid "Loopback" msgstr "Bucle invertido" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Secundaria" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8864,19 +9246,19 @@ msgstr "Texto plano" msgid "Invalid IP address format: {address}" msgstr "Formato de dirección IP no válido: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Objetivo de importación" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Destino de importación (nombre)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Objetivo de exportación" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Destino de exportación (nombre)" @@ -8941,16 +9323,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Prefijos que contienen este prefijo o IP" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Longitud de la máscara" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "Número de VLAN (1-4094)" @@ -8970,23 +9352,23 @@ msgid "Parent prefix" msgstr "Prefijo principal" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Máquina virtual (nombre)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Máquina virtual (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Interfaz (nombre)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "Interfaz VM (nombre)" @@ -9014,19 +9396,19 @@ msgstr "Servicio (ID)" msgid "NAT inside IP address (ID)" msgstr "Dirección IP interna de NAT (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "Dirección IP (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "dirección IP" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "IPv4 principal (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "IPv6 principal (ID)" @@ -9059,17 +9441,17 @@ msgstr "Se requiere una máscara CIDR (por ejemplo, /24)." msgid "Address pattern" msgstr "Patrón de direcciones" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Haga valer un espacio único" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Es privado" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9082,20 +9464,20 @@ msgstr "Es privado" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Fecha añadida" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupo VLAN" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9104,49 +9486,49 @@ msgstr "Grupo VLAN" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Longitud del prefijo" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Es una piscina" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Tratar como si se hubiera utilizado por completo" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "Asignación de VLAN" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "Nombre DNS" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocolo" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "ID de grupo" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9158,156 +9540,142 @@ msgstr "ID de grupo" msgid "Authentication type" msgstr "Tipo de autenticación" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Clave de autenticación" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "AUTENTICACIÓN" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "VLAN (VID) secundaria mínima" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "VLAN (VID) secundaria máxima" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Tipo de ámbito" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "Intervalos de ID de VLAN" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Alcance" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Sitio y grupo" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Puertos" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Importar destinos de ruta" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Exportar destinos de ruta" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "RIR asignado" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "Grupo de VLAN (si lo hay)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Dispositivo principal de la interfaz asignada (si existe)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Máquina virtual" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "VM principal de la interfaz asignada (si existe)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Interfaz asignada" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Es primaria" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Conviértase en la IP principal del dispositivo asignado" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "No se especificó ningún dispositivo o máquina virtual; no se puede " "establecer como IP principal" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" "No se especificó ninguna interfaz; no se puede establecer como IP principal" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Tipo de autenticación" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Tipo de ámbito (aplicación y modelo)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "VLAN (VID) secundaria mínima (predeterminado): {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Número máximo de VID de VLAN secundaria (predeterminado: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Grupo de VLAN asignado" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "Protocolo IP" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Obligatorio si no está asignado a una VM" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Obligatorio si no está asignado a un dispositivo" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} no está asignado a este dispositivo/máquina virtual." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Objetivos de ruta" @@ -9383,31 +9751,34 @@ msgstr "Asignado a una interfaz" msgid "DNS Name" msgstr "Nombre DNS" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "IDENTIFICADOR DE VLAN" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "VID mínimo" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Contiene el identificador de VLAN" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "VID máximo" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "IDENTIFICADOR DE VLAN" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9478,11 +9849,16 @@ msgstr "Dirección IP virtual" msgid "Assignment already exists" msgstr "La asignación ya existe" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "ID de VLAN" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "VLAN secundarias" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9490,33 +9866,33 @@ msgstr "" "Lista separada por comas de uno o más números de puerto. Se puede " "especificar un rango mediante un guión." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Plantilla de servicio" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Puerto (s)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Servicio" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Plantilla de servicio" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Desde plantilla" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Personalizado" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9556,7 +9932,7 @@ msgstr "ID de grupo" msgid "protocol" msgstr "protocolo" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "tipo de autenticación" @@ -9572,10 +9948,6 @@ msgstr "Grupo FHRP" msgid "FHRP groups" msgstr "Grupos FHRP" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "prioridad" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "Asignación grupal de FHRP" @@ -9592,7 +9964,7 @@ msgstr "privado" msgid "IP space managed by this RIR is considered private" msgstr "El espacio IP administrado por este RIR se considera privado" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR" @@ -9848,22 +10220,6 @@ msgid "" msgstr "" "Un servicio debe estar asociado a un dispositivo o a una máquina virtual." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "ID de VLAN mínimo" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "El ID más bajo permitido de una VLAN secundaria" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "ID de VLAN máximo" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "El ID más alto permitido de una VLAN secundaria" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "Grupos de VLAN" @@ -9876,39 +10232,40 @@ msgstr "No se puede establecer scope_type sin scope_id." msgid "Cannot set scope_id without scope_type." msgstr "No se puede establecer scope_id sin scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Los rangos no se pueden superponer." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" -"El número máximo de VID para niños debe ser mayor o igual al número mínimo " -"de VID para niños" +"El VID infantil máximo debe ser mayor o igual al VID infantil mínimo " +"({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "El sitio específico al que está asignada esta VLAN (si existe)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "Grupo de VLAN (opcional)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "ID de VLAN numérico (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Estado operativo de esta VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "La función principal de esta VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9917,12 +10274,10 @@ msgstr "" "La VLAN está asignada al grupo {group} (alcance: {scope}); no se puede " "asignar también al sitio {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "" -"El VID debe estar entre {minimum} y {maximum} para las VLAN del grupo " -"{group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "El VID debe estar en rangos {ranges} para VLAN en grupo {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9940,8 +10295,8 @@ msgstr "reforzar un espacio único" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Evite la duplicación de prefijos/direcciones IP en este VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRFs" @@ -9969,8 +10324,8 @@ msgstr "Recuento de sitios" msgid "Provider Count" msgstr "Recuento de proveedores" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Agregados" @@ -9979,21 +10334,21 @@ msgid "Added" msgstr "Añadido" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Prefijos" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Utilización" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "Intervalos de IP" @@ -10038,7 +10393,11 @@ msgstr "Objeto asignado" msgid "Scope Type" msgstr "Tipo de ámbito" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "Gamas VID" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VÍDEO" @@ -10102,11 +10461,11 @@ msgstr "Interfaces de dispositivos" msgid "VM Interfaces" msgstr "Interfaces de VM" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Es posible que este campo no esté en blanco." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10114,23 +10473,37 @@ msgstr "" "El valor debe pasarse directamente (por ejemplo, «foo»: 123); no utilice un " "diccionario o una lista." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} no es una opción válida." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Tipo de contenido no válido: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Valor no válido. Especifique un tipo de contenido como " "'.'." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "" +"Los rangos se deben especificar en el formulario (inferior, superior)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Los límites del rango se deben definir como números enteros." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} debe implementar get_view_name ()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Permiso no válido {permission} para modelo {model}" @@ -10463,48 +10836,53 @@ msgstr "Eliminar etiquetas" msgid "{class_name} must specify a model class." msgstr "{class_name} debe especificar una clase modelo." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Nombre de campo desconocido '{name}'en datos de campo personalizados." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Valor no válido para el campo personalizado '{name}': {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Campo personalizado '{name}'debe tener un valor único." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Falta el campo personalizado obligatorio '{name}'." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Fuente de datos remota" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "ruta de datos" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Ruta al archivo remoto (relativa a la raíz de la fuente de datos)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "sincronización automática habilitada" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Habilitar la sincronización automática de datos cuando se actualiza el " "archivo de datos" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "fecha sincronizada" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} debe implementar un método sync_data ()." @@ -10518,217 +10896,230 @@ msgid "Site Groups" msgstr "Grupos de sitios" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Roles de bastidor" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Elevaciones" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Grupos de inquilinos" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Grupos de contactos" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Funciones de contacto" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Asignaciones de contactos" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Roles de bastidor" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Elevaciones" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Tipos de estanterías" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Módulos" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Contextos de dispositivos virtuales" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "fabricantes" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Componentes del dispositivo" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Funciones de los artículos de inventario" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Conexiones" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Cables" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Vínculos inalámbricos" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Conexiones de interfaz" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Conexiones de consola" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Conexiones de alimentación" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Grupos de LAN inalámbrica" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Funciones de prefijo y VLAN" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "Rangos de ASN" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "Grupos de VLAN" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Plantillas de servicio" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Servicios" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Túneles" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Grupos de túneles" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Terminaciones de túneles" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "VPNs L2" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Terminaciones" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "Propuestas IKE" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "Políticas de IKE" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "Propuestas de IPSec" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "Políticas IPSec" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "Perfiles IPSec" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Virtualización" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Discos virtuales" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Tipos de clústeres" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Grupos de clústeres" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Tipos de circuitos" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Grupos de circuitos" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Tareas grupales" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Terminaciones de circuitos" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Proveedores" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Cuentas de proveedores" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Redes de proveedores" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Paneles de alimentación" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Configuraciones" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Contextos de configuración" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Plantillas de configuración" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Personalización" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10741,114 +11132,108 @@ msgstr "Personalización" msgid "Custom Fields" msgstr "Campos personalizados" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Opciones de campo personalizadas" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Vínculos personalizados" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Plantillas de exportación" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Filtros guardados" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Adjuntos de imágenes" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operaciones" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Integraciones" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Fuentes de datos" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Reglas del evento" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhooks" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Trabajos" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Explotación" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Grupos de notificaciones" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Entradas del diario" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" -msgstr "Registro de cambios" - -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 -msgid "Admin" -msgstr "Admin" - -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "usuarios" +msgstr "Registro de cambios" -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Grupos" +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 +msgid "Admin" +msgstr "Admin" -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "Tokens de API" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Permisos" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Sistema" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Plugins" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Historial de configuración" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Tareas en segundo plano" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Plugins" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10880,31 +11265,22 @@ msgstr "" "{template_extension} ¡no es una subclase de " "NetBox.Plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"Clase PluginTemplateExtension {template_extension} ¡no define un modelo " -"válido!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} debe ser una instancia de netbox.plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} debe ser una instancia de netbox.plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} debe ser una instancia de netbox.plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context debe ser un diccionario" @@ -10983,75 +11359,79 @@ msgstr "No se pueden agregar tiendas al registro después de la inicialización" msgid "Cannot delete stores from registry" msgstr "No se pueden eliminar las tiendas del registro" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "checa" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "danés" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "alemán" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Inglés" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "española" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "francesa" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "italiano" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "japonés" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "holandesa" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "polaco" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "portugués" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "rusa" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "turca" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "ucraniana" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "chino" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Selecciona todo" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Alternar todo" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Alternar menú desplegable" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Error" @@ -11104,26 +11484,26 @@ msgstr "Renombrado {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Eliminado {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Registro de cambios" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "diario" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "" "No se pueden sincronizar los datos: no hay ningún archivo de datos " "establecido." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Datos sincronizados para {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Sincronizado {count} {object_type}" @@ -11133,7 +11513,7 @@ msgstr "Sincronizado {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} debe implementar get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11171,11 +11551,11 @@ msgstr "" msgid "The complete exception is provided below" msgstr "La excepción completa se proporciona a continuación" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Versión de Python" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "Versión NetBox" @@ -11199,14 +11579,26 @@ msgstr "en GitHub" msgid "Home Page" msgstr "Página de inicio" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Perfil" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Notificaciones" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Suscripciones" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Preferencias" @@ -11214,7 +11606,7 @@ msgstr "Preferencias" msgid "Change Password" msgstr "Cambiar contraseña" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11239,7 +11631,7 @@ msgstr "Cambiar contraseña" msgid "Cancel" msgstr "Cancelar" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11313,7 +11705,7 @@ msgid "Superuser" msgstr "Superusuario" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Personal" @@ -11328,19 +11720,19 @@ msgstr "Grupos asignados" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11361,7 +11753,7 @@ msgstr "Mis fichas de API" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Símbolo" @@ -11382,32 +11774,41 @@ msgstr "Añadir un token" msgid "Home" msgstr "Inicio" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "Motivo NetBox" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "Logotipo de NetBox" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Documentos" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "API DE DESCANSO" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "Documentación de la API REST" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "API de GraphQL" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Soporte de NetBox Labs" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Código fuente" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Comunidad" @@ -11419,6 +11820,11 @@ msgstr "Fecha de instalación" msgid "Termination Date" msgstr "Fecha de terminación" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Asignar grupo" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Intercambiar terminaciones de circuitos" @@ -11436,6 +11842,14 @@ msgstr "Un lado" msgid "Z side" msgstr "Lado Z" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Asignar circuito" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Asignación de grupos de circuitos" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Agregar circuito" @@ -11460,7 +11874,7 @@ msgstr "Añadir" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11581,13 +11995,10 @@ msgstr "Nuevo valor" msgid "Changed" msgstr "Cambiado" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Última actualización" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Tamaño" @@ -11669,25 +12080,120 @@ msgstr "Preferencias de usuario" msgid "Job retention" msgstr "Retención de empleo" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Trabajo" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Creado por" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Programación" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "cada %(interval)s minutos" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Cambiar" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Diferencia" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Anterior" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Próxima" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Objeto creado" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Objeto eliminado" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Sin cambios" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Datos previos al cambio" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Advertencia: comparación del cambio no atómico con el registro de cambios " +"anterior" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Datos posteriores al cambio" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Ver todos %(count)s Cambios" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Cambiar la retención de registros" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "días" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Indefinido" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "No instalado" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Visión general" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Instalar" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Detalles del plugin" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Resumen" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Licencia" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Historial de versiones" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Instrucciones de instalación local" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11699,8 +12205,8 @@ msgstr "Colas en segundo plano" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11759,7 +12265,7 @@ msgid "Queued Jobs" msgstr "Trabajos en cola" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11819,39 +12325,43 @@ msgstr "Exportación" msgid "System Status" msgstr "Estado del sistema" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "Lanzamiento de NetBox" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Versión Django" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "Versión PostgreSQL" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Nombre de base de datos" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Tamaño de base de datos" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "No disponible" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "Trabajadores de RQ" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "cola predeterminada" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Hora del sistema" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Configuración actual" @@ -11951,14 +12461,15 @@ msgstr "No está atormentado" msgid "GPS Coordinates" msgstr "Coordenadas GPS" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Mapearlo" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Mapa" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Etiqueta de activo" @@ -11978,19 +12489,19 @@ msgstr "Administración" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT para" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NATA" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Utilización de energía" @@ -12018,7 +12529,7 @@ msgid "Leg" msgstr "Pierna" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Añadir un servicio" @@ -12279,6 +12790,22 @@ msgstr "Borrar" msgid "Clear All" msgstr "Borrar todo" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Profundidad de montaje" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Unidad inicial" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Unidades descendentes" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Elevación del bastidor" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Agregar interfaz secundaria" @@ -12341,8 +12868,8 @@ msgstr "Ancho de canal" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12432,49 +12959,33 @@ msgstr "Sorteo máximo" msgid "Allocated Draw" msgstr "Sorteo asignado" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Utilización del espacio" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "descendiendo" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "ascendiendo" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Unidad inicial" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Profundidad de montaje" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Peso del estante" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Peso máximo" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Peso total" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Imágenes y etiquetas" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Solo imágenes" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Solo etiquetas" @@ -12487,6 +12998,10 @@ msgstr "Añadir reserva" msgid "View List" msgstr "Ver lista" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Seleccione la vista de estantería" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Ordenar por" @@ -12540,10 +13055,6 @@ msgstr "Hora del sitio" msgid "Physical Address" msgstr "Dirección física" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Mapa" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Dirección de envío" @@ -12584,7 +13095,7 @@ msgstr "Agregar nuevo miembro" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Acciones" @@ -12755,46 +13266,42 @@ msgid "Group Name" msgstr "Nombre del grupo" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Debe ser único" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Clonable" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Valor predeterminado" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Peso de búsqueda" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Lógica de filtros" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Peso de la pantalla" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Interfaz de usuario visible" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Interfaz de usuario editable" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Reglas de validación" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Valor mínimo" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Valor máximo" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Expresión regular" @@ -12808,11 +13315,11 @@ msgstr "Clase de botones" msgid "Assigned Models" msgstr "Modelos asignados" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Texto del enlace" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "URL del enlace" @@ -12837,6 +13344,14 @@ msgstr "" "Este cambio solo afecta vuestro panel de control, y no afectará a " "otros usuarios." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "configuración de widgets" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Cerrar widget" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Añadir un widget" @@ -12869,13 +13384,9 @@ msgstr "Se ha producido un problema al obtener la fuente RSS" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Inicio del trabajo" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Fin del trabajo" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Condiciones" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12917,20 +13428,15 @@ msgstr "Resultados pendientes" msgid "Journal Entry" msgstr "Entrada de diario" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Cambiar la retención de registros" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "días" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Grupo de notificaciones" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Indefinido" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "No se ha asignado ninguno" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12945,54 +13451,6 @@ msgstr "Contextos de origen" msgid "New Journal Entry" msgstr "Nueva entrada de diario" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Cambiar" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Diferencia" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Anterior" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Próxima" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Objeto creado" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Objeto eliminado" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Sin cambios" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Datos previos al cambio" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Advertencia: comparación del cambio no atómico con el registro de cambios " -"anterior" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Datos posteriores al cambio" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Ver todos %(count)s Cambios" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Informe" @@ -13003,7 +13461,7 @@ msgstr "No tiene permiso para ejecutar scripts" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Ejecutar script" @@ -13016,27 +13474,27 @@ msgstr "Error al cargar el script" msgid "Script no longer exists in the source file." msgstr "El script ya no existe en el archivo fuente." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Última ejecución" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "La secuencia de comandos ya no está presente en el archivo fuente" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Nunca" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Corre otra vez" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "No se encontró ningún script" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -13051,6 +13509,14 @@ msgstr "" msgid "Results" msgstr "Resultados" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Umbral de registro" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Todas" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Artículos etiquetados" @@ -13083,11 +13549,11 @@ msgstr "Tipo de contenido HTTP" msgid "SSL Verification" msgstr "Verificación SSL" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Encabezados adicionales" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Plantilla corporal" @@ -13163,6 +13629,10 @@ msgstr "Opciones de campo" msgid "Accessor" msgstr "Accesor" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "opciones" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Valor de importación" @@ -13330,6 +13800,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Como resultado de esta acción, se eliminarán los siguientes objetos." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "hace" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "No hay notificaciones sin leer" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Todas las notificaciones" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Seleccione" @@ -13397,15 +13879,23 @@ msgstr "Búsqueda rápida" msgid "Saved filter" msgstr "Filtro guardado" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Pedido claro" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Centro de ayuda" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Administrador de Django" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Cerrar sesión" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Iniciar sesión" @@ -13453,10 +13943,6 @@ msgstr "Creación masiva" msgid "Create Group" msgstr "Crear grupo" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Asignar grupo" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "IP virtuales" @@ -13590,10 +14076,6 @@ msgstr "Agregar un prefijo" msgid "Add VLAN" msgstr "Agregar VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "VÍDEOS permitidos" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Distinguidor de rutas" @@ -13602,20 +14084,16 @@ msgstr "Distinguidor de rutas" msgid "Unique IP Space" msgstr "Espacio IP único" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "Logotipo de NetBox" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Errores" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Iniciar sesión" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "O" @@ -13693,11 +14171,6 @@ msgstr "Título" msgid "Phone" msgstr "Teléfono" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Asignaciones" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13737,7 +14210,7 @@ msgstr "Permisos asignados" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Permiso" @@ -13759,23 +14232,21 @@ msgid "Allocated Resources" msgstr "Recursos asignados" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "CPUs virtuales" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Memoria" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Espacio en disco" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13816,7 +14287,7 @@ msgid "Cluster Group" msgstr "Grupo de clústeres" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Tipo de clúster" @@ -13825,13 +14296,13 @@ msgstr "Tipo de clúster" msgid "Virtual Disk" msgstr "Disco virtual" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Recursos" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Agregar disco virtual" @@ -14013,13 +14484,12 @@ msgstr "Agregar grupo de LAN inalámbrica" msgid "Link Properties" msgstr "Propiedades del enlace" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Terciario" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Inactivo" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Distancia" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14184,13 +14654,13 @@ msgstr "Enlace de contacto" msgid "Contact Description" msgstr "Descripción del contacto" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Permiso (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Grupo (nombre)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Grupo de notificaciones (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14212,27 +14682,27 @@ msgstr "Estado de superusuario" msgid "If no key is provided, one will be generated automatically." msgstr "Si no se proporciona ninguna clave, se generará una automáticamente." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Es personal" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Es superusuario" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Puede ver" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Puede agregar" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Puede cambiar" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Puede eliminar" @@ -14329,48 +14799,48 @@ msgstr "permiso" msgid "permissions" msgstr "permisos" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "preferencias de usuario" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Clave '{path}'es un nodo de hoja; no se pueden asignar claves nuevas" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Clave '{path}'es un diccionario; no puede asignar un valor que no sea de " "diccionario" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "caduca" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "utilizado por última vez" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "clave" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "escritura habilitada" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" "Permitir operaciones de creación/actualización/eliminación con esta clave" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "IP permitidas" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14379,11 +14849,11 @@ msgstr "" "blanco para que no haya restricciones. Por ejemplo: «10.1.1.0/24, " "192.168.10.16/32, 2001:DB 8:1: :/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "simbólico" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "fichas" @@ -14391,18 +14861,10 @@ msgstr "fichas" msgid "group" msgstr "grupo" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "grupos" - #: netbox/users/models/users.py:92 msgid "user" msgstr "usuario" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "usuarios" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Ya existe un usuario con este nombre de usuario." @@ -14544,7 +15006,7 @@ msgstr "" "Datos YAML no válidos. Los datos deben estar en forma de varios documentos o" " de un solo documento que contenga una lista de diccionarios." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14553,6 +15015,22 @@ msgstr "" "Lista no válida ({value}). Debe ser numérico y los rangos deben estar en " "orden ascendente." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Especifique uno o más rangos numéricos separados por comas. Ejemplo: " +"1-5, 20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Intervalos no válidos ({value}). Debe ser un rango de números enteros en " +"orden ascendente." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14722,6 +15200,26 @@ msgstr "" "Falta el valor requerido para el parámetro de consulta estática: " "'{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "La contraseña debe tener al menos un número." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "La contraseña debe tener al menos una letra mayúscula." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "La contraseña debe tener al menos una letra minúscula." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"La contraseña debe contener al menos un número, una letra mayúscula y una " +"minúscula." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14779,6 +15277,14 @@ msgstr "Añadir plantilla de exportación" msgid "Import" msgstr "Importar" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Cancelar suscripción" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Suscríbase" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" @@ -14819,15 +15325,11 @@ msgstr "Buscar en NetBox" msgid "Open selector" msgstr "Selector abierto" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "No se ha asignado ninguno" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Escribe" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "La prueba debe definir csv_update_data." @@ -14836,17 +15338,17 @@ msgstr "La prueba debe definir csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} no es una expresión regular válida." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "{self.__class__.__name__} debe implementar get_required_permission ()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} debe implementar get_required_permission ()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14870,7 +15372,7 @@ msgid "Cluster type (ID)" msgstr "Tipo de clúster (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Clúster (ID)" @@ -14888,7 +15390,7 @@ msgid "Disk (GB)" msgstr "Disco (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Tamaño (GB)" @@ -14908,6 +15410,10 @@ msgstr "Clúster asignado" msgid "Assigned device within cluster" msgstr "Dispositivo asignado dentro del clúster" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Número de serie" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14933,6 +15439,7 @@ msgstr "" "El tamaño del disco se administra mediante la conexión de discos virtuales." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Disco" @@ -14974,37 +15481,37 @@ msgid "memory (MB)" msgstr "memoria (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "disco (GB)" +msgid "disk (MB)" +msgstr "disco (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "El nombre de la máquina virtual debe ser único por clúster." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "máquina virtual" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "máquinas virtuales" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "Se debe asignar una máquina virtual a un sitio o clúster." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" "El clúster seleccionado ({cluster}) no está asignado a este sitio ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "Debe especificar un clúster al asignar un dispositivo host." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." @@ -15012,7 +15519,7 @@ msgstr "" "El dispositivo seleccionado ({device}) no está asignado a este clúster " "({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -15021,19 +15528,19 @@ msgstr "" "El tamaño de disco especificado ({size}) debe coincidir con el tamaño " "agregado de los discos virtuales asignados ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "" "Debe ser un IPv{family} dirección. ({ip} es un IPv{version} dirección.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "" "La dirección IP especificada ({ip}) no está asignado a esta máquina virtual." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -15042,7 +15549,7 @@ msgstr "" "La interfaz principal seleccionada ({parent}) pertenece a una máquina " "virtual diferente ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -15051,7 +15558,7 @@ msgstr "" "La interfaz de puente seleccionada ({bridge}) pertenece a una máquina " "virtual diferente ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -15060,24 +15567,24 @@ msgstr "" "La VLAN sin etiquetar ({untagged_vlan}) debe pertenecer al mismo sitio que " "la máquina virtual principal de la interfaz o debe ser global." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "tamaño (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "tamaño (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "disco virtual" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "discos virtuales" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Añadido {count} dispositivos para agrupar {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Eliminado {count} dispositivos del clúster {cluster}" @@ -15191,32 +15698,32 @@ msgid "Outside IP (ID)" msgstr "IP externa (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "Política de IKE (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "Política IKE (nombre)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "Política IPSec (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "Política IPSec (nombre)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "VPN L2 (babosa)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "Interfaz VM (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (nombre)" @@ -15391,7 +15898,7 @@ msgstr "versión" msgid "proposals" msgstr "propuestas" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "clave previamente compartida" @@ -15573,17 +16080,24 @@ msgstr "Empresa WPA" msgid "Authentication cipher" msgstr "Cifrado de autenticación" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Unidad de distancia" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "VLAN puenteada" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Interfaz A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Interfaz B" @@ -15591,39 +16105,51 @@ msgstr "Interfaz B" msgid "Side B" msgstr "Lado B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "cifrado de autenticación" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "grupo LAN inalámbrico" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "grupos LAN inalámbricos" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "LAN inalámbrica" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "interfaz A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "interfaz B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "distancia" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "unidad de distancia" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "enlace inalámbrico" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "enlaces inalámbricos" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "Debe especificar una unidad al configurar una distancia inalámbrica" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} no es una interfaz inalámbrica." diff --git a/netbox/translations/fr/LC_MESSAGES/django.mo b/netbox/translations/fr/LC_MESSAGES/django.mo index 1d57fc6e235..9e38972f9b3 100644 Binary files a/netbox/translations/fr/LC_MESSAGES/django.mo and b/netbox/translations/fr/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/fr/LC_MESSAGES/django.po b/netbox/translations/fr/LC_MESSAGES/django.po index 0a6766fc821..d2f01fbce1f 100644 --- a/netbox/translations/fr/LC_MESSAGES/django.po +++ b/netbox/translations/fr/LC_MESSAGES/django.po @@ -18,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: French (https://app.transifex.com/netbox-community/teams/178115/fr/)\n" @@ -34,16 +34,17 @@ msgstr "" msgid "Key" msgstr "Clé" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Écriture activée" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -55,11 +56,11 @@ msgstr "Créé" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Expire" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Dernière utilisation" @@ -69,47 +70,47 @@ msgstr "Dernière utilisation" msgid "Allowed IPs" msgstr "IP autorisées" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Connecté en tant que {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Vous êtes déconnecté." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Vos préférences ont été mises à jour." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "Les informations d'identification utilisateur authentifiées par LDAP ne " "peuvent pas être modifiées dans NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Votre mot de passe a été modifié avec succès." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Planifié" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Approvisionnement" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -118,9 +119,9 @@ msgstr "Approvisionnement" msgid "Active" msgstr "Actif" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Hors ligne" @@ -133,98 +134,116 @@ msgstr "Déprovisionnement" msgid "Decommissioned" msgstr "Mis hors service" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Primaire" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Secondaire" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Tertiaire" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inactif" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Région (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Région (slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Groupe de sites (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Groupe de sites (slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -236,172 +255,197 @@ msgstr "Groupe de sites (slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Site" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Site (slug)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "Numéro d'AS" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Fournisseur (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Fournisseur (slug)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Compte fournisseur (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Compte du fournisseur (compte)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Réseau fournisseur (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Type de circuit (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Type de circuit (slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Site (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Terminaison A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Rechercher" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Circuit" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Réseau fournisseur (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Circuit (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Circuit (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Groupe de circuits (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Groupe de circuits (slug)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "Numéros d'AS" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -414,16 +458,17 @@ msgstr "Numéros d'AS" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -433,8 +478,9 @@ msgstr "Numéros d'AS" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -487,26 +533,28 @@ msgstr "Numéros d'AS" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Description" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -518,22 +566,22 @@ msgstr "Description" msgid "Provider" msgstr "Prestataire" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Identifiant du service" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -544,33 +592,33 @@ msgstr "Identifiant du service" msgid "Color" msgstr "Couleur" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -583,9 +631,9 @@ msgstr "Couleur" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -601,52 +649,52 @@ msgstr "Couleur" msgid "Type" msgstr "Type" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Identifiant de compte du prestataire" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -655,7 +703,7 @@ msgstr "Identifiant de compte du prestataire" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -663,7 +711,7 @@ msgstr "Identifiant de compte du prestataire" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -673,45 +721,49 @@ msgstr "Identifiant de compte du prestataire" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Statut" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -723,7 +775,7 @@ msgstr "Statut" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -746,36 +798,37 @@ msgstr "Statut" msgid "Tenant" msgstr "Entité" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Date d'installation" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Date de résiliation" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Débit engagé (Kbits/s)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Paramètres du service" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -785,37 +838,37 @@ msgstr "Paramètres du service" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Utilisateur" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Réseau de fournisseurs" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Vitesse du port (Kbits/s)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Vitesse ascendante (Kbits/s)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Marquer comme connecté" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -823,46 +876,60 @@ msgstr "Marquer comme connecté" msgid "Circuit Termination" msgstr "Terminaison de circuit" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Détails de terminaison" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Priorité" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Prestataire assigné" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Compte opérateur associé" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Type de circuit" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "État opérationnel" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -870,7 +937,7 @@ msgstr "État opérationnel" msgid "Assigned tenant" msgstr "Locataire associé" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -878,44 +945,44 @@ msgstr "Locataire associé" msgid "Termination" msgstr "Terminaison" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Réseau de fournisseurs" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -924,13 +991,13 @@ msgstr "Réseau de fournisseurs" msgid "Location" msgstr "Emplacement" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -939,22 +1006,22 @@ msgstr "Emplacement" msgid "Contacts" msgstr "Contacts" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -967,17 +1034,17 @@ msgstr "Contacts" msgid "Region" msgstr "Région" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -985,180 +1052,263 @@ msgstr "Région" msgid "Site group" msgstr "Groupe de sites" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Attributs" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Compte" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Côté terme" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Affectation" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Groupe" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Groupe de circuits" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "couleur" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "type de circuit" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "types de circuits" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "identifiant du circuit" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "ID de circuit unique" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "statut" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "installé" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "met fin à" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "taux de validation (Kbits/s)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Taux engagé" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "circuit" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "circuits" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "groupe de circuits" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "groupes de circuits" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "priorité" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Affectation de groupes de circuits" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Assignations de groupes de circuits" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "résiliation" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "vitesse du port (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Vitesse du circuit physique" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "vitesse montante (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Vitesse ascendante, si elle est différente de la vitesse du port" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "ID de connexion croisée" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID de l'interconnexion locale" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "panneau de raccordement ou port (s)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "ID du panneau de raccordement et numéro (s) de port" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "description" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "terminaison du circuit" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "terminaisons de circuits" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Une terminaison de circuit doit être connectée à un site ou à un réseau " "fournisseur." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1167,33 +1317,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "nom" @@ -1202,11 +1353,12 @@ msgid "Full name of the provider" msgstr "Nom complet du fournisseur" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "slug" @@ -1242,40 +1394,45 @@ msgstr "réseau de fournisseurs" msgid "provider networks" msgstr "réseaux de fournisseurs" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1290,7 +1447,7 @@ msgstr "réseaux de fournisseurs" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1304,8 +1461,9 @@ msgstr "réseaux de fournisseurs" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1345,9 +1503,9 @@ msgstr "réseaux de fournisseurs" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1357,56 +1515,57 @@ msgstr "réseaux de fournisseurs" msgid "Name" msgstr "Nom" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Circuits" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Identifiant du circuit" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Côté A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Côté Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Bande passante garantie" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1415,6 +1574,12 @@ msgstr "Bande passante garantie" msgid "Comments" msgstr "Commentaires" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Allocations" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Comptes" @@ -1437,7 +1602,7 @@ msgstr "Aucune terminaison n'a été définie pour le circuit {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Terminaisons échangées pour le circuit {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "" "Cet utilisateur n'est pas autorisé à synchroniser cette source de données." @@ -1456,21 +1621,19 @@ msgid "Syncing" msgstr "Synchronisation" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Terminé" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Échoué" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1482,30 +1645,39 @@ msgstr "Scripts" msgid "Reports" msgstr "Rapports" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "En attente" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Programmé" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "En exécution" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "En erreur" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Mis à jour" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Supprimé" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Terminé" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Commencé" @@ -1522,11 +1694,13 @@ msgstr "Arrêté" msgid "Cancelled" msgstr "Annulé" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Local" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1536,8 +1710,8 @@ msgstr "Nom d'utilisateur" msgid "Only used for cloning with HTTP(S)" msgstr "Utilisé uniquement pour le clonage avec HTTP(S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Mot de passe" @@ -1559,24 +1733,63 @@ msgstr "ID de clé d'accès AWS" msgid "AWS secret access key" msgstr "Clé d'accès secrète AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Objet créé" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Objet mis à jour" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Objet supprimé" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Le travail a commencé" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Tâche terminée" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "La tâche a échoué" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Job erroné" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Source de données (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Source de données (nom)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Utilisateur (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Nom d'utilisateur" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1584,14 +1797,14 @@ msgstr "Source de données (nom)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Activé" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1604,11 +1817,11 @@ msgstr "Paramètres" msgid "Ignore rules" msgstr "Ignorer les règles" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1618,76 +1831,99 @@ msgstr "Ignorer les règles" msgid "Data Source" msgstr "Source de données" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Fichier" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Source de données" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Création" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Type d'objet" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Créé après" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Créé avant" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Planifié après" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Planifié avant" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Commencé après" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Commencé avant" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Terminé après" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Terminé avant" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Utilisateur" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Heure" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Après" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Avant" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Action" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1720,19 +1956,19 @@ msgstr "" msgid "Rack Elevations" msgstr "Élévations des baies" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Puissance" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1749,7 +1985,9 @@ msgstr "Bannières" msgid "Pagination" msgstr "Pagination" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Validation" @@ -1759,7 +1997,7 @@ msgstr "Validation" msgid "User Preferences" msgstr "Préférences de l'utilisateur" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1783,10 +2021,50 @@ msgstr "Valeur actuelle : {value}" msgid " (default)" msgstr " (par défaut)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "temps" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "nom d'utilisateur" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "ID de demande" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "action" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "données de pré-modification" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "données après modification" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "changement d'objet" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "modifications d'objets" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"La journalisation des modifications n'est pas prise en charge pour ce type " +"d'objet ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "créé" @@ -1819,14 +2097,14 @@ msgstr "Configuration actuelle" msgid "Config revision #{id}" msgstr "Révision de configuration #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1834,64 +2112,65 @@ msgstr "Révision de configuration #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "type" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "activé" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ignorer les règles" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Modèles (un par ligne) correspondant aux fichiers à ignorer lors de la " "synchronisation" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "paramètres" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "dernière synchronisation" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "source de données" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "sources de données" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Type de backend inconnu : {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "" "Impossible de lancer la synchronisation ; la synchronisation est déjà en " "cours." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1899,48 +2178,48 @@ msgstr "" "Une erreur s'est produite lors de l'initialisation du backend. Une " "dépendance doit être installée : " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "dernière mise à jour" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "chemin" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Chemin du fichier par rapport à la racine de la source de données" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "taille" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "hachage" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "La longueur doit être de 64 caractères hexadécimaux." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "Hachage SHA256 des données du fichier" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "fichier de données" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "fichiers de données" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "enregistrement de synchronisation automatique" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "enregistrements de synchronisation automatique" @@ -1964,60 +2243,96 @@ msgstr "fichier géré" msgid "managed files" msgstr "fichiers gérés" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "prévu" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "intervalle" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Intervalle de récurrence (en minutes)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "commencé" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "terminé" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "données" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "erreur" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "ID de tâche" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "emploi" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "emplois" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "Les tâches ne peuvent pas être attribuées à ce type d'objet ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" "Statut invalide pour l'arrêt de la tâche. Les choix sont les suivants : " "{choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"enqueue () ne peut pas être appelée avec des valeurs à la fois pour " +"schedule_at et immediate." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "La suppression est empêchée par une règle de protection : {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Nom complet" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objet" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "ID de demande" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Est actif" @@ -2032,51 +2347,63 @@ msgid "Last updated" msgstr "Dernière mise à jour" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "IDENTIFIANT" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Objet" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Intervalle" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Version" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Colis" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Dernière mise à jour" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Version minimale de NetBox" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Version maximale de NetBox" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Aucune donnée de plug-in trouvée" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Auteur" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Adresse électronique de l'auteur" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Installé" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Aucun plug-in n'a été trouvé" +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Certifié" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Publié" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Version installée" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Dernière version" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2090,7 +2417,7 @@ msgstr "Travailleurs" msgid "Host" msgstr "Hôte" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Port" @@ -2138,62 +2465,72 @@ msgstr "PID" msgid "No workers found" msgstr "Aucun travailleur n'a été trouvé" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Tâche en file d'attente #{id} pour synchroniser {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Révision de configuration restaurée #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Poste {job_id} introuvable" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Poste {id} a été supprimé." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Erreur lors de la suppression du job {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Poste {id} introuvable." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Poste {id} a été replacé dans la file d'attente." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Poste {id} a été mis en file d'attente." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Poste {id} a été arrêté." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Impossible d'arrêter la tâche {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Le catalogue des plugins n'a pas pu être chargé" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Plug-in {name} introuvable" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Position (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "ID de l'établissement" @@ -2201,8 +2538,8 @@ msgstr "ID de l'établissement" msgid "Staging" msgstr "Mise en scène" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Démantèlement" @@ -2261,27 +2598,39 @@ msgstr "Disponible" msgid "Deprecated" msgstr "Obsolète" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Millimètres" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Pouces" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "De l'avant vers l'arrière" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "De l'arrière vers l'avant" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2297,278 +2646,273 @@ msgstr "Pouces" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Parent" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Enfant" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Avant" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Arrière" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Mis en scène" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Inventaire" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "De l'avant vers l'arrière" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "De l'arrière vers l'avant" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "De gauche à droite" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "De droite à gauche" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "D'un côté à l'arrière" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Passif" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Mixte" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (non verrouillable)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (verrouillage)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Style californien" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "International/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Propriétaire" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Autres" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/International" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Physique" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Virtuel" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Sans fil" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Interfaces virtuelles" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Passerelle" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Groupe d'agrégation de liens (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (fixe)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modulaire)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (panneau arrière)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Cellulaire" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Série" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Coaxiale" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Empilage" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "La moitié" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Complet" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Automatique" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Accès" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Tagué" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Tagué (Tous)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "Norme IEEE" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "24 V passif (2 paires)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "24 V passif (4 paires)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "48 V passif (2 paires)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "48 V passif (4 paires)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Cuivre" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "fibre optique" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Fibre" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Connecté" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Kilomètres" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Compteurs" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Centimètres" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Miles" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Pieds" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Kilogrammes" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Grammes" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Livres" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Onces" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Primaire" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Redondant" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Monophasé" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Triphasé" @@ -2582,330 +2926,335 @@ msgstr "Format d'adresse MAC non valide : {value}" msgid "Invalid WWN format: {value}" msgstr "Format WWN non valide : {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Région parente (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Région parente (slug)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Groupe de sites parent (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Groupe de sites parents (slug)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Groupe (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Groupe (slug)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "COMME (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Lieu de résidence du parent (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Localisation du parent (slug)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Lieu (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Emplacement (slug)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Fabricant (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Fabricant (slug)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Type de rack (limace)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Type de rack (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rôle (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rôle (slug)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Baie (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Utilisateur (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Utilisateur (nom)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Fabricant (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Fabricant (slug)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Plateforme par défaut (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Plateforme par défaut (slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Possède une image frontale" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Possède une image arrière" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Possède des ports de console" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Possède des ports de serveur de console" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Possède des ports d'alimentation" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Dispose de prises de courant" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Possède des interfaces" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Possède des ports d'intercommunication" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Dispose de baies pour modules" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Dispose de baies pour appareils" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Possède des articles en inventaire" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Type d'appareil (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Type de module (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Port d'alimentation (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Article d'inventaire parent (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Modèle de configuration (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Type d'appareil (slug)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Appareil parent (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Plateforme (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Plateforme (slug)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Nom du site (slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Enfant parent (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "Cluster de machines virtuelles (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Groupe de clusters (slug)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Groupe de clusters (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Modèle d'appareil (slug)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Est en pleine profondeur" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "Adresse MAC" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Possède une adresse IP principale" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Possède une adresse IP hors bande" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Châssis virtuel (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Est un membre virtuel du châssis" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "ASTUCE SUR L'EMPLOI (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Possède un contexte de périphérique virtuel" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (IDENTIFIANT)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Modèle d'appareil" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Interface (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Type de module (modèle)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Module Bay (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Baie modulaire (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Appareil (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Baie (nom)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Appareil (nom)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Type d'appareil (modèle)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Rôle de l'appareil (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Rôle de l'appareil (slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Châssis virtuel (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2914,33 +3263,33 @@ msgstr "Châssis virtuel (ID)" msgid "Virtual Chassis" msgstr "Châssis virtuel" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Module (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Câble (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "VLAN attribué" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "VID attribué" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2957,121 +3306,125 @@ msgstr "VID attribué" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (IDENTIFIANT)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Interfaces de châssis virtuelles pour appareils" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Interfaces de châssis virtuel pour le périphérique (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Type d'interface" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Interface parent (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Interface pontée (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "Interface LAG (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Contexte du périphérique virtuel" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Contexte du périphérique virtuel (identifiant)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "LAN sans fil" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Liaison sans fil" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Baie du module parent (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Module installé (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Appareil installé (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Appareil installé (nom)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Maître (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Master (nom)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Locataire (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Locataire (slug)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Non terminé" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Panneau d'alimentation (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3079,13 +3432,13 @@ msgstr "Panneau d'alimentation (ID)" msgid "Tags" msgstr "Balises" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3099,168 +3452,114 @@ msgstr "" "Les plages alphanumériques sont prises en charge. (Doit correspondre au " "nombre de noms en cours de création.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Groupe" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Nom du contact" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Téléphone de contact" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "Adresse électronique de contact" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Fuseau horaire" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Rôle" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Numéro de série" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Étiquette d'actif" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Fabricant" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Facteur de forme" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Largeur" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Hauteur (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Unités décroissantes" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Largeur extérieure" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Profondeur extérieure" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Unité extérieure" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Profondeur de montage" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3268,31 +3567,127 @@ msgstr "Profondeur de montage" msgid "Weight" msgstr "Poids" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Poids maximum" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Unité de poids" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Type de rack" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Dimensions extérieures" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Dimensions" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Numérotation" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Rôle" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Numéro de série" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Étiquette d'actif" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Débit d'air" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3302,158 +3697,132 @@ msgstr "Unité de poids" msgid "Rack" msgstr "Baie" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Matériel" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Fabricant" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Plateforme par défaut" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Numéro de pièce" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Hauteur en U" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Exclure de l'utilisation" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Débit d'air" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Type d'appareil" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Type de module" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Châssis" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "rôle de machine virtuelle" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Modèle de configuration" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Type d'appareil" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Rôle de l'appareil" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Plateforme" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3464,7 +3833,7 @@ msgstr "Plateforme" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3472,7 +3841,7 @@ msgstr "Plateforme" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3480,7 +3849,7 @@ msgstr "Plateforme" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3490,23 +3859,23 @@ msgstr "Plateforme" msgid "Device" msgstr "Appareil" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Configuration" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Type de module" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3515,7 +3884,7 @@ msgstr "Type de module" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3524,141 +3893,142 @@ msgstr "Type de module" msgid "Label" msgstr "Libellé" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Longueur" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Unité de longueur" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Domaine" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "panneau d'alimentation" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Approvisionnement" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Phase" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "tension" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Ampérage" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Utilisation maximale" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Tirage maximum" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Consommation électrique maximale (watts)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Tirage au sort attribué" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Consommation électrique allouée (watts)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "port d'alimentation" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Patte d'alimentation" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Gestion uniquement" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "Mode PoE" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "Type PoE" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Rôle sans fil" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Modules" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "DÉCALAGE" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Contextes des appareils virtuels" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Vitesse" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3672,293 +4042,298 @@ msgstr "Vitesse" msgid "Mode" msgstr "Mode" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "groupe VLAN" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN non balisé" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLAN balisés" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Groupe LAN sans fil" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Réseaux locaux sans fil" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Adressage" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Fonctionnement" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Interfaces associées" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "Commutation 802.1Q" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "Le mode d'interface doit être spécifié pour attribuer des VLAN" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "" "Des tags de VLAN ne peuvent pas être associés à une interface d'accès." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Nom de la région mère" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Nom du groupe de sites parent" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Région associé" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Groupe associé" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "options disponibles" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Site associé" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Emplacement du parent" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Emplacement introuvable." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Nom du locataire associé" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Nom du rôle attribué" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Le fabricant de ce type de rack" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Type de baie" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "La position la plus basse du rack" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Largeur rail à rail (en pouces)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Unité pour les dimensions extérieures" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Unité poids de la baie" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Nom du locataire associé" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Nom du rôle attribué" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Direction du flux d'air" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Site parent" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Emplacement de la baie (le cas échéant)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Unités" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Liste de numéros d'unités individuels séparés par des virgules" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Le fabricant qui produit ce type d'appareil" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Plateforme par défaut pour les appareils de ce type (facultatif)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Poids de l'appareil" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Unité de poids de l'appareil" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Poids du module" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Unité pour le poids du module" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Limiter les affectations de plateforme à ce fabricant" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Rôle attribué" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Fabricant du type d'appareil" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Type d'appareil et modèle" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Plateforme attribuée" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Châssis virtuel" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Cluster" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Cluster de virtualisation" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Emplacement attribué (le cas échéant)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Baie attribuée (le cas échéant)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Visage" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Face montée en baie" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Appareil parent (pour les appareils pour enfants)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Baie pour appareils" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Baie d'appareils dans laquelle cet appareil est installé (pour les appareils" " pour enfants)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Direction du flux d'air" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "L'appareil sur lequel ce module est installé" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Baie modulaire" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "La baie du module dans laquelle ce module est installé" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Le type de module" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Répliquer les composants" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3966,237 +4341,237 @@ msgstr "" "Remplir automatiquement les composants associés à ce type de module (activé " "par défaut)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Adoptez des composants" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Adoptez des composants déjà existants" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Type de port" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Vitesse du port en bits/s" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Type de prise" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Port d'alimentation local qui alimente cette prise" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Phase électrique (pour circuits triphasés)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Interface pour les parents" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Interface pontée" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Retard" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Interface LAG parent" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "VDC" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "Noms de VDC séparés par des virgules, entre guillemets doubles. Exemple :" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Support physique" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Duplex" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Mode PoE" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Type de poteau" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "Mode de fonctionnement IEEE 802.1Q (pour interfaces L2)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "VRF attribué" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Rôle RF" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Rôle sans fil (AP/station)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} n'est pas attribué à l'appareil {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Port arrière" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Port arrière correspondant" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Classification des supports physiques" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Appareil installé" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Appareil pour enfant installé dans cette baie" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Appareil pour enfant introuvable." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Article d'inventaire parent" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Type de composant" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Type de composant" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Nom du composant" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Nom du composant" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Composant introuvable : {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Appareil côté A" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Nom de l'appareil" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Côté A type" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Type de terminaison" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Nom de la face A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Nom de terminaison" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Appareil Side B" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Type de face B" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Nom de la face B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "État de la connexion" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Côté {side_upper}: {device} {termination_object} est déjà connecté" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} terminaison latérale introuvable : {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Maître" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Appareil principal" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Nom du site parent" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Panneau d'alimentation en amont" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Principal ou redondant" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Type d'alimentation (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Monophasé ou triphasé" @@ -4216,7 +4591,7 @@ msgstr "" "Les VLAN balisés ({vlans}) doivent appartenir au même site que l'appareil/la" " machine virtuelle parent de l'interface, ou ils doivent être globaux" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4224,18 +4599,28 @@ msgstr "" "Impossible d'installer le module avec des valeurs d'espace réservé dans une " "baie de modules dont aucune position n'est définie." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Impossible d'installer le module avec des valeurs d'espace réservé dans une " +"arborescence de modules {level} dans un arbre mais {tokens} espaces réservés" +" donnés." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "" "Impossible d'adopter {model} {name} car il appartient déjà à un module" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "UN {model} nommé {name} existe déjà" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4244,7 +4629,7 @@ msgstr "UN {model} nommé {name} existe déjà" msgid "Power Panel" msgstr "Panneau d'alimentation" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4254,15 +4639,15 @@ msgstr "Alimentation" msgid "Side" msgstr "Côté" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "État de l'appareil" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Région parente" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4270,62 +4655,67 @@ msgstr "Région parente" msgid "Parent group" msgstr "Groupe de parents" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Datacentre" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Type de baie" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Fonction" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Des images" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Composantes" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Rôle du sous-appareil" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Modèle" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Possède une adresse IP OOB" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Membre virtuel du châssis" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Possède des contextes de périphériques virtuels" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Groupe de clusters" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "câblé" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Occupé" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4337,43 +4727,43 @@ msgstr "Occupé" msgid "Connection" msgstr "Connexion" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Type" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Gestion uniquement" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Canal sans fil" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Fréquence du canal (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Largeur du canal (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Puissance de transmission (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4383,7 +4773,7 @@ msgstr "Puissance de transmission (dBm)" msgid "Cable" msgstr "câble" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Découvert" @@ -4392,28 +4782,31 @@ msgstr "Découvert" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Un élément de châssis virtuel existe déjà en place {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Informations de contact" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Role de la baie" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Contrôle des stocks" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Identifiant" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Dimensions extérieures" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Sélectionnez un type de rack prédéfini ou définissez les caractéristiques " +"physiques ci-dessous." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Dimensions" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Contrôle des stocks" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4421,93 +4814,70 @@ msgstr "" "Liste d'identifiants d'unités numériques séparés par des virgules. Une plage" " peut être spécifiée à l'aide d'un trait d'union." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Réservation" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Identifiant" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Châssis" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Rôle de l'appareil" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "L'unité la moins numérotée occupée par l'appareil" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" "La position dans le châssis virtuel par laquelle cet appareil est identifié" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Priorité" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "La priorité de l'appareil dans le châssis virtuel" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "Remplir automatiquement les composants associés à ce type de module" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "La longueur maximale est de 32 767 (n'importe quelle unité)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Caractéristiques" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Modèle de port de console" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Modèle de port de serveur de console" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Modèle de port avant" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Modèle d'interface" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Modèle de prise de courant" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Modèle de port d'alimentation" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Modèle de port arrière" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4518,7 +4888,7 @@ msgstr "Modèle de port arrière" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4527,7 +4897,7 @@ msgstr "Modèle de port arrière" msgid "Interface" msgstr "Interface" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4535,14 +4905,14 @@ msgstr "Interface" msgid "Console Port" msgstr "Port de console" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Port du serveur de consoles" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4553,8 +4923,8 @@ msgstr "Port du serveur de consoles" msgid "Front Port" msgstr "Port avant" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4566,36 +4936,36 @@ msgstr "Port avant" msgid "Rear Port" msgstr "Port arrière" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Port d'alimentation" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Prise de courant" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Affectation des composants" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "Un item d'inventaire ne peut être attribué qu'à un seul composant." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "Interface LAG" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Appareil pour enfants" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4603,41 +4973,41 @@ msgstr "" "Les appareils enfants doivent d'abord être créés et affectés au site et à la" " baie de l'appareil parent." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Port de console" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Port du serveur de console" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Port avant" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "prise de courant" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Article d'inventaire" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Rôle de l'article d'inventaire" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "IPv4 principal" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "IPv6 principal" @@ -4698,7 +5068,7 @@ msgstr "" "Le nombre de ports frontaux à créer ({frontport_count}) doit correspondre au" " nombre sélectionné de positions des ports arrière ({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4724,7 +5094,7 @@ msgstr "Une position doit être spécifiée pour le premier membre du VC." #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "étiquette" @@ -4858,137 +5228,137 @@ msgstr "" "Un modèle de composant doit être associé à un type d'appareil ou à un type " "de module." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "modèle de port de console" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "modèles de ports de console" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "modèle de port de serveur de console" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "modèles de ports de serveur de console" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "tirage maximum" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "tirage au sort alloué" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "modèle de port d'alimentation" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "modèles de ports d'alimentation" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" "Le tirage alloué ne peut pas dépasser le tirage maximum ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "patte d'alimentation" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Phase (pour les alimentations triphasées)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "modèle de prise de courant" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "modèles de prises de courant" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Port d'alimentation parent ({power_port}) doit appartenir au même type " "d'appareil" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Port d'alimentation parent ({power_port}) doit appartenir au même type de " "module" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "gestion uniquement" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "interface de pont" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "rôle sans fil" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "modèle d'interface" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "modèles d'interface" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Une interface ne peut pas être reliée à elle-même." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Interface de pont ({bridge}) doit appartenir au même type d'appareil" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Interface de pont ({bridge}) doit appartenir au même type de module" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "position du port arrière" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "modèle de port avant" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "modèles de port avant" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Port arrière ({name}) doit appartenir au même type d'appareil" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4997,47 +5367,47 @@ msgstr "" "Position du port arrière non valide ({position}) ; port arrière {name} n'a " "que {count} positions" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "positions" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "modèle de port arrière" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "modèles de port arrière" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "position" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Identifiant à référencer lors du changement de nom des composants installés" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "modèle de baie modulaire" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "modèles de baies de modules" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "modèle de baie pour appareils" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "modèles de baies d'appareils" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5046,21 +5416,21 @@ msgstr "" "Rôle du sous-appareil du type d'appareil ({device_type}) doit être défini " "sur « parent » pour autoriser les baies de périphériques." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "ID de pièce" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Identifiant de pièce attribué par le fabricant" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "modèle d'article d'inventaire" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "modèles d'articles d'inventaire" @@ -5203,27 +5573,27 @@ msgstr "Rempli par la chaîne sélectionnée (si définie)" msgid "transmit power (dBm)" msgstr "puissance de transmission (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "réseaux locaux sans fil" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "VLAN non balisé" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "VLAN étiquetés" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "interface" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "interfaces" @@ -5240,7 +5610,7 @@ msgstr "" "{display_type} les interfaces ne peuvent pas être marquées comme connectées." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Une interface ne peut pas être son propre parent." @@ -5409,34 +5779,40 @@ msgstr "" "Le nombre de positions ne peut pas être inférieur au nombre de ports " "frontaux mappés ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "baie modulaire" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "baies de modules" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "" +"Une baie de modules ne peut pas appartenir à un module qui y est installé." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "baie pour appareils" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "baies pour appareils" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" "Ce type d'appareil ({device_type}) ne prend pas en charge les baies pour " "appareils." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Impossible d'installer un appareil sur lui-même." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5444,59 +5820,60 @@ msgstr "" "Impossible d'installer le périphérique spécifié ; le périphérique est déjà " "installé dans {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "rôle des articles d'inventaire" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "rôles des articles d'inventaire" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "numéro de série" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "étiquette d'actif" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Une étiquette unique utilisée pour identifier cet article" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "découvert" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Cet objet a été découvert automatiquement" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "article d'inventaire" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "articles d'inventaire" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Impossible de s'attribuer le statut de parent." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "L'article d'inventaire parent n'appartient pas au même appareil." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "Impossible de déplacer un article en stock avec des enfants à charge" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "" "Impossible d'attribuer un article d'inventaire à un composant sur un autre " @@ -5511,6 +5888,7 @@ msgid "manufacturers" msgstr "fabricants" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "modèle" @@ -5526,7 +5904,7 @@ msgstr "numéro de pièce" msgid "Discrete part number (optional)" msgstr "Numéro de pièce discret (facultatif)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "hauteur (U)" @@ -5560,7 +5938,8 @@ msgstr "" "pour appareils. Laissez ce champ vide si ce type d'appareil n'est ni un " "parent ni un enfant." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "débit d'air" @@ -5607,152 +5986,152 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Les types d'appareils pour enfants doivent être 0U." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "type de module" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "types de modules" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Des machines virtuelles peuvent être affectées à ce rôle" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "rôle de l'appareil" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "rôles des appareils" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Limitez éventuellement cette plate-forme aux appareils d'un certain " "fabricant" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "plateforme" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "plateformes" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "La fonction de cet appareil" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Numéro de série du châssis attribué par le fabricant" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Un tag unique utilisé pour identifier cet appareil" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "position (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "face de la baie" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "IPv4 principal" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "IPv6 principal" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "IP hors bande" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "Position en VC" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Position virtuelle du châssis" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "Priorité VC" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Priorité d'élection principale du châssis virtuel" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "latitude" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Coordonnées GPS au format décimal (xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "longitude" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Le nom de l'appareil doit être unique par site." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "appareil" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "appareils" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "La baie {rack} n'appartient pas au site {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Emplacement {location} n'appartient pas au site {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "La baie {rack} n'appartient pas au lieu {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "" "Impossible de sélectionner la face de baie sans d'abord attribuer une baie." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "" "Impossible de sélectionner une position en baie sans l'attribuer en premier " "dans une baie." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "La position doit être exprimée par incréments de 0,5 unité de baie." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" "Doit spécifier la face de la baie lors de la définition de la position en " "baie." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -5760,7 +6139,7 @@ msgstr "" "Un appareil de type 0U ({device_type}) ne peut pas être attribué à une " "position en baie." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5768,7 +6147,7 @@ msgstr "" "Les appareils de type enfant ne peuvent pas être attribués à une face de " "baie. Il s'agit d'un attribut de l'appareil parent." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5776,7 +6155,7 @@ msgstr "" "Les appareils de type enfant ne peuvent pas être affectés à une position en " "baie. Il s'agit d'un attribut de l'appareil parent." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5785,22 +6164,22 @@ msgstr "" "U{position} est déjà occupé ou ne dispose pas de suffisamment d'espace pour " "accueillir ce type d'appareil : {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} n'est pas une adresse IPv4." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "L'adresse IP spécifiée ({ip}) n'est pas attribué à cet appareil." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} n'est pas une adresse IPv6." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5810,25 +6189,25 @@ msgstr "" "d'appareils, mais le type de cet appareil appartient à " "{devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Le cluster attribué appartient à un autre site ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "La position d'un appareil affecté à un châssis virtuel doit être définie." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "module" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "modules" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5837,22 +6216,22 @@ msgstr "" "Le module doit être installé dans une baie de modules appartenant au " "périphérique attribué ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "domaine" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "châssis virtuel" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "Le master sélectionné ({master}) n'est pas attribué à ce châssis virtuel." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5861,41 +6240,41 @@ msgstr "" "Impossible de supprimer le châssis virtuel {self}. Il existe des interfaces " "membres qui forment des interfaces LAG inter-châssis." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identificateur" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Identifiant numérique propre à l'appareil parent" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "commentaires" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "contexte du périphérique virtuel" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "contextes de périphériques virtuels" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} n'est pas un IPV{family} adresse." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "L'adresse IP principale doit appartenir à une interface sur l'appareil " "attribué." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "poids" @@ -5975,94 +6354,59 @@ msgstr "" "La tension ne peut pas être négative pour l'alimentation en courant " "alternatif" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "rôle de la baie" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "rôles de la baie" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "ID de l'établissement" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Identifiant attribué localement" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Rôle fonctionnel" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Une étiquette unique utilisée pour identifier cette baie" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "largeur" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Largeur rail à rail" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Hauteur en U de la baie" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "unité de départ" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Unité de départ pour baie" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "unités décroissantes" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Les unités sont numérotées de haut en bas" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "largeur extérieure" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Dimension extérieure de la baie (largeur)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "profondeur extérieure" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Dimension extérieure de la baie (profondeur)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "unité extérieure" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "poids maximum" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Capacité de charge maximale de la baie" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "profondeur de montage" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6070,29 +6414,76 @@ msgstr "" "Profondeur maximale d'un appareil monté, en millimètres. Pour les supports à" " quatre montants, il s'agit de la distance entre les rails avant et arrière." -#: netbox/dcim/models/racks.py:221 -msgid "rack" -msgstr "baie" +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "poids maximum" -#: netbox/dcim/models/racks.py:222 -msgid "racks" -msgstr "baies" +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Capacité de charge maximale de la baie" -#: netbox/dcim/models/racks.py:237 -#, python-brace-format -msgid "Assigned location must belong to parent site ({site})." -msgstr "L'emplacement attribué doit appartenir au site parent ({site})." +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "facteur de forme" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "type de rack" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "types de rayonnages" -#: netbox/dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" "Doit spécifier une unité lors du réglage d'une largeur/profondeur extérieure" -#: netbox/dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "Doit spécifier une unité lors de la définition d'un poids maximum" -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "rôle de la baie" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "rôles de la baie" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "ID de l'établissement" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Identifiant attribué localement" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Rôle fonctionnel" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Une étiquette unique utilisée pour identifier cette baie" + +#: netbox/dcim/models/racks.py:359 +msgid "rack" +msgstr "baie" + +#: netbox/dcim/models/racks.py:360 +msgid "racks" +msgstr "baies" + +#: netbox/dcim/models/racks.py:375 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "L'emplacement attribué doit appartenir au site parent ({site})." + +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6101,7 +6492,7 @@ msgstr "" "La baie doit être au moins {min_height} pour héberger les appareils " "actuellement installés." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6110,29 +6501,29 @@ msgstr "" "La numérotation des unités de baie doit commencer à {position} ou moins pour" " héberger les appareils actuellement installés." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "L'emplacement doit provenir du même site, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "des unités" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "réservation de baie" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "réservations de baies" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Unité(s) non valide(s) pour une baie à {height}U : {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Les unités suivantes ont déjà été réservées : {unit_list}" @@ -6236,11 +6627,11 @@ msgstr "Terminaison A" msgid "Termination B" msgstr "Terminaison B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Appareil A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Appareil B" @@ -6275,13 +6666,13 @@ msgid "Reachable" msgstr "Joignable" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Appareils" @@ -6291,17 +6682,17 @@ msgid "VMs" msgstr "machines virtuelles" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Modèle de configuration" @@ -6309,22 +6700,22 @@ msgstr "Modèle de configuration" msgid "Site Group" msgstr "Groupe de sites" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "Adresse IP" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "Adresse IPv4" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "Adresse IPv6" @@ -6361,10 +6752,10 @@ msgstr "Ports d'alimentation" msgid "Power outlets" msgstr "Prises de courant" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6374,8 +6765,8 @@ msgstr "Prises de courant" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfaces" @@ -6401,8 +6792,8 @@ msgid "Module Bay" msgstr "Module Bay" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6411,30 +6802,30 @@ msgstr "Module Bay" msgid "Inventory Items" msgstr "Articles d'inventaire" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Couleur du câble" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Lier les pairs" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Marquer comme connecté" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Tirage maximal (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Tirage alloué (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6443,12 +6834,12 @@ msgstr "Tirage alloué (W)" msgid "IP Addresses" msgstr "Adresses IP" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Groupes FHRP" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6459,52 +6850,52 @@ msgstr "Groupes FHRP" msgid "Tunnel" msgstr "Tunnel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Gestion uniquement" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Module installé" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Série du module" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Étiquette d'actif du module" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "État du module" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Composant" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Objets" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Types d'appareils" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Types de modules" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Plateformes" @@ -6523,12 +6914,13 @@ msgid "U Height" msgstr "Hauteur en U" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Instances" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6537,9 +6929,9 @@ msgstr "Instances" msgid "Console Ports" msgstr "Ports de console" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6548,9 +6940,9 @@ msgstr "Ports de console" msgid "Console Server Ports" msgstr "Ports du serveur de consoles" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6559,9 +6951,9 @@ msgstr "Ports du serveur de consoles" msgid "Power Ports" msgstr "Ports d'alimentation" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6570,9 +6962,9 @@ msgstr "Ports d'alimentation" msgid "Power Outlets" msgstr "Prises de courant" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6580,9 +6972,9 @@ msgstr "Prises de courant" msgid "Front Ports" msgstr "Ports avant" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6591,23 +6983,26 @@ msgstr "Ports avant" msgid "Rear Ports" msgstr "Ports arrière" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Baies pour appareils" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Baies pour modules" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Alimentations" @@ -6620,41 +7015,45 @@ msgstr "Utilisation maximale" msgid "Available Power (VA)" msgstr "Puissance disponible (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Baies" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Hauteur" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Espace" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Largeur extérieure" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Profondeur extérieure" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Poids maximum" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Espace" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Sites" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "Le scénario de test doit définir peer_termination_type" @@ -6663,80 +7062,80 @@ msgstr "Le scénario de test doit définir peer_termination_type" msgid "Disconnected {count} {type}" msgstr "Déconnecté {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Réservations" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Appareils non rackés" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Contexte de configuration" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Configuration du rendu" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Une erreur s'est produite lors du rendu du modèle : {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Machines virtuelles" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Appareil installé {device} dans la baie {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Appareil retiré {device} depuis la baie {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Enfants" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Membre ajouté {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Impossible de supprimer le périphérique principal {device} depuis le châssis" " virtuel." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Supprimé {device} depuis un châssis virtuel {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Objet associé inconnu: {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "" "La modification du type de champs personnalisés n'est pas prise en charge." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "La planification n'est pas activée pour ce script." @@ -6785,7 +7184,7 @@ msgid "Multiple objects" msgstr "Objets multiples" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Désactivé" @@ -6820,7 +7219,7 @@ msgstr "Non" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Lien" @@ -6840,65 +7239,56 @@ msgstr "Alphabétique (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Alphabétique (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Mis à jour" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Supprimé" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Infos" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Succès" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Avertissement" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Danger" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Déboguer" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Par défaut" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Défaillance" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Toutes les heures" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 heures" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Tous les jours" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Hebdo" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 jours" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6906,18 +7296,16 @@ msgstr "30 jours" msgid "Create" msgstr "Créez" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Mise à jour" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6928,81 +7316,85 @@ msgstr "Mise à jour" msgid "Delete" msgstr "Supprimer" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Bleu" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Indigo" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Violet" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Rose" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Rouge" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "Orange" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Jaune" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Vert" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Sarcelle" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Cyan" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Gris" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Noir" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Blanc" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Scénario" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Notification" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7078,61 +7470,61 @@ msgstr "" "Format non valide. Les filtres d'objets doivent être transmis sous forme de " "dictionnaire." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Liste d'objets" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Afficher une liste arbitraire d'objets." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Le nombre d'objets à afficher par défaut" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" "Format non valide. Les paramètres d'URL doivent être transmis sous forme de " "dictionnaire." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "Fil RSS" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Intégrez un flux RSS provenant d'un site Web externe." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "URL du flux" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Le nombre maximum d'objets à afficher" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Durée de conservation du contenu mis en cache (en secondes)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Signets" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Afficher vos favoris personnels" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Type d'action inconnu pour une règle d'événement : {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "" @@ -7142,210 +7534,219 @@ msgstr "" msgid "Script module (ID)" msgstr "Module de script (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Fichier de données (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Groupe (nom)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Type de cluster" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Type de cluster (slug)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Groupe de locataires" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Groupe de locataires (slug)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Balise" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Tag (slug)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Possède des données contextuelles de configuration locales" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Nom d'utilisateur" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Nom du groupe" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Obligatoire" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Doit être unique" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "Interface utilisateur visible" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "Interface utilisateur modifiable" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Est cloneable" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Valeur minimale" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Valeur maximale" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Regex de validation" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Comportement" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Nouvelle fenêtre" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Classe de boutons" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "Type MIME" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Extension de fichier" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "En pièce jointe" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Partagé" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "Méthode HTTP" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "URL de charge utile" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "Vérification SSL" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Secret" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "chemin du fichier CA" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Lors de la création" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "Sur mise à jour" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Lors de la suppression" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Types d'événements" -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "Au début du travail" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "En fin de travail" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Est actif" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Types d'objets" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Un ou plusieurs types d'objets attribués" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Type de données de champ (par exemple texte, entier, etc.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Type d'objet" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Type d'objet (pour les champs d'objets ou multi-objets)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Coffret Choice" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Set de choix (pour les champs de sélection)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Si le champ personnalisé est affiché dans l'interface utilisateur" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Si le champ personnalisé est modifiable dans l'interface utilisateur" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "L'ensemble de base de choix prédéfinis à utiliser (le cas échéant)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7354,206 +7755,202 @@ msgstr "" "virgules avec des libellés facultatifs séparés par deux points : " "« Choice1:First Choice, Choice2:Second Choice »" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "classe de boutons" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "La classe du premier lien d'un groupe sera utilisée pour le bouton déroulant" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Le ou les types d'événements qui déclencheront cette règle" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Objet d'action" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Nom du webhook ou script sous forme de chemin pointillé module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} introuvable" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Scénario {name} introuvable" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Type d'objet attribué" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "La classification de l'entrée" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Utilisateurs" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "" +"Noms d'utilisateur séparés par des virgules, encadrés par des guillemets" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Groupes" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Noms de groupes séparés par des virgules, entre guillemets doubles" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Type d'objet associé" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Type de champ" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Choix" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Données" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Fichier de données" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Types de contenu" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "Type de contenu HTTP" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Évènements" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "Type d'événement" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "Type d'action" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Créations d'objets" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "mises à jour des objets" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Suppressions d'objets" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Début du travail" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Tâches arrêtées" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Type d'objet balisé" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Type d'objet autorisé" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Régions" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Groupes de sites" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Localisations" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Types d'appareils" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Rôles" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Types de clusters" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Groupes de clusters" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Clusters" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Groupes de locataires" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Après" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Avant" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Heure" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Le ou les types d'objets dotés de ce champ personnalisé" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Action" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Valeur par défaut" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "" "Type de l'objet associé (pour les champs objet/multi-objets uniquement)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Filtre d'objets associés" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Spécifiez les paramètres de requête sous la forme d'un objet JSON." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Champ personnalisé" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Comportement" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Valeurs" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7561,7 +7958,7 @@ msgstr "" "Le type de données stockées dans ce champ. Pour les champs objet/multi-" "objets, sélectionnez le type d'objet associé ci-dessous." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7569,7 +7966,11 @@ msgstr "" "Cela sera affiché sous forme de texte d'aide pour le champ du formulaire. " "Markdown est pris en charge." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Objet associé" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7577,16 +7978,16 @@ msgstr "" "Entrez un choix par ligne. Une étiquette facultative peut être spécifiée " "pour chaque choix en l'ajoutant par deux points. Exemple :" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Lien personnalisé" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Modèles" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7596,63 +7997,68 @@ msgstr "" "{example}. Les liens qui s'affichent sous forme de texte vide ne seront pas " "affichés." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "" "Code modèle Jinja2 pour l'URL du lien. Référencez l'objet comme {example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Code du modèle" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Modèle d'exportation" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Rendu" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "Le contenu du modèle est renseigné à partir de la source distante " "sélectionnée ci-dessous." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Doit spécifier un contenu local ou un fichier de données" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Filtre enregistré" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "" +"Un groupe de notifications spécifie au moins un utilisateur ou un groupe." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "Requête HTTP" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SLL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Choix de l'action" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Entrez les conditions dans JSON format." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7660,57 +8066,35 @@ msgstr "" "Entrez les paramètres à transmettre à l'action dans JSON format." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Règle de l'événement" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Les conditions" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Créations" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "mises à jour" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "éléments déclencheurs" -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Suppressions" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Groupe de notifications" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Exécutions de tâches" - -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Locataires" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Affectation" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "" "Les données sont renseignées à partir de la source distante sélectionnée ci-" "dessous." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Doit spécifier des données locales ou un fichier de données" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Contenu" @@ -7758,49 +8142,29 @@ msgstr "Planifier l'exécution du script à une heure définie" msgid "Interval at which this script is re-run (in minutes)" msgstr "Intervalle auquel ce script est réexécuté (en minutes)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Aucun indexeur n'a été trouvé !" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "temps" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "nom d'utilisateur" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "ID de demande" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "action" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "données de pré-modification" - -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "données après modification" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "" +"Les modifications apportées à la base de données ont été annulées " +"automatiquement." -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "changement d'objet" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Le script a été abandonné avec une erreur : " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "modifications d'objets" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Une exception s'est produite : " -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." msgstr "" -"La journalisation des modifications n'est pas prise en charge pour ce type " -"d'objet ({type})." +"Les modifications apportées à la base de données ont été annulées en raison " +"d'une erreur." + +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Aucun indexeur n'a été trouvé !" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7853,36 +8217,36 @@ msgstr "modèle de configuration" msgid "config templates" msgstr "modèles de configuration" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Le ou les objets auxquels ce champ s'applique." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Le type de données que contient ce champ personnalisé" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "Le type d'objet NetBox auquel ce champ correspond (pour les champs d'objets)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Nom du champ interne" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "" "Seuls les caractères alphanumériques et les traits de soulignement sont " "autorisés." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "Les doubles soulignements ne sont pas autorisés dans les noms de champs " "personnalisés." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7890,31 +8254,39 @@ msgstr "" "Nom du champ tel qu'il est affiché aux utilisateurs (s'il n'est pas fourni, " "« le nom du champ sera utilisé) »" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "nom du groupe" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Les champs personnalisés d'un même groupe seront affichés ensemble" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "requis" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Si c'est vrai, ce champ est obligatoire lors de la création de nouveaux " -"objets ou de la modification d'un objet existant." +"Ce champ est obligatoire lors de la création de nouveaux objets ou de la " +"modification d'un objet existant." -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "doit être unique" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "La valeur de ce champ doit être unique pour l'objet attribué" + +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "poids de recherche" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7923,11 +8295,11 @@ msgstr "" "comme plus importantes. Les champs dont le poids de recherche est nul seront" " ignorés." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "logique de filtrage" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7935,11 +8307,11 @@ msgstr "" "Loose correspond à n'importe quelle instance d'une chaîne donnée ; " "correspond exactement à l'ensemble du champ." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "défaut" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7947,37 +8319,46 @@ msgstr "" "Valeur par défaut pour le champ (doit être une valeur JSON). Encapsulez des " "chaînes avec des guillemets doubles (par exemple, « Foo »)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filtrez les choix de sélection d'objets à l'aide d'un dict query_params " +"(doit être une valeur JSON). Encapsulez les chaînes avec des guillemets " +"doubles (par exemple « Foo »)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "poids de l'écran" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "" "Les champs dont le poids est plus élevé apparaissent plus bas dans un " "formulaire." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "valeur minimale" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Valeur minimale autorisée (pour les champs numériques)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "valeur maximale" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Valeur maximale autorisée (pour les champs numériques)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "regex de validation" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7989,281 +8370,252 @@ msgstr "" "exemple, ^ [DE A À Z]{3}$ limitera les valeurs à exactement " "trois lettres majuscules." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "set de choix" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Indique si le champ personnalisé est affiché dans l'interface utilisateur" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Indique si la valeur du champ personnalisé peut être modifiée dans " "l'interface utilisateur" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "est clonable" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Répliquez cette valeur lors du clonage d'objets" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "champ personnalisé" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "champs personnalisés" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Valeur par défaut non valide »{value}« : {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "" "Une valeur minimale ne peut être définie que pour les champs numériques" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "" "Une valeur maximale ne peut être définie que pour les champs numériques" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "La validation des expressions régulières est prise en charge uniquement pour" " les champs de texte et d'URL" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "L'unicité ne peut pas être appliquée aux champs booléens" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Les champs de sélection doivent spécifier un ensemble de choix." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Les choix ne peuvent être définis que sur les champs de sélection." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Les champs d'objet doivent définir un type d'objet." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} les champs ne peuvent pas définir de type d'objet." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "" +"Un filtre d'objet associé ne peut être défini que pour les champs d'objets." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Le filtre doit être défini comme un dictionnaire faisant correspondre les " +"attributs aux valeurs." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Vrai" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Faux" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" "Les valeurs doivent correspondre à cette expression régulière : " "{regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "La valeur doit être une chaîne." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "La valeur doit correspondre à « regex »{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "La valeur doit être un entier." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "La valeur doit être d'au moins {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "La valeur ne doit pas dépasser {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "La valeur doit être une décimale." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "La valeur doit être vraie ou fausse." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Les valeurs de date doivent être au format ISO 8601 (AAAA-MM-JJ)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Les valeurs de date et d'heure doivent être au format ISO 8601 (YYYY-MM-DD " "HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Choix non valide ({value}) pour le set de choix {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Choix (s) non valide ({value}) pour le set de choix {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "La valeur doit être un identifiant d'objet, et non {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "La valeur doit être une liste d'identifiants d'objets, et non {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "ID d'objet non valide trouvé : {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Le champ obligatoire ne peut pas être vide." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Ensemble de base de choix prédéfinis (facultatif)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Les choix sont automatiquement classés par ordre alphabétique" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "ensemble de choix de champs personnalisés" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "ensembles de choix de champs personnalisés" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Doit définir des choix de base ou supplémentaires." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "disposition" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "config" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "tableau de bord" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "tableaux de bord" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "types d'objets" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Le ou les objets auxquels cette règle s'applique." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "lors de la création" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Se déclenche lorsqu'un objet correspondant est créé." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "sur mise à jour" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Se déclenche lorsqu'un objet correspondant est mis à jour." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "lors de la suppression" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Se déclenche lorsqu'un objet correspondant est supprimé." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "au début de la tâche" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Se déclenche lorsqu'une tâche est lancée pour un objet correspondant." +msgid "The types of event which will trigger this rule." +msgstr "Les types d'événements qui déclencheront cette règle." -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "en fin de travail" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Se déclenche lorsqu'une tâche pour un objet correspondant se termine." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "conditions" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Un ensemble de conditions qui déterminent si l'événement sera généré." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "type d'action" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Données supplémentaires à transmettre à l'objet d'action" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "règle de l'événement" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "règles de l'événement" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Au moins un type d'événement doit être sélectionné : création, mise à jour, " -"suppression, début et/ou fin de tâche." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8273,7 +8625,7 @@ msgstr "" "du webhook. Le traitement du modèle Jinja2 est pris en charge dans le même " "contexte que le corps de la requête." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available ici." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "en-têtes supplémentaires" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8299,11 +8651,11 @@ msgstr "" "Nom : Value. Le traitement du modèle Jinja2 est pris en charge " "dans le même contexte que le corps de la requête (ci-dessous)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "modèle de carrosserie" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8317,11 +8669,11 @@ msgstr "" "d'utilisateur, identifiant_demande, et " "données." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "secret" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8332,16 +8684,16 @@ msgstr "" "charge utile en utilisant le secret comme clé. Le secret n'est pas transmis " "dans la demande." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" "Activez la vérification des certificats SSL. Désactivez avec précaution !" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "Chemin du fichier CA" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8349,65 +8701,65 @@ msgstr "" "Le fichier de certificat CA spécifique à utiliser pour la vérification SSL. " "Laissez ce champ vide pour utiliser les paramètres par défaut du système." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "webhook" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "webhooks" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "Ne spécifiez pas de fichier de certificat CA si la vérification SSL est " "désactivée." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Le ou les types d'objets auxquels ce lien s'applique." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "texte du lien" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Code modèle Jinja2 pour le texte du lien" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL du lien" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Code modèle Jinja2 pour l'URL du lien" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Les liens avec le même groupe apparaîtront dans un menu déroulant" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "nouvelle fenêtre" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Forcer l'ouverture du lien dans une nouvelle fenêtre" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "lien personnalisé" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "liens personnalisés" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Le ou les types d'objets auxquels ce modèle s'applique." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8415,117 +8767,165 @@ msgstr "" "Code du modèle Jinja2. La liste des objets exportés est transmise sous forme" " de variable de contexte nommée ensemble de requêtes." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "" "La valeur par défaut est texte/plain ; jeu de caractères = " "utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "extension de fichier" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Extension à ajouter au nom de fichier affiché" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "en pièce jointe" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Télécharger le fichier en pièce jointe" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "modèle d'exportation" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "modèles d'exportation" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "«{name}« est un nom réservé. Veuillez choisir un autre nom." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Le ou les types d'objets auxquels ce filtre s'applique." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "partagé" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "filtre enregistré" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "filtres enregistrés" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Les paramètres de filtre doivent être stockés sous la forme d'un " "dictionnaire d'arguments de mots-clés." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "hauteur de l'image" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "largeur de l'image" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "image en pièce jointe" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "images jointes" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" "Les images jointes ne peuvent pas être attribuées à ce type d'objet " "({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "sorte" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "entrée de journal" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "entrées de journal" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "" "La journalisation n'est pas prise en charge pour ce type d'objet ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "signet" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "signets" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "Les signets ne peuvent pas être affectés à ce type d'objet ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "lire" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "événement" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "notification" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "notifications" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "" +"Les objets de ce type ({type}) ne prennent pas en charge les notifications." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "groupes" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "utilisateurs" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "groupe de notifications" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "groupes de notifications" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "abonnement" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "abonnements" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "est exécutable" @@ -8566,19 +8966,19 @@ msgstr "valeur mise en cache" msgid "cached values" msgstr "valeurs mises en cache" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "succursale" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "branches" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "changement par étapes" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "modifications échelonnées" @@ -8602,89 +9002,87 @@ msgstr "article étiqueté" msgid "tagged items" msgstr "articles étiquetés" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Données de script" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Paramètres d'exécution du script" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "" -"Les modifications apportées à la base de données ont été annulées " -"automatiquement." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Le script a été abandonné avec une erreur : " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Une exception s'est produite : " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "" -"Les modifications apportées à la base de données ont été annulées en raison " -"d'une erreur." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "La suppression est empêchée par une règle de protection : {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Rejeter" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Types d'objets" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Valider le caractère" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Visible" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Modifiable" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Type d'objet associé" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Coffret Choice" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Est clonable" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Valeur minimale" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Valeur maximale" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Regex de validation" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Compter" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Ordre alphabétique" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Nouvelle fenêtre" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "En tant que pièce jointe" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8694,63 +9092,54 @@ msgstr "En tant que pièce jointe" msgid "Data File" msgstr "Fichier de données" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Synchronisé" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Image" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Taille (octets)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Lisez" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "Validation SSL" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Début du travail" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Fin du travail" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Types d'événements" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Rôles des appareils" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Nom complet" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "ID de demande" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Commentaires (courts)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Ligne" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Niveau" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Message" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Méthode" @@ -8782,37 +9171,37 @@ msgstr "" msgid "Custom validation failed for {attribute}: {exception}" msgstr "La validation personnalisée a échoué pour {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Attribut non valide »{name}« pour demande" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Attribut non valide »{name}« pour {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Votre tableau de bord a été réinitialisé." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Widget ajouté : " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Widget mis à jour : " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Widget supprimé : " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Erreur lors de la suppression du widget : " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "" "Impossible d'exécuter le script : le processus de travail RQ n'est pas en " @@ -8859,10 +9248,6 @@ msgstr "SLAAC" msgid "Loopback" msgstr "Bouclage" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Secondaire" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8888,19 +9273,19 @@ msgstr "Texte brut" msgid "Invalid IP address format: {address}" msgstr "Format d'adresse IP non valide : {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Objectif d'importation" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Cible d'importation (nom)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Objectif d'exportation" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Cible d'exportation (nom)" @@ -8965,16 +9350,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Préfixes contenant ce préfixe ou cette adresse IP" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Longueur du masque" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (IDENTIFIANT)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "Numéro de VLAN (1-4094)" @@ -8994,23 +9379,23 @@ msgid "Parent prefix" msgstr "Préfixe parent" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Machine virtuelle (nom)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Machine virtuelle (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Interface (nom)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "Interface de machine virtuelle (nom)" @@ -9038,19 +9423,19 @@ msgstr "Service (ID)" msgid "NAT inside IP address (ID)" msgstr "Adresse IP intérieure NAT (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "Adresse IP (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "Adresse IP" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "IPv4 principal (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "IPv6 principal (ID)" @@ -9083,17 +9468,17 @@ msgstr "Un masque CIDR (par exemple /24) est requis." msgid "Address pattern" msgstr "Modèle d'adresse" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Forcer l'unicité des préfixes IP" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Est privé" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9106,20 +9491,20 @@ msgstr "Est privé" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Date d'ajout" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Groupe VLAN" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9128,49 +9513,49 @@ msgstr "Groupe VLAN" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Longueur du préfixe" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "C'est une piscine" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Traiter comme s'il avait été pleinement utilisé" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "Attribution de VLAN" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "Nom DNS" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocole" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "ID de groupe" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9182,157 +9567,143 @@ msgstr "ID de groupe" msgid "Authentication type" msgstr "Type d'authentification" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Clé d'authentification" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Authentification" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "VID VLAN minimum pour enfants" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "VID VLAN maximum pour enfants" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Type de portée" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "Plages d'ID VLAN" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Champ" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Site et groupe" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Ports" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Importer des cibles d'itinéraire" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Cibles d'itinéraire d'exportation" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "RIR attribué" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "Le groupe du VLAN (le cas échéant)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Appareil parent auquel est attribuée l'interface (le cas échéant)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Machine virtuelle" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "VM parent de l'interface attribuée (le cas échéant)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Interface attribuée" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Est principal" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Faites-en l'adresse IP principale de l'appareil attribué" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Aucun périphérique ou machine virtuelle spécifié ; impossible de le définir " "comme adresse IP principale" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" "Aucune interface spécifiée ; impossible de définir comme adresse IP " "principale" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Type d'authentification" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Type de scope (application et modèle)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "VID minimum du VLAN enfant (par défaut) : {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "VID VLAN enfant maximal (par défaut) : {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Groupe VLAN attribué" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "Protocole IP" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Obligatoire s'il n'est pas attribué à une machine virtuelle" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Obligatoire s'il n'est pas attribué à un appareil" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} n'est pas attribué à cet appareil/à cette machine virtuelle." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Cibles de l'itinéraire" @@ -9408,31 +9779,34 @@ msgstr "Affecté à une interface" msgid "DNS Name" msgstr "Nom DNS" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "IDENTIFIANT DE VLAN" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "VID minimum" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Contient un ID de VLAN" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "VID maximum" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "IDENTIFIANT DE VLAN" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9504,11 +9878,16 @@ msgstr "Adresse IP virtuelle" msgid "Assignment already exists" msgstr "L'affectation existe déjà" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "ID de VLAN" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "VLAN pour enfants" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9516,33 +9895,33 @@ msgstr "" "Liste séparée par des virgules d'un ou de plusieurs numéros de port. Une " "plage peut être spécifiée à l'aide d'un trait d'union." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Modèle de service" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Port (x)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Service" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Modèle de service" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "À partir du modèle" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Personnalisé" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9583,7 +9962,7 @@ msgstr "ID de groupe" msgid "protocol" msgstr "protocole" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "type d'authentification" @@ -9599,10 +9978,6 @@ msgstr "Groupe FHRP" msgid "FHRP groups" msgstr "Groupes FHRP" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "priorité" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "Affectation au groupe FHRP" @@ -9619,7 +9994,7 @@ msgstr "privé" msgid "IP space managed by this RIR is considered private" msgstr "L'espace IP géré par ce RIR est considéré comme privé" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "IR" @@ -9880,22 +10255,6 @@ msgid "" msgstr "" "Un service doit être associé à un appareil ou à une machine virtuelle." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "ID de VLAN minimal" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "ID le plus bas autorisé d'un VLAN enfant" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "ID VLAN maximal" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "ID le plus élevé autorisé d'un VLAN enfant" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "groupes VLAN" @@ -9908,39 +10267,40 @@ msgstr "Impossible de définir scope_type sans scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Impossible de définir scope_id sans scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Les plages ne peuvent pas se chevaucher." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" "La VID maximale pour les enfants doit être supérieure ou égale à la VID " -"minimale pour les enfants" +"minimale pour les enfants ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "Le site spécifique auquel ce VLAN est associé (le cas échéant)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "Groupe VLAN (facultatif)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "ID VLAN numérique (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "État opérationnel de ce VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "La principale fonction de ce VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9949,12 +10309,12 @@ msgstr "" "Le VLAN est associé au groupe {group} (champ d'application : {scope}) ; ne " "peut pas également être associé au site {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" msgstr "" -"Le VID doit être compris entre {minimum} et {maximum} pour les VLAN du " -"groupe {group}" +"Le VID doit être compris dans des plages {ranges} pour les VLAN en groupe " +"{group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9972,8 +10332,8 @@ msgstr "renforcer un espace unique" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Empêchez les préfixes/adresses IP dupliqués dans ce VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF" @@ -10001,8 +10361,8 @@ msgstr "Nombre de sites" msgid "Provider Count" msgstr "Nombre de fournisseurs" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Agrégats" @@ -10011,21 +10371,21 @@ msgid "Added" msgstr "Ajouté" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Préfixes" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Utilisation" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "Plages d'adresses IP" @@ -10070,7 +10430,11 @@ msgstr "Objet attribué" msgid "Scope Type" msgstr "Type de portée" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "Gammes VID" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VID" @@ -10136,11 +10500,11 @@ msgstr "Interfaces des appareils" msgid "VM Interfaces" msgstr "Interfaces de machines virtuelles" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Ce champ n'est peut-être pas vide." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10148,23 +10512,39 @@ msgstr "" "La valeur doit être transmise directement (par exemple « foo » : 123) ; " "n'utilisez pas de dictionnaire ni de liste." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} n'est pas un choix valable." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Type de contenu non valide : {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Valeur non valide. Spécifiez un type de contenu comme " "«.'." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "" +"Les plages doivent être spécifiées dans le formulaire (inférieur, " +"supérieur)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "" +"Les limites des plages doivent être définies sous forme de nombres entiers." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} doit implémenter get_view_name ()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Autorisation non valide {permission} pour modèle {model}" @@ -10496,51 +10876,56 @@ msgstr "Supprimer les tags" msgid "{class_name} must specify a model class." msgstr "{class_name} doit spécifier une classe de modèle." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "" "Nom de champ inconnu '{name}'dans les données de champs personnalisés." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Valeur non valide pour le champ personnalisé '{name}« : {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Champ personnalisé '{name}'doit avoir une valeur unique." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Champ personnalisé obligatoire manquant '{name}'." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Source de données distante" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "chemin de données" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "" "Chemin vers le fichier distant (par rapport à la racine de la source de " "données)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "synchronisation automatique activée" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Activer la synchronisation automatique des données lors de la mise à jour du" " fichier de données" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "date de synchronisation" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} doit implémenter une méthode sync_data ()." @@ -10554,217 +10939,230 @@ msgid "Site Groups" msgstr "Groupes de sites" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Rôles des baies" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Élévations" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Groupes de locataires" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Groupes de contacts" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Rôles de contact" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Associer des contacts" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Rôles des baies" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Élévations" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Types de rayonnages" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Modules" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Contextes des appareils virtuels" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Fabricants" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Composants de l'appareil" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Rôles des articles d'inventaire" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Connexions" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Câbles" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Liaisons sans fil" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Connexions d'interface" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Connexions à la console" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Connexions électriques" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Groupes réseaux sans fil" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Préfixes et rôles VLAN" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "Plages ASN" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "Groupes VLAN" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Modèles de services" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Des services" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Tunnels" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Groupes de tunnels" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Terminaisons de tunnels" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "VPN L2" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Terminaisons" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "Propositions IKE" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "Politiques IKE" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "Propositions IPSec" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "Politiques IPSec" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "Profils IPSec" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Virtualisation" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Disques virtuels" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Types de clusters" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Groupes de clusters" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Types de circuits" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Groupes de circuits" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Devoirs de groupe" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Terminaisons de circuits" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Prestataires" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Comptes des fournisseurs" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Réseaux de fournisseurs" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Panneaux d'alimentation" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Configurations" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Contextes de configuration" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Modèles de configuration" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Personnalisation" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10777,114 +11175,108 @@ msgstr "Personnalisation" msgid "Custom Fields" msgstr "Champs personnalisés" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Choix de champs personnalisés" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Liens personnalisés" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Modèles d'exportation" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Filtres enregistrés" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Pièces jointes à des images" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Opérations" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Intégrations" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Sources de données" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Règles de l'événement" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhooks" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Emplois" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Journalisation" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Groupes de notifications" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Entrées de journal" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" -msgstr "Journal des modifications" - -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 -msgid "Admin" -msgstr "Administrateur" - -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Utilisateurs" +msgstr "Journal des modifications" -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Groupes" +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 +msgid "Admin" +msgstr "Administrateur" -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "Jetons d'API" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Autorisations" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Système" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Plug-ins" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Historique de configuration" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Tâches d'arrière-plan" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Plug-ins" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10917,31 +11309,22 @@ msgstr "" "{template_extension} n'est pas une sous-classe de " "Netbox.Plugins.PluginTemplateExtension !" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"Classe PluginTemplateExtension {template_extension} ne définit pas de modèle" -" valide !" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} doit être une instance de Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} doit être une instance de Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} doit être une instance de Netbox.Plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context doit être un dictionnaire" @@ -11022,75 +11405,79 @@ msgstr "Impossible d'ajouter des magasins au registre après l'initialisation" msgid "Cannot delete stores from registry" msgstr "Impossible de supprimer des magasins du registre" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "tchèque" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "danois" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "allemand" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Anglais" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "espagnol" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "français" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "italien" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "japonais" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "néerlandais" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "polonais" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "portugais" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "russe" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Turc" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "Ukrainien" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "chinois" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Tout sélectionner" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Tout afficher" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Basculer vers le menu déroulant" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Erreur" @@ -11143,26 +11530,26 @@ msgstr "Renommé {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Supprimé {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Journal des modifications" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "Journal" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "" "Impossible de synchroniser les données : aucun fichier de données n'est " "défini." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Données synchronisées pour {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Synchronisé {count} {object_type}" @@ -11172,7 +11559,7 @@ msgstr "Synchronisé {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} doit implémenter get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11210,11 +11597,11 @@ msgstr "" msgid "The complete exception is provided below" msgstr "L'exception complète est fournie ci-dessous" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Version Python" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "Version NetBox" @@ -11239,14 +11626,26 @@ msgstr "sur GitHub" msgid "Home Page" msgstr "Page d'accueil" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Profil" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Notifications" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Abonnements" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Préférences" @@ -11254,7 +11653,7 @@ msgstr "Préférences" msgid "Change Password" msgstr "Modifier le mot de passe" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11279,7 +11678,7 @@ msgstr "Modifier le mot de passe" msgid "Cancel" msgstr "Annuler" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11353,7 +11752,7 @@ msgid "Superuser" msgstr "Superutilisateur" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Le personnel" @@ -11368,19 +11767,19 @@ msgstr "Groupes associés" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11401,7 +11800,7 @@ msgstr "Mes jetons d'API" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Jeton" @@ -11422,32 +11821,41 @@ msgstr "Ajouter un jeton" msgid "Home" msgstr "Accueil" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "Motif NetBox" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "Logo NetBox" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Docs" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "API REST" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "Documentation de l'API REST" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "API GraphQL" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Assistance NetBox Labs" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Code source" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Communauté" @@ -11459,6 +11867,11 @@ msgstr "Date d'installation" msgid "Termination Date" msgstr "Date de résiliation" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Associer un groupe" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Échanger les terminaisons du circuit" @@ -11476,6 +11889,14 @@ msgstr "Coté A" msgid "Z side" msgstr "Côté Z" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Attribuer un circuit" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Affectation de groupes de circuits" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Ajouter un circuit" @@ -11500,7 +11921,7 @@ msgstr "Ajouter" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11621,13 +12042,10 @@ msgstr "Nouvelle valeur" msgid "Changed" msgstr "Modifié" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Dernière mise à jour" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Taille" @@ -11709,25 +12127,120 @@ msgstr "Préférences de l'utilisateur" msgid "Job retention" msgstr "Maintien de l'emploi" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Emploi" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Créé par" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Planification" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "chaque %(interval)s minutes" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Changer" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Différence" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Précédent" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Suivant" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Objet créé" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Objet supprimé" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Aucune modification" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Données avant modification" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Attention : modification non-atomique vis à vis de la modification " +"précédente" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Données après modification" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Voir toutes les %(count)s modifications" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Modifier la durée de conservation des logs" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "jours" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Indéfini" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Non installé" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Vue d'ensemble" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Installer" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Détails du plugin" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Résumé" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Licence" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Historique des versions" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Instructions d'installation locales" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11739,8 +12252,8 @@ msgstr "Files d'attente en arrière-plan" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11799,7 +12312,7 @@ msgid "Queued Jobs" msgstr "Jobs en file d'attente" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11859,39 +12372,43 @@ msgstr "Exporter" msgid "System Status" msgstr "État du système" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "Version de NetBox" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Version de Django" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "Version de PostgreSQL" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Nom de base de données" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Taille de base de données" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Non disponible" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "Travailleurs de RQ" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "file d'attente par défaut" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Heure du système" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Configuration actuelle" @@ -11990,14 +12507,15 @@ msgstr "Pas mis en baie" msgid "GPS Coordinates" msgstr "Coordonnées GPS" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Cartographiez-le" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Carte" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Étiquette d'actif" @@ -12017,19 +12535,19 @@ msgstr "Gestion" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT pour" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NAT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Utilisation de l'énergie" @@ -12057,7 +12575,7 @@ msgid "Leg" msgstr "Jambe" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Ajouter un service" @@ -12318,6 +12836,22 @@ msgstr "Effacer" msgid "Clear All" msgstr "Tout effacer" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Profondeur de montage" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "U initial" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Unités décroissantes" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Élévation du rack" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Ajouter une interface enfant" @@ -12380,8 +12914,8 @@ msgstr "Largeur du canal" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12471,49 +13005,33 @@ msgstr "Consommation maximale" msgid "Allocated Draw" msgstr "Puissance alloué" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Espace utilisé" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "descendant" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "ascendant" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "U initial" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Profondeur de montage" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Poids de la baie" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Poids maximum" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Poids total" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Images et étiquettes" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Images uniquement" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Étiquettes uniquement" @@ -12526,6 +13044,10 @@ msgstr "Ajouter une réservation" msgid "View List" msgstr "Afficher la liste" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Sélectionnez la vue du rack" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Trier par" @@ -12579,10 +13101,6 @@ msgstr "Heure du site" msgid "Physical Address" msgstr "Adresse physique" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Carte" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Adresse de livraison" @@ -12623,7 +13141,7 @@ msgstr "Ajouter un nouveau membre" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Actions" @@ -12796,46 +13314,42 @@ msgid "Group Name" msgstr "Nom du groupe" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Doit être unique" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Clonable" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Valeur par défaut" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Poids de recherche" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Logique de recherche du filtre" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Poids de l'écran" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Interface utilisateur visible" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Interface utilisateur modifiable" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Règles de validation" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Valeur minimale" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Valeur maximale" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Expression rationnelle" @@ -12849,11 +13363,11 @@ msgstr "Classe de boutons" msgid "Assigned Models" msgstr "Modèles associés" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Texte du lien" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "URL du lien" @@ -12878,6 +13392,14 @@ msgstr "" "Ce changement concerne uniquement votre tableau de bord, et n'aura " "aucun impact sur les autres utilisateurs." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "configuration du widget" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Fermer le widget" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Ajouter un widget" @@ -12910,13 +13432,9 @@ msgstr "Un problème s'est produit lors de la récupération du flux RSS" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Début de la tâche" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Fin de la tâche" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Les conditions" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12958,20 +13476,15 @@ msgstr "Résultats en attente" msgid "Journal Entry" msgstr "Entrée de journal" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Modifier la durée de conservation des logs" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "jours" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Groupe de notifications" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Indéfini" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Aucune assignée" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12985,54 +13498,6 @@ msgstr "Contextes sources" msgid "New Journal Entry" msgstr "Nouvelle entrée de journal" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Changer" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Différence" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Précédent" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Suivant" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Objet créé" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Objet supprimé" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Aucune modification" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Données avant modification" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Attention : modification non-atomique vis à vis de la modification " -"précédente" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Données après modification" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Voir toutes les %(count)s modifications" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Rapport" @@ -13043,7 +13508,7 @@ msgstr "Vous n'avez pas le droit d'exécuter des scripts" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Exécuter le script" @@ -13056,27 +13521,27 @@ msgstr "Erreur de chargement du script" msgid "Script no longer exists in the source file." msgstr "Le script n'existe plus dans le fichier source." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Dernière exécution" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Le script n'est plus présent dans le fichier source" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Jamais" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Exécutez à nouveau" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Aucun script trouvé" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -13091,6 +13556,14 @@ msgstr "" msgid "Results" msgstr "Résultats" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Seuil de journalisation" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Tous" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Articles taggés" @@ -13123,11 +13596,11 @@ msgstr "Type de contenu HTTP" msgid "SSL Verification" msgstr "Vérification SSL" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "En-têtes supplémentaires" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Modèle du corps du message" @@ -13203,6 +13676,10 @@ msgstr "Options de champ" msgid "Accessor" msgstr "Accesseur" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "choix" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Valeur d'importation" @@ -13371,6 +13848,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Les objets suivants seront supprimés à la suite de cette action." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "depuis" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Aucune notification non lue" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Toutes les notifications" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Sélectionner" @@ -13438,15 +13927,23 @@ msgstr "Recherche rapide" msgid "Saved filter" msgstr "Filtre enregistré" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Commande claire" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Centre d'aide" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Administrateur Django" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Déconnexion" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Connexion" @@ -13494,10 +13991,6 @@ msgstr "Création en masse" msgid "Create Group" msgstr "Créer un groupe" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Associer un groupe" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "IP virtuelles" @@ -13631,10 +14124,6 @@ msgstr "Ajouter un préfixe" msgid "Add VLAN" msgstr "Ajouter un VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "VID autorisés" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Route Distinguisher" @@ -13643,20 +14132,16 @@ msgstr "Route Distinguisher" msgid "Unique IP Space" msgstr "Espace IP unique" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "Logo NetBox" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Erreurs" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Connexion" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Ou" @@ -13733,11 +14218,6 @@ msgstr "Titre" msgid "Phone" msgstr "Téléphone" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Allocations" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13777,7 +14257,7 @@ msgstr "Permissions attribuées" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Autorisation" @@ -13799,23 +14279,21 @@ msgid "Allocated Resources" msgstr "Ressources allouées" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Processeurs virtuels" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Mémoire" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Espace disque" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "Go" @@ -13856,7 +14334,7 @@ msgid "Cluster Group" msgstr "Groupe Cluster" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Type de cluster" @@ -13865,13 +14343,13 @@ msgstr "Type de cluster" msgid "Virtual Disk" msgstr "Disque virtuel" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Ressources" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Ajouter un disque virtuel" @@ -14053,13 +14531,12 @@ msgstr "Ajouter un groupe de réseau local sans fil" msgid "Link Properties" msgstr "Propriétés du lien" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Tertiaire" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Inactif" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Distance" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14224,13 +14701,13 @@ msgstr "Lien de contact" msgid "Contact Description" msgstr "Description du contact" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Permission (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Groupe (nom)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Groupe de notifications (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14252,27 +14729,27 @@ msgstr "Statut de superutilisateur" msgid "If no key is provided, one will be generated automatically." msgstr "Si aucune clé n'est fournie, une clé sera générée automatiquement." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Est dans l'équipe" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Est un superutilisateur" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Peut voir" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Peut ajouter" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Peut changer" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Peut supprimer" @@ -14368,50 +14845,50 @@ msgstr "permission" msgid "permissions" msgstr "permissions" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "préférences de l'utilisateur" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "" "Clé '{path}'est un nœud feuille ; impossible d'attribuer de nouvelles clés" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "La clé '{path}'est un dictionnaire ; impossible d'attribuer une valeur autre" " que dictionnaire" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "expire" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "utilisé pour la dernière fois" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "clé" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "écriture activée" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" "Autoriser les opérations de création/mise à jour/suppression à l'aide de " "cette clé" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "adresses IP autorisées" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14420,11 +14897,11 @@ msgstr "" "Laissez ce champ vide pour éviter toute restriction. Par exemple : " "« 10.1.1.0/24, 192.168.10.16/32, 2001 : DB 8:1 : /64 »" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "jeton" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "jetons" @@ -14432,18 +14909,10 @@ msgstr "jetons" msgid "group" msgstr "groupe" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "groupes" - #: netbox/users/models/users.py:92 msgid "user" msgstr "utilisateur" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "utilisateurs" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Un utilisateur avec ce nom d'utilisateur existe déjà." @@ -14583,7 +15052,7 @@ msgstr "" "plusieurs documents ou d'un seul document comprenant une liste de " "dictionnaires." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14592,6 +15061,22 @@ msgstr "" "Liste non valide ({value}). Doit être numérique et les plages doivent être " "classées par ordre croissant." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Spécifiez une ou plusieurs plages numériques séparées par des virgules. " +"Exemple : 1 à 5, 20 à 30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Plages non valides ({value}). Il doit s'agir d'une plage d'entiers classés " +"par ordre croissant." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14760,6 +15245,26 @@ msgstr "" "Valeur requise manquante pour le paramètre de requête statique : " "'{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Le mot de passe doit comporter au moins un chiffre." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Le mot de passe doit comporter au moins une lettre majuscule." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Le mot de passe doit comporter au moins une lettre minuscule." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Votre mot de passe doit contenir au moins un chiffre, une lettre majuscule " +"et une lettre minuscule." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14816,6 +15321,14 @@ msgstr "Ajouter un modèle d'exportation" msgid "Import" msgstr "Importer" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Désabonnement" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Souscrire" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Copier dans le presse-papiers" @@ -14856,15 +15369,11 @@ msgstr "Rechercher dans NetBox" msgid "Open selector" msgstr "Ouvrir le sélecteur" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Aucune assignée" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Écrire" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Le test doit définir csv_update_data." @@ -14873,17 +15382,17 @@ msgstr "Le test doit définir csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} n'est pas une expression rationnelle valide." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "{self.__class__.__name__} doit implémenter get_required_permission()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} doit implémenter get_required_permission()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14907,7 +15416,7 @@ msgid "Cluster type (ID)" msgstr "Type de cluster (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Cluster (ID)" @@ -14925,7 +15434,7 @@ msgid "Disk (GB)" msgstr "Disque (Go)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Taille (Go)" @@ -14945,6 +15454,10 @@ msgstr "Cluster attribué" msgid "Assigned device within cluster" msgstr "Appareil attribué au sein du cluster" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Numéro de série" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14969,6 +15482,7 @@ msgid "Disk size is managed via the attachment of virtual disks." msgstr "La taille du disque est gérée via la connexion de disques virtuels." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Disque" @@ -15010,39 +15524,39 @@ msgid "memory (MB)" msgstr "mémoire (Mo)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "disque (Go)" +msgid "disk (MB)" +msgstr "disque (Mo)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Le nom de la machine virtuelle doit être unique par cluster." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "machine virtuelle" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "machines virtuelles" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" "Une machine virtuelle doit être attribuée à un site et/ou à un cluster." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" "Le cluster sélectionné ({cluster}) n'est pas attribué à ce site ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "" "Il faut indiquer un cluster lors de l'attribution d'un périphérique hôte." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." @@ -15050,7 +15564,7 @@ msgstr "" "L'appareil sélectionné ({device}) n'est pas affecté à ce cluster " "({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -15059,19 +15573,19 @@ msgstr "" "La taille de disque indiquée ({size}) doit correspondre à la taille agrégée " "des disques virtuels assignés ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "" "Doit être une address IPv{family}. ({ip} est une addresse IPv{version}.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "" "L'adresse IP indiquée ({ip}) n'est pas attribué à cette machine virtuelle." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -15080,7 +15594,7 @@ msgstr "" "L'interface parent sélectionnée ({parent}) appartient à une autre machine " "virtuelle ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -15089,7 +15603,7 @@ msgstr "" "L'interface de pont sélectionnée ({bridge}) appartient à une autre machine " "virtuelle ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -15098,24 +15612,24 @@ msgstr "" "Le VLAN non taggé ({untagged_vlan}) doit appartenir au même site que la " "machine virtuelle parente de l'interface, ou il doit être global." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "taille (Go)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "taille (Mo)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "disque virtuel" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "disques virtuels" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Ajouté {count} appareils à mettre en cluster {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Supprimé {count} appareils du cluster {cluster}" @@ -15229,32 +15743,32 @@ msgid "Outside IP (ID)" msgstr "IP externe (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "Politique IKE (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "Politique IKE (nom)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "Politique IPSec (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "Politique IPSec (nom)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (slug)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "Interface de machine virtuelle (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (nom)" @@ -15429,7 +15943,7 @@ msgstr "version" msgid "proposals" msgstr "propositions" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "clé pré-partagée" @@ -15612,17 +16126,24 @@ msgstr "WPA Entreprise" msgid "Authentication cipher" msgstr "Algorithme de chiffrement pour l'authentification" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Unité de distance" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "VLAN bridgé" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Interface A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Interface B" @@ -15630,39 +16151,52 @@ msgstr "Interface B" msgid "Side B" msgstr "Côté B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "algorithme de chiffrement pour l'authentification" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "groupe réseaux sans fil" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "groupes réseaux sans fil" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "Réseau sans fil" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "interface A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "interface B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "distance" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "unité de distance" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "liaison sans fil" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "liaisons sans fil" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "" +"Vous devez spécifier une unité lors du réglage d'une distance sans fil" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} n'est pas une interface sans fil." diff --git a/netbox/translations/it/LC_MESSAGES/django.mo b/netbox/translations/it/LC_MESSAGES/django.mo index 8e3996bdfba..76aa1a6042e 100644 Binary files a/netbox/translations/it/LC_MESSAGES/django.mo and b/netbox/translations/it/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/it/LC_MESSAGES/django.po b/netbox/translations/it/LC_MESSAGES/django.po index 709fd5d9f63..020f1d8559a 100644 --- a/netbox/translations/it/LC_MESSAGES/django.po +++ b/netbox/translations/it/LC_MESSAGES/django.po @@ -6,6 +6,7 @@ # Translators: # Jeff Gehlbach, 2024 # Francesco Lombardo, 2024 +# rizlas, 2024 # Jeremy Stretch, 2024 # #, fuzzy @@ -13,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Italian (https://app.transifex.com/netbox-community/teams/178115/it/)\n" @@ -29,16 +30,17 @@ msgstr "" msgid "Key" msgstr "Chiave" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Scrittura abilitata" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -50,11 +52,11 @@ msgstr "Creato" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Scade" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Ultimo utilizzo" @@ -64,47 +66,47 @@ msgstr "Ultimo utilizzo" msgid "Allowed IPs" msgstr "IP consentiti" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Effettuato l'accesso come {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Ti sei disconnesso." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Le tue preferenze sono state aggiornate." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "Le credenziali utente autenticate con LDAP non possono essere modificate " "all'interno di NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "La tua password è stata cambiata con successo." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Pianificato" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Approvvigionamento" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -113,9 +115,9 @@ msgstr "Approvvigionamento" msgid "Active" msgstr "Attivo" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Offline" @@ -128,98 +130,116 @@ msgstr "Deprovisioning" msgid "Decommissioned" msgstr "Dismesso" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Primaria" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Secondario" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Terziario" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inattivo" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Regione (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Regione (slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Gruppo del sito (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Gruppo del sito (slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -231,172 +251,197 @@ msgstr "Gruppo del sito (slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Sito" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Sito (slug)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Provider (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Provider (slug)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Provider account (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Provider account (account)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Provider network (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Tipo di circuito (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Tipo di circuito (slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Sito (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Terminazione A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Cerca" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Circuito" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Provider network (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Circuito (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Circuito (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Gruppo di circuiti (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Gruppo di circuiti (slug)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -409,16 +454,17 @@ msgstr "ASN" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -428,8 +474,9 @@ msgstr "ASN" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -482,26 +529,28 @@ msgstr "ASN" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Descrizione" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -513,22 +562,22 @@ msgstr "Descrizione" msgid "Provider" msgstr "Provider " -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "ID del servizio" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -539,33 +588,33 @@ msgstr "ID del servizio" msgid "Color" msgstr "Colore" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -578,9 +627,9 @@ msgstr "Colore" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -596,52 +645,52 @@ msgstr "Colore" msgid "Type" msgstr "Tipo" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Provider account " -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -650,7 +699,7 @@ msgstr "Provider account " #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -658,7 +707,7 @@ msgstr "Provider account " #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -668,45 +717,49 @@ msgstr "Provider account " #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Status" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -718,7 +771,7 @@ msgstr "Status" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -741,36 +794,37 @@ msgstr "Status" msgid "Tenant" msgstr "Tenant" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Data di installazione" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Data di dismissione" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Commit ratet (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Parametri del servizio" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -780,37 +834,37 @@ msgstr "Parametri del servizio" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Tenancy" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Provider Network" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Port speed (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Upstream speed (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Segna connesso" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -818,46 +872,60 @@ msgstr "Segna connesso" msgid "Circuit Termination" msgstr "Terminazione del circuito" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Dettagli sulla cessazione" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Priorità" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Provider assegnato" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Account provider assegnato" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Tipo di circuito" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Stato operativo" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -865,7 +933,7 @@ msgstr "Stato operativo" msgid "Assigned tenant" msgstr "Tenant assegnato" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -873,44 +941,44 @@ msgstr "Tenant assegnato" msgid "Termination" msgstr "Cessazione" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Provider network" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -919,13 +987,13 @@ msgstr "Provider network" msgid "Location" msgstr "Locazione" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -934,22 +1002,22 @@ msgstr "Locazione" msgid "Contacts" msgstr "Contatti" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -962,17 +1030,17 @@ msgstr "Contatti" msgid "Region" msgstr "Regione" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -980,180 +1048,263 @@ msgstr "Regione" msgid "Site group" msgstr "Gruppo del sito" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Attributi" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Account" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Lato del termine" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Assegnazione" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Gruppo" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Gruppo Circuit" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "colore" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "tipo di circuito" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "tipi di circuiti" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "ID del circuito" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "ID univoco del circuito" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "stato" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "installato" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "termina" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "tasso di commit (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Tariffa impegnata" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "circuito" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "circuiti" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "gruppo di circuiti" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "gruppi di circuiti" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "priorità" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Assegnazione di gruppi di circuiti" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Assegnazioni di gruppi di circuiti" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "fine" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "velocità della porta (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Velocità fisica del circuito" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "velocità upstream (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Velocità upstream, se diversa dalla velocità della porta" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "ID di connessione incrociata" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID della connessione incrociata locale" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "pannello di permutazione/porte" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "ID del patch panel e numero/i di porta" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "descrizione" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "terminazione del circuito" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "terminazioni del circuito" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Una terminazione di circuito deve essere collegata a un sito o alla rete di " "un provider." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1162,33 +1313,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "nome" @@ -1197,11 +1349,12 @@ msgid "Full name of the provider" msgstr "Nome completo del fornitore" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "pallottola" @@ -1237,40 +1390,45 @@ msgstr "rete di fornitori" msgid "provider networks" msgstr "reti di fornitori" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1285,7 +1443,7 @@ msgstr "reti di fornitori" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1299,8 +1457,9 @@ msgstr "reti di fornitori" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1340,9 +1499,9 @@ msgstr "reti di fornitori" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1352,56 +1511,57 @@ msgstr "reti di fornitori" msgid "Name" msgstr "Nome" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Circuiti" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "ID circuito" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Lato A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Lato Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Tasso di impegno" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1410,6 +1570,12 @@ msgstr "Tasso di impegno" msgid "Comments" msgstr "Commenti" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Incarichi" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Account" @@ -1432,7 +1598,7 @@ msgstr "Non sono state definite terminazioni per il circuito {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Terminazioni sostituite per circuito {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "" "Questo utente non dispone dell'autorizzazione per sincronizzare questa " @@ -1452,21 +1618,19 @@ msgid "Syncing" msgstr "Sincronizzazione" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Completato" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Fallito" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1478,30 +1642,39 @@ msgstr "Script" msgid "Reports" msgstr "Rapporti" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "In sospeso" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Pianificato" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Correre" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" -msgstr "Errorata" +msgstr "Errore" + +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Aggiornato" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Eliminato" #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Finito" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Iniziato" @@ -1518,11 +1691,13 @@ msgstr "Fermato" msgid "Cancelled" msgstr "Annullato" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Locale" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1532,8 +1707,8 @@ msgstr "Nome utente" msgid "Only used for cloning with HTTP(S)" msgstr "Utilizzato solo per la clonazione con HTTP (S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Password" @@ -1555,24 +1730,63 @@ msgstr "ID chiave di accesso AWS" msgid "AWS secret access key" msgstr "Chiave di accesso segreta AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Oggetto creato" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Oggetto aggiornato" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Oggetto eliminato" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Lavoro iniziato" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Lavoro completato" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Lavoro fallito" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Lavoro errato" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Fonte dati (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Fonte dati (nome)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Utente (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Nome utente" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1580,14 +1794,14 @@ msgstr "Fonte dati (nome)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Abilitato" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1600,11 +1814,11 @@ msgstr "Parametri" msgid "Ignore rules" msgstr "Ignora le regole" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1614,76 +1828,99 @@ msgstr "Ignora le regole" msgid "Data Source" msgstr "Fonte dati" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "File" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Fonte dati" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Creazione" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Tipo di oggetto" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Creato dopo" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Creato prima" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Pianificato dopo" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Pianificato prima" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Iniziato dopo" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Iniziato prima" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Completato dopo" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Completato prima" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Utente" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Ora" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Dopo" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Prima" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Azione" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1713,19 +1950,19 @@ msgstr "" msgid "Rack Elevations" msgstr "Elevazioni dei rack" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Energia" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1742,7 +1979,9 @@ msgstr "Banner" msgid "Pagination" msgstr "Impaginazione" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Validazione" @@ -1752,7 +1991,7 @@ msgstr "Validazione" msgid "User Preferences" msgstr "Preferenze utente" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1776,10 +2015,50 @@ msgstr "Valore attuale: {value}" msgid " (default)" msgstr " (impostazione predefinita)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "tempo" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "nome utente" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "ID della richiesta" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "azione" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "dati precedenti alla modifica" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "dati post-modifica" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "cambio di oggetto" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "modifiche agli oggetti" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"La registrazione delle modifiche non è supportata per questo tipo di oggetto" +" ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "creato" @@ -1812,14 +2091,14 @@ msgstr "Configurazione attuale" msgid "Config revision #{id}" msgstr "Revisione della configurazione #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1827,63 +2106,64 @@ msgstr "Revisione della configurazione #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "tipo" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "abilitato" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ignora le regole" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Schemi (uno per riga) corrispondenti ai file da ignorare durante la " "sincronizzazione" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "parametri" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "ultima sincronizzazione" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "origine dati" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "fonti di dati" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Tipo di backend sconosciuto: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "" "Impossibile avviare la sincronizzazione. La sincronizzazione è già in corso." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1891,48 +2171,48 @@ msgstr "" "Si è verificato un errore durante l'inizializzazione del backend. È " "necessario installare una dipendenza: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "ultimo aggiornamento" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "sentiero" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Percorso del file relativo alla radice dell'origine dati" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "taglia" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "cancelletto" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "La lunghezza deve essere di 64 caratteri esadecimali." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "Hash SHA256 dei dati del file" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "file di dati" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "file di dati" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "registrazione di sincronizzazione automatica" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "sincronizzazione automatica dei record" @@ -1956,60 +2236,96 @@ msgstr "file gestito" msgid "managed files" msgstr "file gestiti" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "pianificata" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "intervallo" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Intervallo di ricorrenza (in minuti)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "iniziato" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "completato" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "dato" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "errore" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "ID lavoro" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "occupazione" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "lavori" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "" "I lavori non possono essere assegnati a questo tipo di oggetto ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" "Stato non valido per la cessazione del lavoro. Le scelte sono: {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"enqueue () non può essere chiamato con valori sia per schedule_at che per " +"immediate." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "L'eliminazione è impedita da una regola di protezione: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Nome completo" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Oggetto" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "ID della richiesta" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "È attivo" @@ -2024,51 +2340,63 @@ msgid "Last updated" msgstr "Ultimo aggiornamento" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Oggetto" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Intervallo" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Versione" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Pacchetto" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Ultimo aggiornamento" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Versione minima di NetBox" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Versione massima di NetBox" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Nessun dato del plugin trovato" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Autore" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Email dell'autore" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Installato" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Nessun plugin trovato" +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Certificato" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Pubblicato" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Versione installata" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Ultima versione" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2082,7 +2410,7 @@ msgstr "Lavoratori" msgid "Host" msgstr "Ospite" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Porto" @@ -2130,62 +2458,72 @@ msgstr "PID" msgid "No workers found" msgstr "Nessun lavoratore trovato" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Lavoro in coda #{id} da sincronizzare {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Revisione della configurazione ripristinata #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Lavoro {job_id} non trovato" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Lavoro {id} è stato eliminato." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Errore durante l'eliminazione del lavoro {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Lavoro {id} non trovato." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Lavoro {id} è stato nuovamente accodato." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Lavoro {id} è stato messo in coda." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Lavoro {id} è stato fermato." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Interruzione del lavoro non riuscita {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Impossibile caricare il catalogo dei plugin" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Plugin {name} non trovato" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Posizione (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "ID struttura" @@ -2193,8 +2531,8 @@ msgstr "ID struttura" msgid "Staging" msgstr "Messa in scena" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Smantellamento" @@ -2253,27 +2591,39 @@ msgstr "Disponibile" msgid "Deprecated" msgstr "Obsoleto" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Millimetri" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Pollici" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Da anteriore a posteriore" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Posteriore/anteriore" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2289,278 +2639,273 @@ msgstr "Pollici" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Genitore" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Bambino" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Anteriore" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Posteriore" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Messo in scena" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Inventario" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Da anteriore a posteriore" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Posteriore/anteriore" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Da sinistra a destra" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Da destra a sinistra" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Da lato a retro" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Passivo" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Misto" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (non bloccante)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (bloccaggio)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Stile californiano" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "Internazionale/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Proprietario" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Altro" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/Internazionale" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Fisico" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Virtuale" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Wireless" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Interfacce virtuali" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "ponte" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Link Aggregation Group (GAL)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (fisso)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modulare)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (backplane)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Cellulare" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Seriale" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Coassiale" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "impilamento" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Metà" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Completo" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Accesso" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Taggato" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Contrassegnati (tutti)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "Norma IEEE" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "24V passivo (2 coppie)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "24V passivo (4 coppie)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "48V passivo (2 coppie)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "48V passivo (4 coppie)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Rame" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Fibra ottica" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Fibra" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Connesso" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Chilometri" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Metri" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Centimetri" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Miglia" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Piedi" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Chilogrammi" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Grammi" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Sterline" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Once" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Primaria" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Ridondante" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Monofase" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Trifase" @@ -2574,330 +2919,335 @@ msgstr "Formato dell'indirizzo MAC non valido: {value}" msgid "Invalid WWN format: {value}" msgstr "Formato WWN non valido: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Regione principale (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Regione madre (slug)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Gruppo del sito principale (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Gruppo del sito principale (slug)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Gruppo (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Gruppo (slug)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "COME (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Sede principale (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Sede principale (slug)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Ubicazione (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Posizione (slug)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Produttore (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Produttore (lumaca)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Tipo di rack (slug)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Tipo di rack (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Ruolo (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Ruolo (slug)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Cremagliera (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Utente (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Utente (nome)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Produttore (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Produttore (lumaca)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Piattaforma predefinita (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Piattaforma predefinita (slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Ha un'immagine frontale" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Ha un'immagine posteriore" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Dispone di porte per console" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Dispone di porte console server" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Dispone di porte di alimentazione" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Dispone di prese di corrente" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Dispone di interfacce" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Dispone di porte pass-through" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Dispone di alloggiamenti per moduli" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Dispone di alloggiamenti per dispositivi" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Ha articoli di inventario" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Tipo di dispositivo (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Tipo di modulo (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Porta di alimentazione (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Articolo di inventario principale (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Modello di configurazione (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Tipo di dispositivo (slug)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Dispositivo principale (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Piattaforma (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Piattaforma (slug)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Nome del sito (slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Bambino per genitori (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "Cluster VM (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Gruppo Cluster (slug)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Gruppo cluster (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Modello del dispositivo (slug)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "È a piena profondità" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "Indirizzo MAC" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Ha un IP primario" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Ha un IP fuori banda" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Chassis virtuale (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "È un membro virtuale dello chassis" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Ha un contesto di dispositivo virtuale" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Modello del dispositivo" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Interfaccia (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Tipo di modulo (modello)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Vano per moduli (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Alloggiamento per moduli (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Dispositivo (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Rack (nome)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Dispositivo (nome)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Tipo di dispositivo (modello)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Ruolo del dispositivo (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Ruolo del dispositivo (slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Chassis virtuale (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2906,33 +3256,33 @@ msgstr "Chassis virtuale (ID)" msgid "Virtual Chassis" msgstr "Chassis virtuale" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Modulo (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Cavo (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "VLAN assegnata" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "VID assegnato" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2949,121 +3299,125 @@ msgstr "VID assegnato" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (ROSSO)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Interfacce virtuali dello chassis per dispositivi" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Interfacce virtuali dello chassis per dispositivi (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Tipo di interfaccia" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Interfaccia principale (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Interfaccia con ponte (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "Interfaccia LAG (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Contesto del dispositivo virtuale" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Contesto del dispositivo virtuale (identificatore)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "LAN senza fili" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Collegamento wireless" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Alloggiamento del modulo principale (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Modulo installato (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Dispositivo installato (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Dispositivo installato (nome)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Maestro (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Master (nome)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Inquilino (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Inquilino (slug)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Interminato" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Pannello di alimentazione (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3071,13 +3425,13 @@ msgstr "Pannello di alimentazione (ID)" msgid "Tags" msgstr "Etichette" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3091,168 +3445,114 @@ msgstr "" "Sono supportati gli intervalli alfanumerici. (Deve corrispondere al numero " "di nomi da creare.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Gruppo" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Nome del contatto" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Telefono di contatto" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "E-mail di contatto" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Fuso orario" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Ruolo" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Numero di serie" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Etichetta dell'asset" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Produttore" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Fattore di forma" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Larghezza" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Altezza (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Unità discendenti" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Larghezza esterna" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Profondità esterna" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Unità esterna" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Profondità di montaggio" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3260,31 +3560,127 @@ msgstr "Profondità di montaggio" msgid "Weight" msgstr "Peso" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Peso massimo" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Unità di peso" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Tipo di rack" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Dimensioni esterne" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Dimensioni" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Numerazione" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Ruolo" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Numero di serie" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Etichetta dell'asset" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Flusso d'aria" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3294,158 +3690,132 @@ msgstr "Unità di peso" msgid "Rack" msgstr "cremagliera" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Hardware" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Produttore" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Piattaforma predefinita" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Numero del pezzo" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Altezza U" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Escludi dall'utilizzo" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Flusso d'aria" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Tipo di dispositivo" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Tipo di modulo" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Telaio" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "Ruolo VM" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Modello di configurazione" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Tipo di dispositivo" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Ruolo del dispositivo" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "piattaforma" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3456,7 +3826,7 @@ msgstr "piattaforma" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3464,7 +3834,7 @@ msgstr "piattaforma" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3472,7 +3842,7 @@ msgstr "piattaforma" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3482,23 +3852,23 @@ msgstr "piattaforma" msgid "Device" msgstr "Dispositivo" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Configurazione" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Tipo di modulo" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3507,7 +3877,7 @@ msgstr "Tipo di modulo" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3516,141 +3886,142 @@ msgstr "Tipo di modulo" msgid "Label" msgstr "Etichetta" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Lunghezza" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Unità di lunghezza" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Dominio" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Pannello di alimentazione" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Fornitura" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Voltaggio" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Amperaggio" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Utilizzo massimo" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Pareggio massimo" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Potenza massima assorbita (watt)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Pareggio assegnato" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Potenza assorbita allocata (watt)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Porta di alimentazione" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Gamba di alimentazione" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Solo gestione" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "modalità PoE" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "Tipo PoE" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Ruolo wireless" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Modulo" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "RITARDO" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Contesti dei dispositivi virtuali" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Velocità" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3664,294 +4035,299 @@ msgstr "Velocità" msgid "Mode" msgstr "modalità" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Gruppo VLAN" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN senza tag" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Taggato VLAN" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Gruppo LAN wireless" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "LAN wireless" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Indirizzamento" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Operazione" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Interfacce correlate" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "Commutazione 802.1Q" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "" "La modalità di interfaccia deve essere specificata per assegnare le VLAN" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "" "A un'interfaccia di accesso non possono essere assegnate VLAN con tag." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Nome della regione madre" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Nome del gruppo del sito principale" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Regione assegnata" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Gruppo assegnato" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "opzioni disponibili" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Sito assegnato" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Sede del genitore" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Posizione non trovata." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Nome dell'inquilino assegnato" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Nome del ruolo assegnato" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Il produttore di questo tipo di rack" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Tipo di rack" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "La posizione con il numero più basso nel rack" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Larghezza da rotaia a rotaia (in pollici)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Unità per dimensioni esterne" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Unità per pesi a scaffale" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Nome dell'inquilino assegnato" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Nome del ruolo assegnato" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Direzione del flusso d'aria" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Sito principale" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Posizione del rack (se presente)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Unità" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Elenco separato da virgole di numeri di unità individuali" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Il produttore che produce questo tipo di dispositivo" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "La piattaforma predefinita per dispositivi di questo tipo (opzionale)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Peso del dispositivo" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Unità per il peso del dispositivo" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Peso del modulo" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Unità per il peso del modulo" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Limita le assegnazioni delle piattaforme a questo produttore" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Ruolo assegnato" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Produttore del tipo di dispositivo" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Tipo di dispositivo modello" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Piattaforma assegnata" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Chassis virtuale" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Grappolo" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Cluster di virtualizzazione" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Posizione assegnata (se presente)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Rack assegnato (se presente)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Viso" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Faccia del rack montata" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Dispositivo principale (per dispositivi per bambini)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Alloggiamento per dispositivi" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Alloggiamento del dispositivo in cui è installato questo dispositivo (per " "dispositivi per bambini)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Direzione del flusso d'aria" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Il dispositivo in cui è installato questo modulo" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "alloggiamento per moduli" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "L'alloggiamento del modulo in cui è installato questo modulo" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Il tipo di modulo" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Componenti replicati" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3959,238 +4335,238 @@ msgstr "" "Compila automaticamente i componenti associati a questo tipo di modulo " "(abilitato per impostazione predefinita)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Adotta i componenti" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Adotta componenti già esistenti" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Tipo di porta" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Velocità della porta in bps" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Tipo di presa" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Porta di alimentazione locale che alimenta questa presa" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Fase elettrica (per circuiti trifase)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Interfaccia principale" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Interfaccia con ponte" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Ritardo" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Interfaccia LAG principale" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Vdc" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "Nomi VDC separati da virgole, racchiusi tra virgolette doppie. Esempio:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Supporto fisico" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Duplex" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "modalità Poe" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Tipo Poe" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "Modalità operativa IEEE 802.1Q (per interfacce L2)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "VRF assegnato" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Ruolo Rf" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Ruolo wireless (AP/stazione)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} non è assegnato al dispositivo {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Porta posteriore" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Porta posteriore corrispondente" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Classificazione del mezzo fisico" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Dispositivo installato" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "" "Dispositivo per bambini installato all'interno di questo alloggiamento" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Dispositivo secondario non trovato." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Articolo di inventario principale" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Tipo di componente" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Tipo di componente" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Nome del componente" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Nome del componente" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Componente non trovato: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Dispositivo lato A" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Nome del dispositivo" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Tipo Lato A" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Tipo di terminazione" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Nome del lato A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Nome della cessazione" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Dispositivo lato B" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Tipo B laterale" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Nome lato B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Stato della connessione" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Lato {side_upper}: {device} {termination_object} è già connesso" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} terminazione laterale non trovata: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Maestro" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Dispositivo master" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Nome del sito principale" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Pannello di alimentazione upstream" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Primario o ridondante" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Tipo di alimentazione (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Monofase o trifase" @@ -4211,7 +4587,7 @@ msgstr "" "dispositivo/macchina virtuale principale dell'interfaccia oppure devono " "essere globali" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4219,17 +4595,26 @@ msgstr "" "Impossibile installare un modulo con valori segnaposto in un alloggiamento " "per moduli senza una posizione definita." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Impossibile installare un modulo con valori segnaposto in un albero di " +"alloggiamento del modulo {level} in un albero ma {tokens} segnaposto dati." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "Non può adottare {model} {name} in quanto appartiene già a un modulo" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "UN {model} denominato {name} esiste già" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4238,7 +4623,7 @@ msgstr "UN {model} denominato {name} esiste già" msgid "Power Panel" msgstr "Pannello di alimentazione" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4248,15 +4633,15 @@ msgstr "Alimentazione" msgid "Side" msgstr "Lato" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Stato del dispositivo" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Regione principale" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4264,62 +4649,67 @@ msgstr "Regione principale" msgid "Parent group" msgstr "Gruppo di genitori" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Struttura" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Tipo di rack" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Funzione" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Immagini" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Componenti" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Ruolo del dispositivo secondario" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Modello" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Ha un IP OOB" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Membro virtuale dello chassis" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Dispone di contesti di dispositivi virtuali" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Gruppo Cluster" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "cablato" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Occupato" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4331,43 +4721,43 @@ msgstr "Occupato" msgid "Connection" msgstr "Connessione" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Gentile" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Solo gestione" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Canale wireless" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Frequenza del canale (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Larghezza del canale (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Potenza di trasmissione (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4377,7 +4767,7 @@ msgstr "Potenza di trasmissione (dBm)" msgid "Cable" msgstr "Cavo" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Scoperto" @@ -4387,28 +4777,31 @@ msgid "A virtual chassis member already exists in position {vc_position}." msgstr "" "Un membro virtuale dello chassis esiste già in posizione {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Informazioni di contatto" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Ruolo del rack" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Controllo dell'inventario" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "lumaca" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Dimensioni esterne" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Seleziona un tipo di rack predefinito o imposta le caratteristiche fisiche " +"di seguito." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Dimensioni" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Controllo dell'inventario" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4416,95 +4809,72 @@ msgstr "" "Elenco separato da virgole di ID di unità numeriche. È possibile specificare" " un intervallo utilizzando un trattino." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Prenotazione" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "lumaca" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Telaio" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Ruolo del dispositivo" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "L'unità con il numero più basso occupata dal dispositivo" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" "La posizione nello chassis virtuale da cui viene identificato questo " "dispositivo" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Priorità" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "La priorità del dispositivo nello chassis virtuale" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "" "Compila automaticamente i componenti associati a questo tipo di modulo" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "La lunghezza massima è 32767 (qualsiasi unità)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Caratteristiche" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Modello di porta console" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Modello di porta del server console" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Modello di porta anteriore" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Modello di interfaccia" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Modello di presa di corrente" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Modello di porta di alimentazione" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Modello di porta posteriore" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4515,7 +4885,7 @@ msgstr "Modello di porta posteriore" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4524,7 +4894,7 @@ msgstr "Modello di porta posteriore" msgid "Interface" msgstr "Interfaccia" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4532,14 +4902,14 @@ msgstr "Interfaccia" msgid "Console Port" msgstr "Porta console" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Porta Console Server" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4550,8 +4920,8 @@ msgstr "Porta Console Server" msgid "Front Port" msgstr "Porta anteriore" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4563,36 +4933,36 @@ msgstr "Porta anteriore" msgid "Rear Port" msgstr "Porta posteriore" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Porta di alimentazione" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Presa di corrente" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Assegnazione dei componenti" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "Un InventoryItem può essere assegnato solo a un singolo componente." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "Interfaccia LAG" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Dispositivo per bambini" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4600,41 +4970,41 @@ msgstr "" "I dispositivi secondari devono prima essere creati e assegnati al sito e al " "rack del dispositivo principale." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Porta console" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Porta console server" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Porta anteriore" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Presa di corrente" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Articolo di inventario" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Ruolo dell'articolo di inventario" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "IPv4 primario" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "IPv6 primario" @@ -4698,7 +5068,7 @@ msgstr "" " al numero selezionato di posizioni delle porte posteriori " "({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4724,7 +5094,7 @@ msgstr "È necessario specificare una posizione per il primo membro VC." #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "etichetta" @@ -4857,41 +5227,41 @@ msgstr "" "Un modello di componente deve essere associato a un tipo di dispositivo o a " "un tipo di modulo." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "modello di porta console" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "modelli di porte per console" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "modello di porta console server" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "modelli di porte per console server" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "pareggio massimo" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "pareggio assegnato" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "modello di porta di alimentazione" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "modelli di porte di alimentazione" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -4899,100 +5269,100 @@ msgstr "" "Il pareggio assegnato non può superare il pareggio massimo " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "gamba di alimentazione" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Fase (per alimentazioni trifase)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "modello di presa di corrente" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "modelli di prese di corrente" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Porta di alimentazione principale ({power_port}) deve appartenere allo " "stesso tipo di dispositivo" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Porta di alimentazione principale ({power_port}) deve appartenere allo " "stesso tipo di modulo" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "solo gestione" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "interfaccia bridge" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "ruolo wireless" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "modello di interfaccia" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "modelli di interfaccia" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Un'interfaccia non può essere collegata a se stessa." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Interfaccia bridge ({bridge}) deve appartenere allo stesso tipo di " "dispositivo" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "" "Interfaccia bridge ({bridge}) deve appartenere allo stesso tipo di modulo" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "posizione della porta posteriore" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "modello di porta anteriore" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "modelli di porte anteriori" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "" "Porta posteriore ({name}) deve appartenere allo stesso tipo di dispositivo" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -5001,48 +5371,48 @@ msgstr "" "Posizione della porta posteriore non valida ({position}); porta posteriore " "{name} ha solo {count} posizioni" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "posizioni" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "modello di porta posteriore" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "modelli di porte posteriori" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "posizione" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Identificatore a cui fare riferimento quando si rinominano i componenti " "installati" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "modello di alloggiamento del modulo" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "modelli module bay" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "modello di alloggiamento per dispositivi" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "modelli di alloggiamento per dispositivi" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5051,21 +5421,21 @@ msgstr "" "Ruolo del tipo di dispositivo secondario ({device_type}) deve essere " "impostato su «principale» per consentire gli alloggiamenti dei dispositivi." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "ID della parte" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Identificativo del pezzo assegnato dal produttore" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "modello di articolo di inventario" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "modelli di articoli di inventario" @@ -5210,27 +5580,27 @@ msgstr "Popolato dal canale selezionato (se impostato)" msgid "transmit power (dBm)" msgstr "potenza di trasmissione (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "LAN wireless" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "VLAN senza tag" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "VLAN contrassegnate" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "interfaccia" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "interfacce" @@ -5247,7 +5617,7 @@ msgstr "" "connesse." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Un'interfaccia non può essere la propria madre." @@ -5420,34 +5790,41 @@ msgstr "" "Il numero di posizioni non può essere inferiore al numero di porte frontali " "mappate ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "alloggiamento per moduli" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "alloggiamenti per moduli" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "" +"Un alloggiamento per moduli non può appartenere a un modulo installato al " +"suo interno." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "alloggiamento per dispositivi" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "alloggiamenti per dispositivi" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" "Questo tipo di dispositivo ({device_type}) non supporta gli alloggiamenti " "per dispositivi." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Impossibile installare un dispositivo su se stesso." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5455,61 +5832,62 @@ msgstr "" "Impossibile installare il dispositivo specificato; il dispositivo è già " "installato in {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "ruolo dell'articolo di inventario" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "ruoli degli articoli di inventario" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "numero di serie" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "etichetta dell'asset" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Un tag univoco utilizzato per identificare questo articolo" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "scoperto" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Questo articolo è stato scoperto automaticamente" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "articolo di inventario" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "articoli di inventario" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Non può assegnarsi come genitore." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "" "L'articolo dell'inventario principale non appartiene allo stesso " "dispositivo." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "Impossibile spostare un articolo dell'inventario con figli a carico" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "" "Impossibile assegnare un articolo di inventario a un componente su un altro " @@ -5524,6 +5902,7 @@ msgid "manufacturers" msgstr "produttori" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "modello" @@ -5539,7 +5918,7 @@ msgstr "numero del pezzo" msgid "Discrete part number (optional)" msgstr "Numero di parte discreto (opzionale)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "altezza (U)" @@ -5575,7 +5954,8 @@ msgstr "" "alloggiamenti dei dispositivi. Lascia vuoto se questo tipo di dispositivo " "non è né un genitore né un bambino." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "flusso d'aria" @@ -5623,151 +6003,151 @@ msgstr "" msgid "Child device types must be 0U." msgstr "I tipi di dispositivi per bambini devono essere 0U." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "tipo di modulo" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "tipi di moduli" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Le macchine virtuali possono essere assegnate a questo ruolo" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "ruolo del dispositivo" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "ruoli dei dispositivi" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Facoltativamente, limita questa piattaforma ai dispositivi di un determinato" " produttore" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "piattaforma" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "piattaforme" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "La funzione utilizzata da questo dispositivo" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Numero di serie del telaio, assegnato dal produttore" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Un tag univoco utilizzato per identificare questo dispositivo" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "posizione (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "faccia cremagliera" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "IPv4 primario" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "IPv6 primario" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "IP fuori banda" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "Posizione VC" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Posizione virtuale dello chassis" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "Priorità VC" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Priorità di elezione del master dello chassis virtuale" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "latitudine" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Coordinate GPS in formato decimale (xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "longitudine" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Il nome del dispositivo deve essere univoco per sito." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "dispositivo" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "dispositivi" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "cremagliera {rack} non appartiene al sito {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Posizione {location} non appartiene al sito {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "cremagliera {rack} non appartiene alla località {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "" "Non è possibile selezionare una faccia del rack senza assegnare un rack." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "" "Non è possibile selezionare una posizione del rack senza assegnare un rack." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "La posizione deve essere in incrementi di 0,5 unità rack." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" "È necessario specificare la faccia del rack quando si definisce la posizione" " del rack." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -5775,7 +6155,7 @@ msgstr "" "Un tipo di dispositivo 0U ({device_type}) non può essere assegnato a una " "posizione nel rack." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5783,7 +6163,7 @@ msgstr "" "I tipi di dispositivi per bambini non possono essere assegnati a un rack. " "Questo è un attributo del dispositivo principale." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5791,7 +6171,7 @@ msgstr "" "I tipi di dispositivi per bambini non possono essere assegnati a una " "posizione rack. Questo è un attributo del dispositivo principale." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5800,23 +6180,23 @@ msgstr "" "U{position} è già occupato o non dispone di spazio sufficiente per ospitare " "questo tipo di dispositivo: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} non è un indirizzo IPv4." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" "L'indirizzo IP specificato ({ip}) non è assegnato a questo dispositivo." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} non è un indirizzo IPv6." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5826,26 +6206,26 @@ msgstr "" "dispositivo, ma il tipo di questo dispositivo appartiene a " "{devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Il cluster assegnato appartiene a un sito diverso ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "La posizione di un dispositivo assegnato a uno chassis virtuale deve essere " "definita." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "modulo" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "moduli" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5854,22 +6234,22 @@ msgstr "" "Il modulo deve essere installato all'interno di un vano del modulo " "appartenente al dispositivo assegnato ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "dominio" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "chassis virtuale" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "Il master selezionato ({master}) non è assegnato a questo chassis virtuale." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5878,41 +6258,41 @@ msgstr "" "Impossibile eliminare lo chassis virtuale {self}. Esistono interfacce tra i " "membri che formano interfacce GAL trasversali." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identificatore" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Identificatore numerico univoco per il dispositivo principale" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "commenti" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "contesto del dispositivo virtuale" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "contesti dei dispositivi virtuali" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} non è un IPv{family} indirizzo." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "L'indirizzo IP primario deve appartenere a un'interfaccia sul dispositivo " "assegnato." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "peso" @@ -5989,94 +6369,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "La tensione non può essere negativa per l'alimentazione AC" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "ruolo rack" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "ruoli rack" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "ID struttura" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Identificatore assegnato localmente" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Ruolo funzionale" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Un tag univoco utilizzato per identificare questo rack" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "larghezza" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Larghezza da rotaia a rotaia" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Altezza nelle unità rack" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "unità di partenza" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Unità di partenza per cremagliera" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "unità discendenti" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Le unità sono numerate dall'alto verso il basso" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "larghezza esterna" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Dimensione esterna del rack (larghezza)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "profondità esterna" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Dimensione esterna del rack (profondità)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "unità esterna" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "peso massimo" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Capacità di carico massima per il rack" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "profondità di montaggio" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6084,30 +6429,77 @@ msgstr "" "Profondità massima di un dispositivo montato, in millimetri. Per i rack a " "quattro montanti, questa è la distanza tra le guide anteriore e posteriore." -#: netbox/dcim/models/racks.py:221 -msgid "rack" -msgstr "scaffale" +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "peso massimo" -#: netbox/dcim/models/racks.py:222 -msgid "racks" -msgstr "griglie" +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Capacità di carico massima per il rack" -#: netbox/dcim/models/racks.py:237 -#, python-brace-format -msgid "Assigned location must belong to parent site ({site})." -msgstr "La posizione assegnata deve appartenere al sito principale ({site})." +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "fattore di forma" -#: netbox/dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "tipo di rack" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "tipi di rack" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" "È necessario specificare un'unità quando si imposta una larghezza/profondità" " esterna" -#: netbox/dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "È necessario specificare un'unità quando si imposta un peso massimo" -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "ruolo rack" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "ruoli rack" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "ID struttura" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Identificatore assegnato localmente" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Ruolo funzionale" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Un tag univoco utilizzato per identificare questo rack" + +#: netbox/dcim/models/racks.py:359 +msgid "rack" +msgstr "scaffale" + +#: netbox/dcim/models/racks.py:360 +msgid "racks" +msgstr "griglie" + +#: netbox/dcim/models/racks.py:375 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "La posizione assegnata deve appartenere al sito principale ({site})." + +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6116,7 +6508,7 @@ msgstr "" "Il rack deve essere almeno {min_height}Parlo per ospitare i dispositivi " "attualmente installati." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6125,29 +6517,29 @@ msgstr "" "La numerazione delle unità rack deve iniziare da {position} o meno per " "ospitare i dispositivi attualmente installati." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "La posizione deve provenire dallo stesso sito, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "unità" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "prenotazione del rack" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "Tieni traccia delle prenotazioni" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Unità non valide per {height}Rack U: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Le seguenti unità sono già state prenotate: {unit_list}" @@ -6252,11 +6644,11 @@ msgstr "Terminazione A" msgid "Termination B" msgstr "Terminazione B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Dispositivo A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Dispositivo B" @@ -6291,13 +6683,13 @@ msgid "Reachable" msgstr "Raggiungibile" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Dispositivi" @@ -6307,17 +6699,17 @@ msgid "VMs" msgstr "VM" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Modello di configurazione" @@ -6325,22 +6717,22 @@ msgstr "Modello di configurazione" msgid "Site Group" msgstr "Gruppo del sito" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "Indirizzo IP" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "Indirizzo IPv4" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "Indirizzo IPv6" @@ -6377,10 +6769,10 @@ msgstr "Porte di alimentazione" msgid "Power outlets" msgstr "Prese di corrente" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6390,8 +6782,8 @@ msgstr "Prese di corrente" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfacce" @@ -6417,8 +6809,8 @@ msgid "Module Bay" msgstr "Modulo Bay" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6427,30 +6819,30 @@ msgstr "Modulo Bay" msgid "Inventory Items" msgstr "Articoli di inventario" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Colore del cavo" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Collegamento tra colleghi" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Contrassegna connesso" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Assorbimento massimo (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Pareggio assegnato (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6459,12 +6851,12 @@ msgstr "Pareggio assegnato (W)" msgid "IP Addresses" msgstr "Indirizzi IP" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Gruppi FHRP" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6475,52 +6867,52 @@ msgstr "Gruppi FHRP" msgid "Tunnel" msgstr "Tunnel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Solo gestione" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Modulo installato" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Modulo seriale" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Tag delle risorse del modulo" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Stato del modulo" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Componente" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Oggetti" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Tipi di dispositivi" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Tipi di moduli" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "piattaforme" @@ -6539,12 +6931,13 @@ msgid "U Height" msgstr "Altezza U" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Istanze" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6553,9 +6946,9 @@ msgstr "Istanze" msgid "Console Ports" msgstr "Porte console" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6564,9 +6957,9 @@ msgstr "Porte console" msgid "Console Server Ports" msgstr "Porte Console Server" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6575,9 +6968,9 @@ msgstr "Porte Console Server" msgid "Power Ports" msgstr "Porte di alimentazione" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6586,9 +6979,9 @@ msgstr "Porte di alimentazione" msgid "Power Outlets" msgstr "Prese di corrente" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6596,9 +6989,9 @@ msgstr "Prese di corrente" msgid "Front Ports" msgstr "Porte anteriori" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6607,23 +7000,26 @@ msgstr "Porte anteriori" msgid "Rear Ports" msgstr "Porte posteriori" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Alloggiamenti per dispositivi" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Baie per moduli" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Alimenti di alimentazione" @@ -6636,41 +7032,45 @@ msgstr "Utilizzo massimo" msgid "Available Power (VA)" msgstr "Potenza disponibile (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Scaffali" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Altezza" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Spazio" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Larghezza esterna" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Profondità esterna" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Peso massimo" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Spazio" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Siti" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "Il test case deve impostare peer_termination_type" @@ -6679,78 +7079,78 @@ msgstr "Il test case deve impostare peer_termination_type" msgid "Disconnected {count} {type}" msgstr "Disconnesso {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Prenotazioni" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Dispositivi non montati su rack" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Contesto di configurazione" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Configurazione del rendering" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Si è verificato un errore durante il rendering del modello: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Macchine virtuali" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Dispositivo installato {device} nella baia {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Dispositivo rimosso {device} dalla baia {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Bambini" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Membro aggiunto {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Impossibile rimuovere il dispositivo master {device} dallo chassis virtuale." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Rimosso {device} da chassis virtuale {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Oggetti correlati sconosciuti: {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "La modifica del tipo di campi personalizzati non è supportata." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "La pianificazione non è abilitata per questo script." @@ -6799,7 +7199,7 @@ msgid "Multiple objects" msgstr "Oggetti multipli" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Disabili" @@ -6834,7 +7234,7 @@ msgstr "No" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Link" @@ -6854,65 +7254,56 @@ msgstr "Alfabetico (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Alfabetico (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Aggiornato" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Eliminato" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Informazioni" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Successo" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Avvertenza" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Pericolo" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Eseguire il debug" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Predefinito" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Fallimento" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Ogni ora" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 ore" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Quotidiano" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Settimanale" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 giorni" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6920,18 +7311,16 @@ msgstr "30 giorni" msgid "Create" msgstr "Crea" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Aggiornamento" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6942,81 +7331,85 @@ msgstr "Aggiornamento" msgid "Delete" msgstr "Elimina" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Blu" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Indaco" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Viola" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Rosa" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Rosso" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "arancia" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Giallo" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Verde" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "color tè blu" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Ciano" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Grigio" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Nero" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "bianco" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Sceneggiatura" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Notifica" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7093,62 +7486,62 @@ msgstr "" "Formato non valido. I filtri degli oggetti devono essere passati come " "dizionario." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Elenco oggetti" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Visualizza un elenco arbitrario di oggetti." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Il numero predefinito di oggetti da visualizzare" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" "Formato non valido. I parametri URL devono essere passati come dizionario." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "Feed RSS" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Incorpora un feed RSS da un sito Web esterno." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "URL del feed" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Il numero massimo di oggetti da visualizzare" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "" "Per quanto tempo conservare il contenuto memorizzato nella cache (in " "secondi)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Segnalibri" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Mostra i tuoi segnalibri personali" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Tipo di azione sconosciuto per una regola di evento: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Impossibile importare la pipeline di eventi {name} errore: {error}" @@ -7157,210 +7550,219 @@ msgstr "Impossibile importare la pipeline di eventi {name} errore: {error}" msgid "Script module (ID)" msgstr "Modulo script (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "File di dati (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Gruppo (nome)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Tipo di cluster" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Tipo di cluster (slug)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Gruppo di inquilini" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Gruppo di inquilini (slug)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Etichetta" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Etichetta (lumaca)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Dispone di dati di contesto di configurazione locali" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Nome utente" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Nome del gruppo" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Richiesto" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Deve essere unico" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "Interfaccia utente visibile" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "Interfaccia utente modificabile" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "È clonabile" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Valore minimo" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Valore massimo" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Regex di convalida" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Comportamento" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Nuova finestra" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Classe Button" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "Tipo MIME" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Estensione del file" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Come allegato" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Condiviso" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "Metodo HTTP" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "URL del payload" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "Verifica SSL" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Segreto" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "Percorso del file CA" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Sulla creazione" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "In aggiornamento" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "In caso di eliminazione" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "All'inizio del lavoro" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "Sul lato del lavoro" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Tipi di eventi" -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "È attivo" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Tipi di oggetti" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Uno o più tipi di oggetti assegnati" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Tipo di dati del campo (ad esempio testo, numero intero, ecc.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Tipo di oggetto" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Tipo di oggetto (per campi oggetto o multioggetto)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Set a scelta" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Set di scelte (per i campi di selezione)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Se il campo personalizzato viene visualizzato nell'interfaccia utente" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Se il campo personalizzato è modificabile nell'interfaccia utente" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "L'insieme base di scelte predefinite da utilizzare (se presenti)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7369,206 +7771,201 @@ msgstr "" "opzionali separate da due punti: «Scelta 1:prima scelta, scelta 2: seconda " "scelta»" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "classe di pulsanti" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "La classe del primo link di un gruppo verrà utilizzata per il pulsante a " "discesa" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "I tipi di evento che attiveranno questa regola" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Oggetto d'azione" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Nome o script del webhook come percorso punteggiato module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} non trovato" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Sceneggiatura {name} non trovato" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Tipo di oggetto assegnato" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "La classificazione degli ingressi" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Utenti" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "Nomi utente separati da virgole, racchiusi tra virgolette" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Gruppi" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Nomi di gruppo separati da virgole, racchiusi tra virgolette doppie" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Tipo di oggetto correlato" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Tipo di campo" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Scelte" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Dati" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "File di dati" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Tipi di contenuto" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "Tipo di contenuto HTTP" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Eventi" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "Tipo di evento" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "Tipo di azione" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Creazioni di oggetti" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Aggiornamenti degli oggetti" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Eliminazioni di oggetti" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Il lavoro inizia" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Cessazioni dal lavoro" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Tipo di oggetto con tag" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Tipo di oggetto consentito" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Regioni" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Gruppi del sito" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Sedi" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Tipi di dispositivi" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Ruoli" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Tipi di cluster" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Gruppi di cluster" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Cluster" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Gruppi di inquilini" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Dopo" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Prima" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Ora" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "I tipi di oggetto che hanno questo campo personalizzato" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Azione" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Valore predefinito" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "Tipo di oggetto correlato (solo per i campi oggetto/multioggetto)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Filtro oggetto correlato" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Specifica i parametri della query come oggetto JSON." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Campo personalizzato" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Comportamento" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Valori" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7576,7 +7973,7 @@ msgstr "" "Il tipo di dati memorizzati in questo campo. Per i campi " "oggetti/multioggetto, seleziona il tipo di oggetto correlato di seguito." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7584,7 +7981,11 @@ msgstr "" "Questo verrà visualizzato come testo di aiuto per il campo del modulo. " "Markdown è supportato." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Oggetto correlato" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7592,16 +7993,16 @@ msgstr "" "Inserisci una scelta per riga. È possibile specificare un'etichetta " "opzionale per ciascuna scelta aggiungendola con i due punti. Esempio:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Link personalizzato" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Modelli" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7611,7 +8012,7 @@ msgstr "" "come {example}. I link che vengono visualizzati come testo vuoto non " "verranno visualizzati." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." @@ -7619,57 +8020,61 @@ msgstr "" "Codice modello Jinja2 per l'URL del link. Fai riferimento all'oggetto come " "{example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Codice modello" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Modello di esportazione" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Rendering" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "Il contenuto del modello viene compilato dalla fonte remota selezionata di " "seguito." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "È necessario specificare il contenuto locale o un file di dati" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Filtro salvato" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "Un gruppo di notifiche specifica almeno un utente o un gruppo." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "Richiesta HTTP" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Scelta dell'azione" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "" "Inserisci le condizioni in JSON formato." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7677,55 +8082,33 @@ msgstr "" "Inserisci i parametri da passare all'azione in JSON formato." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Regola dell'evento" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Condizioni" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Creazioni" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Aggiornamenti" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Trigger" -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Eliminazioni" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Gruppo di notifiche" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Esecuzioni di lavori" - -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Inquilini" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Assegnazione" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "I dati vengono compilati dalla fonte remota selezionata di seguito." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "È necessario specificare dati locali o un file di dati" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Contenuto" @@ -7773,49 +8156,25 @@ msgstr "Pianifica l'esecuzione dello script a un orario prestabilito" msgid "Interval at which this script is re-run (in minutes)" msgstr "Intervallo di riesecuzione dello script (in minuti)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Nessun indicizzatore trovato!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "tempo" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "nome utente" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "ID della richiesta" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "azione" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "dati precedenti alla modifica" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Le modifiche al database sono state annullate automaticamente." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "dati post-modifica" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Script interrotto con errore: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "cambio di oggetto" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Si è verificata un'eccezione: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "modifiche agli oggetti" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Le modifiche al database sono state annullate a causa di un errore." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "" -"La registrazione delle modifiche non è supportata per questo tipo di oggetto" -" ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Nessun indicizzatore trovato!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7867,35 +8226,35 @@ msgstr "modello di configurazione" msgid "config templates" msgstr "modelli di configurazione" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Gli oggetti a cui si applica questo campo." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Il tipo di dati che contiene questo campo personalizzato" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "Il tipo di oggetto NetBox a cui questo campo è associato (per i campi " "oggetto)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Nome del campo interno" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Sono consentiti solo caratteri alfanumerici e trattini bassi." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "I doppi caratteri di sottolineatura non sono consentiti nei nomi dei campi " "personalizzati." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7903,33 +8262,41 @@ msgstr "" "Nome del campo visualizzato agli utenti (se non fornito, «verrà utilizzato " "il nome del campo)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "nome del gruppo" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "" "I campi personalizzati all'interno dello stesso gruppo verranno visualizzati" " insieme" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "necessario" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Se impostato su true, questo campo è obbligatorio quando si creano nuovi " -"oggetti o si modifica un oggetto esistente." +"Questo campo è obbligatorio quando si creano nuovi oggetti o si modifica un " +"oggetto esistente." -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "deve essere unico" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "Il valore di questo campo deve essere univoco per l'oggetto assegnato" + +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "peso di ricerca" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7937,11 +8304,11 @@ msgstr "" "Ponderazione per la ricerca. I valori più bassi sono considerati più " "importanti. I campi con un peso di ricerca pari a zero verranno ignorati." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "logica di filtro" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7949,11 +8316,11 @@ msgstr "" "Loose corrisponde a qualsiasi istanza di una determinata stringa; exact " "corrisponde all'intero campo." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "predefinito" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7961,35 +8328,44 @@ msgstr "" "Valore predefinito per il campo (deve essere un valore JSON). Incapsula le " "stringhe con virgolette doppie (ad esempio «Foo»)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filtra le scelte di selezione degli oggetti usando un dict query_params " +"(deve essere un valore JSON). Incapsula le stringhe con virgolette doppie " +"(ad esempio «Foo»)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "peso dello schermo" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "I campi con pesi più alti appaiono più bassi in un modulo." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "valore minimo" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Valore minimo consentito (per campi numerici)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "valore massimo" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Valore massimo consentito (per campi numerici)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "regex di convalida" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -8000,279 +8376,249 @@ msgstr "" "per forzare la corrispondenza dell'intera stringa. Ad esempio ^ " "[A-Z]{3}$ limiterà i valori a esattamente tre lettere maiuscole." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "set di scelta" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Specifica se il campo personalizzato viene visualizzato nell'interfaccia " "utente" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Specifica se il valore del campo personalizzato può essere modificato " "nell'interfaccia utente" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "è clonabile" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Replica questo valore durante la clonazione di oggetti" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "campo personalizzato" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "campi personalizzati" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Valore predefinito non valido»{value}«: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "È possibile impostare un valore minimo solo per i campi numerici" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "È possibile impostare un valore massimo solo per i campi numerici" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "La convalida delle espressioni regolari è supportata solo per i campi di " "testo e URL" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "L'unicità non può essere applicata per i campi booleani" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "I campi di selezione devono specificare una serie di scelte." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Le scelte possono essere impostate solo nei campi di selezione." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "I campi oggetto devono definire un tipo di oggetto." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} i campi non possono definire un tipo di oggetto." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "" +"Un filtro oggetto correlato può essere definito solo per i campi oggetto." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Il filtro deve essere definito come un dizionario che associa gli attributi " +"ai valori." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Vero" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Falso" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "I valori devono corrispondere a questa regex: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "Il valore deve essere una stringa." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "Il valore deve corrispondere a regex '{regex}»" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "Il valore deve essere un numero intero." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "Il valore deve essere almeno {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "Il valore non deve superare {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "Il valore deve essere decimale." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "Il valore deve essere vero o falso." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "I valori della data devono essere in formato ISO 8601 (AAAA-MM-GG)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "I valori di data e ora devono essere in formato ISO 8601 (AAAA-MM-GG " "HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Scelta non valida ({value}) per il set a scelta {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Scelte non valide ({value}) per il set a scelta {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "Il valore deve essere un ID oggetto, non {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "Il valore deve essere un elenco di ID oggetto, non {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "È stato trovato un ID oggetto non valido: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Il campo obbligatorio non può essere vuoto." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Set base di scelte predefinite (opzionale)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Le scelte vengono ordinate automaticamente alfabeticamente" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "set di scelta dei campi personalizzati" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "set di scelte di campi personalizzati" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "È necessario definire scelte di base o extra." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "disposizione" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "config" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "cruscotto" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "cruscotti" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "tipi di oggetti" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "L'oggetto o gli oggetti a cui si applica questa regola." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "su creare" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Si attiva quando viene creato un oggetto corrispondente." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "in aggiornamento" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Si attiva quando viene aggiornato un oggetto corrispondente." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "in caso di eliminazione" +msgid "The types of event which will trigger this rule." +msgstr "I tipi di evento che attiveranno questa regola." -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Si attiva quando viene eliminato un oggetto corrispondente." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "all'inizio del lavoro" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "" -"Si attiva quando viene avviato un lavoro per un oggetto corrispondente." - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "sul posto di lavoro" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Si attiva quando termina un lavoro per un oggetto corrispondente." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "condizioni" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Una serie di condizioni che determinano se l'evento verrà generato." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "tipo di azione" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Dati aggiuntivi da passare all'oggetto azione" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "regola dell'evento" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "regole dell'evento" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"È necessario selezionare almeno un tipo di evento: creazione, aggiornamento," -" eliminazione, inizio processo e/o fine processo." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8282,7 +8628,7 @@ msgstr "" "chiamato il webhook. L'elaborazione dei modelli Jinja2 è supportata nello " "stesso contesto del corpo della richiesta." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available qui." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "intestazioni aggiuntive" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8308,11 +8654,11 @@ msgstr "" "Nome: Value. L'elaborazione dei modelli Jinja2 è supportata " "nello stesso contesto del corpo della richiesta (sotto)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "modello di corpo" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8325,11 +8671,11 @@ msgstr "" "timestamp, nome utente, id_richiesta," " e dato." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "segreto" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8340,15 +8686,15 @@ msgstr "" "che utilizza il segreto come chiave. Il segreto non viene trasmesso nella " "richiesta." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "Abilita la verifica del certificato SSL. Disabilita con cautela!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "Percorso del file CA" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8356,66 +8702,66 @@ msgstr "" "Il file di certificato CA specifico da utilizzare per la verifica SSL. " "Lascia vuoto per utilizzare le impostazioni predefinite del sistema." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "webhook" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "webhook" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "Non specificare un file di certificato CA se la verifica SSL è disabilitata." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "I tipi di oggetto a cui si applica questo link." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "testo del link" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Codice modello Jinja2 per il testo del link" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL del collegamento" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Codice modello Jinja2 per l'URL del collegamento" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "" "I collegamenti con lo stesso gruppo verranno visualizzati come menu a " "discesa" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "nuova finestra" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Forza l'apertura del link in una nuova finestra" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "link personalizzato" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "link personalizzati" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "I tipi di oggetto a cui si applica questo modello." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8423,115 +8769,162 @@ msgstr "" "Codice modello Jinja2. L'elenco degli oggetti da esportare viene passato " "come variabile di contesto denominata set di interrogazioni." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "Il valore predefinito è testo/semplice; charset=utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "estensione del file" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Estensione da aggiungere al nome del file renderizzato" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "come allegato" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Scarica il file come allegato" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "modello di esportazione" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "modelli di esportazione" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "«{name}\"è un nome riservato. Scegli un nome diverso." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "I tipi di oggetto a cui si applica questo filtro." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "condiviso" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "filtro salvato" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "filtri salvati" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "I parametri del filtro devono essere memorizzati come dizionario degli " "argomenti delle parole chiave." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "altezza dell'immagine" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "larghezza dell'immagine" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "allegato immagine" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "allegati di immagini" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" "Gli allegati di immagini non possono essere assegnati a questo tipo di " "oggetto ({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "gentile" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "voce nel diario" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "voci di diario" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Il journaling non è supportato per questo tipo di oggetto ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "segnalibro" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "segnalibri" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "" "I segnalibri non possono essere assegnati a questo tipo di oggetto ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "leggere" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "evento" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "notifica" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "notifiche" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Oggetti di questo tipo ({type}) non supportano le notifiche." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "gruppi" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "utenti" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "gruppo di notifiche" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "gruppi di notifica" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "sottoscrizione" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "sottoscrizioni" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "è eseguibile" @@ -8572,19 +8965,19 @@ msgstr "valore memorizzato nella cache" msgid "cached values" msgstr "valori memorizzati nella cache" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "filiale" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "rami" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "cambiamento graduale" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "modifiche graduali" @@ -8608,85 +9001,87 @@ msgstr "articolo etichettato" msgid "tagged items" msgstr "articoli etichettati" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Dati dello script" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Parametri di esecuzione dello script" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Le modifiche al database sono state annullate automaticamente." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Script interrotto con errore: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Si è verificata un'eccezione: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Le modifiche al database sono state annullate a causa di un errore." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "L'eliminazione è impedita da una regola di protezione: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Ignora" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Tipi di oggetti" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Convalida l'unicità" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Visibile" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Modificabile" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Tipo di oggetto correlato" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Set di scelta" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "È clonabile" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Valore minimo" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Valore massimo" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Validazione Regex" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Conta" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Ordina alfabeticamente" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Nuova finestra" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Come allegato" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8696,63 +9091,54 @@ msgstr "Come allegato" msgid "Data File" msgstr "File di dati" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Sincronizzato" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Immagine" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Dimensione (byte)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Leggi" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "Validazione SSL" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Inizio del lavoro" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Fine del lavoro" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Tipi di eventi" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Ruoli dei dispositivi" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Nome completo" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "ID della richiesta" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Commenti (brevi)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Linea" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Livello" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Messaggio" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Metodo" @@ -8783,37 +9169,37 @@ msgstr "Le regole di convalida devono essere passate come dizionario" msgid "Custom validation failed for {attribute}: {exception}" msgstr "Convalida personalizzata non riuscita per {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Attributo non valido»{name}\"per richiesta" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Attributo non valido»{name}\"per {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "La tua dashboard è stata reimpostata." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Widget aggiunto: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Widget aggiornato: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Widget eliminato: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Errore durante l'eliminazione del widget: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "" "Impossibile eseguire lo script: processo di lavoro RQ non in esecuzione." @@ -8861,10 +9247,6 @@ msgstr "SLAAC" msgid "Loopback" msgstr "Loopback" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Secondario" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8890,19 +9272,19 @@ msgstr "Testo in chiaro" msgid "Invalid IP address format: {address}" msgstr "Formato dell'indirizzo IP non valido: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Obiettivo di importazione" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Obiettivo di importazione (nome)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Obiettivo di esportazione" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Destinazione di esportazione (nome)" @@ -8967,16 +9349,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Prefissi che contengono questo prefisso o IP" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Lunghezza della maschera" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "Numero VLAN (1-4094)" @@ -8996,23 +9378,23 @@ msgid "Parent prefix" msgstr "Prefisso principale" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Macchina virtuale (nome)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Macchina virtuale (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Interfaccia (nome)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "Interfaccia VM (nome)" @@ -9040,19 +9422,19 @@ msgstr "Servizio (ID)" msgid "NAT inside IP address (ID)" msgstr "Indirizzo IP interno (ID) NAT" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "Indirizzo IP (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "indirizzo IP" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "IPv4 (ID) primario" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "IPv6 primario (ID)" @@ -9085,17 +9467,17 @@ msgstr "È richiesta la mascherina CIDR (ad es. /24)." msgid "Address pattern" msgstr "Schema di indirizzo" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Applica uno spazio unico" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "È privato" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9108,20 +9490,20 @@ msgstr "È privato" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Data aggiunta" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Gruppo VLAN" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9130,49 +9512,49 @@ msgstr "Gruppo VLAN" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Lunghezza del prefisso" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "È una piscina" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Trattare come completamente utilizzato" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "Assegnazione VLAN" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "Nome DNS" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocollo" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "ID gruppo" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9184,157 +9566,142 @@ msgstr "ID gruppo" msgid "Authentication type" msgstr "Tipo di autenticazione" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Chiave di autenticazione" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Autenticazione" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "VLAN VID minimo per bambini" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Numero massimo di VLAN per bambini" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Tipo di ambito" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "Intervalli di ID VLAN" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Ambito" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Sito e gruppo" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Porte" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Importa gli obiettivi del percorso" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Obiettivi del percorso di esportazione" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "RIR assegnato" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "Gruppo VLAN (se presente)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Dispositivo principale dell'interfaccia assegnata (se presente)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Macchina virtuale" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "VM principale dell'interfaccia assegnata (se presente)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Interfaccia assegnata" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "È primario" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Imposta questo indirizzo IP primario per il dispositivo assegnato" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Nessun dispositivo o macchina virtuale specificato; non può essere impostato" " come IP primario" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" "Nessuna interfaccia specificata; non può essere impostato come IP primario" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Tipo di autenticazione" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Tipo di ambito (app e modello)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "VLAN VID figlio minimo (impostazione predefinita: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "" -"Numero massimo di VLAN per bambini (impostazione predefinita: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Gruppo VLAN assegnato" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "Protocollo IP" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Obbligatorio se non assegnato a una VM" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Obbligatorio se non assegnato a un dispositivo" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} non è assegnato a questo dispositivo/macchina virtuale." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Obiettivi del percorso" @@ -9410,31 +9777,34 @@ msgstr "Assegnata a un'interfaccia" msgid "DNS Name" msgstr "Nome DNS" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "ID VLAN" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "VID minimo" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Contiene l'ID VLAN" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "VID massimo" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "ID VLAN" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9506,11 +9876,16 @@ msgstr "Indirizzo IP virtuale" msgid "Assignment already exists" msgstr "L'assegnazione esiste già" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "ID VLAN" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "VLAN per bambini" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9518,33 +9893,33 @@ msgstr "" "Elenco separato da virgole di uno o più numeri di porta. È possibile " "specificare un intervallo utilizzando un trattino." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Modello di servizio" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Porta/e" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Servizio" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Modello di servizio" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Da modello" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Personalizzato" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9585,7 +9960,7 @@ msgstr "ID gruppo" msgid "protocol" msgstr "protocollo" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "tipo di autenticazione" @@ -9601,10 +9976,6 @@ msgstr "Gruppo FHRP" msgid "FHRP groups" msgstr "Gruppi FHRP" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "priorità" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "Assegnazione del gruppo FHRP" @@ -9621,7 +9992,7 @@ msgstr "privato" msgid "IP space managed by this RIR is considered private" msgstr "Lo spazio IP gestito da questo RIR è considerato privato" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR" @@ -9879,22 +10250,6 @@ msgstr "" "Un servizio deve essere associato a un dispositivo o a una macchina " "virtuale." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "ID VLAN minimo" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "ID minimo consentito di una VLAN per bambini" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "ID VLAN massimo" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "ID massimo consentito di una VLAN per bambini" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "Gruppi VLAN" @@ -9907,39 +10262,40 @@ msgstr "Impossibile impostare scope_type senza scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Impossibile impostare scope_id senza scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Gli intervalli non possono sovrapporsi." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" "Il VID massimo per bambini deve essere maggiore o uguale al VID minimo per " -"bambini" +"bambini ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "Il sito specifico a cui è assegnata questa VLAN (se presente)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "Gruppo VLAN (opzionale)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "ID VLAN numerico (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Stato operativo di questa VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "La funzione principale di questa VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9948,11 +10304,11 @@ msgstr "" "La VLAN è assegnata al gruppo {group} (scopo: {scope}); non può essere " "assegnato anche al sito {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" msgstr "" -"Il VID deve essere compreso tra {minimum} e {maximum} per le VLAN in gruppo " +"Il VID deve essere compreso negli intervalli {ranges} per le VLAN in gruppo " "{group}" #: netbox/ipam/models/vrfs.py:30 @@ -9971,8 +10327,8 @@ msgstr "imporre uno spazio unico" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Impedire prefissi/indirizzi IP duplicati all'interno di questo VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF" @@ -10000,8 +10356,8 @@ msgstr "Numero siti" msgid "Provider Count" msgstr "Numero di fornitori" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Aggregati" @@ -10010,21 +10366,21 @@ msgid "Added" msgstr "Aggiunto" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Prefissi" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Utilizzo" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "Intervalli IP" @@ -10069,7 +10425,11 @@ msgstr "Oggetto assegnato" msgid "Scope Type" msgstr "Tipo di ambito" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "Gamme VID" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VID" @@ -10135,11 +10495,11 @@ msgstr "Interfacce dei dispositivi" msgid "VM Interfaces" msgstr "Interfacce VM" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Questo campo non può essere vuoto." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10147,23 +10507,37 @@ msgstr "" "Il valore deve essere passato direttamente (ad esempio «foo»: 123); non " "utilizzare un dizionario o un elenco." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} non è una scelta valida." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Tipo di contenuto non valido: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Valore non valido Specifica un tipo di contenuto come " "'.»." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "" +"Gli intervalli devono essere specificati nel modulo (inferiore, superiore)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "I limiti dell'intervallo devono essere definiti come numeri interi." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} deve implementare get_view_name ()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Autorizzazione non valida {permission} per modello {model}" @@ -10495,48 +10869,53 @@ msgstr "Rimuovi tag" msgid "{class_name} must specify a model class." msgstr "{class_name} deve specificare una classe del modello." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Nome di campo sconosciuto '{name}'nei dati dei campi personalizzati." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Valore non valido per il campo personalizzato '{name}»: {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Campo personalizzato '{name}'deve avere un valore univoco." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Campo personalizzato obbligatorio mancante '{name}»." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Fonte dati remota" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "percorso dati" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Percorso del file remoto (relativo alla radice dell'origine dati)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "sincronizzazione automatica abilitata" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Abilita la sincronizzazione automatica dei dati quando il file di dati viene" " aggiornato" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "data sincronizzata" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} deve implementare un metodo sync_data ()." @@ -10550,217 +10929,230 @@ msgid "Site Groups" msgstr "Gruppi del sito" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Ruoli Rack" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Elevazioni" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Gruppi di inquilini" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Gruppi di contatti" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Ruoli di contatto" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Assegnazioni di contatto" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Ruoli Rack" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Elevazioni" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Tipi di rack" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Moduli" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Contesti dei dispositivi virtuali" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Produttori" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Componenti del dispositivo" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Ruoli degli articoli di inventario" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Connessioni" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Cavi" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Collegamenti wireless" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Connessioni di interfaccia" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Connessioni alla console" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Connessioni di alimentazione" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Gruppi LAN wireless" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Prefisso e ruoli VLAN" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "Intervalli ASN" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "Gruppi VLAN" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Modelli di servizio" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Servizi" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Tunnel" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Gruppi di tunnel" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Terminazioni dei tunnel" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "VPN L2" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Terminazioni" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "Proposte IKE" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "Politiche IKE" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "Proposte IPSec" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "Criteri IPSec" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "Profili IPSec" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Virtualizzazione" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Dischi virtuali" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Tipi di cluster" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Gruppi di cluster" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Tipi di circuiti" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Gruppi di circuiti" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Assegnazioni di gruppo" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Terminazioni del circuito" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Fornitori" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Account dei fornitori" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Reti di fornitori" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Pannelli di alimentazione" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Configurazioni" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Contesti di configurazione" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Modelli di configurazione" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Personalizzazione" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10773,114 +11165,108 @@ msgstr "Personalizzazione" msgid "Custom Fields" msgstr "Campi personalizzati" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Scelte di campo personalizzate" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Link personalizzati" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Modelli di esportazione" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Filtri salvati" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Allegati di immagini" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operazioni" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Integrazioni" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Fonti di dati" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Regole dell'evento" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhook" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Offerte di lavoro" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Registrazione" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Gruppi di notifiche" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Voci di diario" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Registro delle modifiche" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 -msgid "Admin" -msgstr "Amministratore" - -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Utenti" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Gruppi" +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 +msgid "Admin" +msgstr "Amministratore" -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "Token API" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Autorizzazioni" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Sistema" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Plugin" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Cronologia della configurazione" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Attività in background" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Plugin" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10914,31 +11300,22 @@ msgstr "" "{template_extension} non è una sottoclasse di " "Netbox.plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"classe PluginTemplateExtension {template_extension} non definisce un modello" -" valido!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} deve essere un'istanza di Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} deve essere un'istanza di Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} deve essere un'istanza di Netbox.plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context deve essere un dizionario" @@ -11019,75 +11396,79 @@ msgstr "Impossibile aggiungere negozi al registro dopo l'inizializzazione" msgid "Cannot delete stores from registry" msgstr "Impossibile eliminare i negozi dal registro" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "cechi" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "danese" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Tedesco" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Inglese" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "spagnolo" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "Francese" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "Italiano" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Giapponese" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Olandese" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Polacco" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "portoghese" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Russo" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "turco" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "ucraino" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "Cinese" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Seleziona tutto" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Attiva tutto" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Attiva il menu a discesa" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Errore" @@ -11140,24 +11521,24 @@ msgstr "Rinominato {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Eliminato {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Registro delle modifiche" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "rivista" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "Impossibile sincronizzare i dati: nessun file di dati impostato." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Dati sincronizzati per {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Sincronizzato {count} {object_type}" @@ -11167,7 +11548,7 @@ msgstr "Sincronizzato {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} deve implementare get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11204,11 +11585,11 @@ msgstr "" msgid "The complete exception is provided below" msgstr "L'eccezione completa è riportata di seguito" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Versione Python" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "Versione NetBox" @@ -11232,14 +11613,26 @@ msgstr "su GitHub" msgid "Home Page" msgstr "Pagina iniziale" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Profilo" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Notifiche" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Abbonamenti" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Preferenze" @@ -11247,7 +11640,7 @@ msgstr "Preferenze" msgid "Change Password" msgstr "Cambia password" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11272,7 +11665,7 @@ msgstr "Cambia password" msgid "Cancel" msgstr "Annulla" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11346,7 +11739,7 @@ msgid "Superuser" msgstr "Superutente" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Personale" @@ -11361,19 +11754,19 @@ msgstr "Gruppi assegnati" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11394,7 +11787,7 @@ msgstr "I miei token API" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Token" @@ -11415,32 +11808,41 @@ msgstr "Aggiungi un token" msgid "Home" msgstr "Home" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "Motivo NetBox" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "Logo NetBox" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Documenti" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "API REST" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "Documentazione API REST" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "API GraphQL" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Supporto NetBox Labs" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Codice sorgente" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Comunità" @@ -11452,6 +11854,11 @@ msgstr "Data di installazione" msgid "Termination Date" msgstr "Data di cessazione" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Assegna gruppo" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Terminazioni del circuito di scambio" @@ -11469,6 +11876,14 @@ msgstr "Un lato" msgid "Z side" msgstr "Lato Z" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Assegna circuito" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Assegnazione del gruppo di circuiti" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Aggiungi circuito" @@ -11493,7 +11908,7 @@ msgstr "Inserisci" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11614,13 +12029,10 @@ msgstr "Nuovo valore" msgid "Changed" msgstr "Modificato" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Ultimo aggiornamento" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Taglia" @@ -11702,25 +12114,120 @@ msgstr "Preferenze utente" msgid "Job retention" msgstr "Conservazione del lavoro" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Lavoro" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Creato da" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Pianificazione" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "ogni %(interval)s verbale" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Cambia" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Differenza" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Precedente" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Prossimo" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Oggetto creato" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Oggetto eliminato" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Nessuna modifica" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Dati precedenti alla modifica" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Avvertenza: confronto delle modifiche non atomiche con il record di " +"modifiche precedente" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Dati successivi alla modifica" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Vedi tutto %(count)s Modifiche" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Conservazione del registro delle modifiche" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "giorni" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Indefinito" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Non installato" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Panoramica" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Installare" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Dettagli del plugin" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Riepilogo" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Licenza" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Cronologia delle versioni" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Istruzioni per l'installazione locale" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11732,8 +12239,8 @@ msgstr "Code in background" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11792,7 +12299,7 @@ msgid "Queued Jobs" msgstr "Lavori in coda" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11852,39 +12359,43 @@ msgstr "Esporta" msgid "System Status" msgstr "Stato del sistema" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "Versione NetBox" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Versione Django" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "Versione PostgreSQL" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Nome del database" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Dimensioni del database" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Non disponibile" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "Lavoratori RQ" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "coda predefinita" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Ora del sistema" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Configurazione attuale" @@ -11982,14 +12493,15 @@ msgstr "Non rastrellato" msgid "GPS Coordinates" msgstr "Coordinate GPS" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Mappalo" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Mappa" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Etichetta dell'asset" @@ -12009,19 +12521,19 @@ msgstr "Direzione" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT per" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NAT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Utilizzo dell'energia" @@ -12049,7 +12561,7 @@ msgid "Leg" msgstr "Gamba" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Aggiungi un servizio" @@ -12310,6 +12822,22 @@ msgstr "Trasparente" msgid "Clear All" msgstr "Cancella tutto" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Profondità di montaggio" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Unità di partenza" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Unità discendenti" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Elevazione del rack" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Aggiungi interfaccia figlio" @@ -12372,8 +12900,8 @@ msgstr "Larghezza del canale" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12463,49 +12991,33 @@ msgstr "Estrazione massima" msgid "Allocated Draw" msgstr "Pareggio assegnato" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Utilizzo dello spazio" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "discendente" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "ascendente" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Unità di partenza" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Profondità di montaggio" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Peso dello scaffale" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Peso massimo" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Peso totale" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Immagini ed etichette" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Solo immagini" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Solo etichette" @@ -12518,6 +13030,10 @@ msgstr "Aggiungi prenotazione" msgid "View List" msgstr "Visualizza elenco" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Seleziona la vista del rack" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Ordina per" @@ -12571,10 +13087,6 @@ msgstr "Ora del sito" msgid "Physical Address" msgstr "Indirizzo fisico" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Mappa" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Indirizzo di spedizione" @@ -12615,7 +13127,7 @@ msgstr "Aggiungi nuovo membro" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Azioni" @@ -12787,46 +13299,42 @@ msgid "Group Name" msgstr "Nome del gruppo" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Deve essere unico" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Clonabile" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Valore predefinito" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Cerca peso" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Logica del filtro" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Peso dello schermo" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Interfaccia utente visibile" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Interfaccia utente modificabile" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Regole di convalida" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Valore minimo" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Valore massimo" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Espressione regolare" @@ -12840,11 +13348,11 @@ msgstr "Classe Button" msgid "Assigned Models" msgstr "Modelli assegnati" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Testo del link" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "URL del collegamento" @@ -12869,6 +13377,14 @@ msgstr "" "Questa modifica riguarda solo tuo dashboard e non avrà alcun impatto " "sugli altri utenti." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "configurazione del widget" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Chiudi widget" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Aggiungi un widget" @@ -12901,13 +13417,9 @@ msgstr "Si è verificato un problema durante il recupero del feed RSS" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Inizio del lavoro" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Fine del lavoro" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Condizioni" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12949,20 +13461,15 @@ msgstr "Risultati in sospeso" msgid "Journal Entry" msgstr "Inserimento nel diario" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Conservazione del registro delle modifiche" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "giorni" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Gruppo di notifiche" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Indefinito" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Nessuno assegnato" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12977,54 +13484,6 @@ msgstr "Contesti di origine" msgid "New Journal Entry" msgstr "Nuova voce nel diario" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Cambia" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Differenza" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Precedente" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Prossimo" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Oggetto creato" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Oggetto eliminato" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Nessuna modifica" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Dati precedenti alla modifica" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Avvertenza: confronto delle modifiche non atomiche con il record di " -"modifiche precedente" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Dati successivi alla modifica" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Vedi tutto %(count)s Modifiche" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Rapporto" @@ -13035,7 +13494,7 @@ msgstr "Non si dispone dell'autorizzazione per eseguire gli script" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Esegui script" @@ -13048,27 +13507,27 @@ msgstr "Errore durante il caricamento dello script" msgid "Script no longer exists in the source file." msgstr "Lo script non esiste più nel file sorgente." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Ultima corsa" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Lo script non è più presente nel file sorgente" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Mai" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Corri ancora" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Nessuno script trovato" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -13083,6 +13542,14 @@ msgstr "" msgid "Results" msgstr "Risultati" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Soglia di log" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Tutti" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Oggetti con tag" @@ -13115,11 +13582,11 @@ msgstr "Tipo di contenuto HTTP" msgid "SSL Verification" msgstr "Verifica SSL" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Intestazioni aggiuntive" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Modello di corpo" @@ -13195,6 +13662,10 @@ msgstr "Opzioni di campo" msgid "Accessor" msgstr "Accessor" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "scelte" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Valore di importazione" @@ -13363,6 +13834,18 @@ msgid "The following objects will be deleted as a result of this action." msgstr "" "I seguenti oggetti verranno eliminati come risultato di questa azione." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "fa" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Nessuna notifica non letta" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Tutte le notifiche" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Seleziona" @@ -13430,15 +13913,23 @@ msgstr "Ricerca rapida" msgid "Saved filter" msgstr "Filtro salvato" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Ordinazione chiara" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Centro assistenza" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Amministratore Django" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Esci" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Effettua il login" @@ -13486,10 +13977,6 @@ msgstr "Creazione in blocco" msgid "Create Group" msgstr "Crea gruppo" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Assegna gruppo" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "IP virtuali" @@ -13623,10 +14110,6 @@ msgstr "Aggiungere un prefisso" msgid "Add VLAN" msgstr "Aggiungi VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "VID consentiti" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Distinguitore del percorso" @@ -13635,20 +14118,16 @@ msgstr "Distinguitore del percorso" msgid "Unique IP Space" msgstr "Spazio IP unico" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "Logo NetBox" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Errori" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Accedi" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Oppure" @@ -13726,11 +14205,6 @@ msgstr "Titolo" msgid "Phone" msgstr "Telefono" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Incarichi" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13770,7 +14244,7 @@ msgstr "Autorizzazioni assegnate" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Autorizzazione" @@ -13792,23 +14266,21 @@ msgid "Allocated Resources" msgstr "Risorse allocate" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "CPU virtuali" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Memoria" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Spazio su disco" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13849,7 +14321,7 @@ msgid "Cluster Group" msgstr "Gruppo Cluster" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Tipo di cluster" @@ -13858,13 +14330,13 @@ msgstr "Tipo di cluster" msgid "Virtual Disk" msgstr "Disco virtuale" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Risorse" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Aggiungi disco virtuale" @@ -14046,13 +14518,12 @@ msgstr "Aggiungi gruppo LAN wireless" msgid "Link Properties" msgstr "Proprietà dei link" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Terziario" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Inattivo" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Distanza" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14218,13 +14689,13 @@ msgstr "Link di contatto" msgid "Contact Description" msgstr "Descrizione del contatto" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Autorizzazione (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Gruppo (nome)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Gruppo di notifica (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14247,27 +14718,27 @@ msgid "If no key is provided, one will be generated automatically." msgstr "" "Se non viene fornita alcuna chiave, ne verrà generata una automaticamente." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "È personale" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "È Superuser" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Può visualizzare" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Può aggiungere" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Può cambiare" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Può eliminare" @@ -14361,49 +14832,49 @@ msgstr "autorizzazione" msgid "permissions" msgstr "autorizzazioni" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "preferenze utente" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Chiave '{path}'è un nodo foglia; non può assegnare nuove chiavi" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Chiave '{path}'è un dizionario; non può assegnare un valore diverso dal " "dizionario" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "scade" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "usato per ultimo" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "chiave" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "scrittura abilitata" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" "Consenti operazioni di creazione/aggiornamento/eliminazione utilizzando " "questa chiave" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "IP consentiti" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14412,11 +14883,11 @@ msgstr "" "vuoto per non avere restrizioni. Es: «10.1.1.0/24, 192.168.10.16/32, 2001:DB" " 8:1: :/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "gettone" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "gettoni" @@ -14424,18 +14895,10 @@ msgstr "gettoni" msgid "group" msgstr "gruppo" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "gruppi" - #: netbox/users/models/users.py:92 msgid "user" msgstr "utente" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "utenti" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Esiste già un utente con questo nome utente." @@ -14572,7 +15035,7 @@ msgstr "" "Dati YAML non validi. I dati devono avere la forma di più documenti o di un " "singolo documento comprendente un elenco di dizionari." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14581,6 +15044,22 @@ msgstr "" "Elenco non valido ({value}). Deve essere numerico e gli intervalli devono " "essere in ordine crescente." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Specifica uno o più intervalli numerici separati da virgole. Esempio: " +"1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Intervalli non validi ({value}). Deve essere un intervallo di numeri interi " +"in ordine crescente." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14748,6 +15227,26 @@ msgstr "" "Valore obbligatorio mancante per il parametro di query statica: " "'{static_params}»" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "La password deve contenere almeno un numero." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "La password deve contenere almeno una lettera maiuscola." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "La password deve contenere almeno una lettera minuscola." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"La password deve contenere almeno un numero, una lettera maiuscola e una " +"lettera minuscola." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14805,6 +15304,14 @@ msgstr "Aggiungi modello di esportazione" msgid "Import" msgstr "Importa" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Annulla l'iscrizione" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Abbonati" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Copia negli appunti" @@ -14845,15 +15352,11 @@ msgstr "Cerca NetBox" msgid "Open selector" msgstr "Apri selettore" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Nessuno assegnato" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Scrivere" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Il test deve definire csv_update_data." @@ -14862,18 +15365,18 @@ msgstr "Il test deve definire csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} non è un'espressione regolare valida." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" "{self.__class__.__name__} deve implementare get_required_permission ()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} deve implementare get_required_permission ()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14896,7 +15399,7 @@ msgid "Cluster type (ID)" msgstr "Tipo di cluster (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Cluster (ID)" @@ -14914,7 +15417,7 @@ msgid "Disk (GB)" msgstr "Disco (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Dimensioni (GB)" @@ -14934,6 +15437,10 @@ msgstr "Cluster assegnato" msgid "Assigned device within cluster" msgstr "Dispositivo assegnato all'interno del cluster" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Numero di serie" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14960,6 +15467,7 @@ msgstr "" "virtuali." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Disco" @@ -15001,39 +15509,39 @@ msgid "memory (MB)" msgstr "memoria (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "disco (GB)" +msgid "disk (MB)" +msgstr "disco (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Il nome della macchina virtuale deve essere univoco per cluster." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "macchina virtuale" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "macchine virtuali" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" "Una macchina virtuale deve essere assegnata a un sito e/o a un cluster." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" "Il cluster selezionato ({cluster}) non è assegnato a questo sito ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "" "È necessario specificare un cluster quando si assegna un dispositivo host." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." @@ -15041,7 +15549,7 @@ msgstr "" "Il dispositivo selezionato ({device}) non è assegnato a questo cluster " "({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -15050,18 +15558,18 @@ msgstr "" "La dimensione del disco specificata ({size}) deve corrispondere alla " "dimensione aggregata dei dischi virtuali assegnati ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "" "Deve essere un IPV{family} indirizzo. ({ip} è un IPv{version} indirizzo.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "L'indirizzo IP specificato ({ip}) non è assegnato a questa VM." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -15070,7 +15578,7 @@ msgstr "" "L'interfaccia principale selezionata ({parent}) appartiene a una macchina " "virtuale diversa ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -15079,7 +15587,7 @@ msgstr "" "L'interfaccia bridge selezionata ({bridge}) appartiene a una macchina " "virtuale diversa ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -15088,24 +15596,24 @@ msgstr "" "La VLAN senza tag ({untagged_vlan}) deve appartenere allo stesso sito della " "macchina virtuale principale dell'interfaccia o deve essere globale." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "dimensione (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "dimensione (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "disco virtuale" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "dischi virtuali" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Aggiunto {count} dispositivi da raggruppare {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Rimosso {count} dispositivi dal cluster {cluster}" @@ -15219,32 +15727,32 @@ msgid "Outside IP (ID)" msgstr "IP esterno (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "Politica IKE (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "Politica IKE (nome)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "Politica IPSec (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "Politica IPSec (nome)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (slug)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "Interfaccia VM (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (nome)" @@ -15419,7 +15927,7 @@ msgstr "versione" msgid "proposals" msgstr "proposte" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "chiave precondivisa" @@ -15601,17 +16109,24 @@ msgstr "WPA Enterprise" msgid "Authentication cipher" msgstr "Cifrario di autenticazione" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Unità di distanza" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "VLAN con bridge" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Interfaccia A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Interfaccia B" @@ -15619,39 +16134,52 @@ msgstr "Interfaccia B" msgid "Side B" msgstr "Lato B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "cifrario di autenticazione" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "gruppo LAN wireless" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "gruppi LAN wireless" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "LAN senza fili" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "interfaccia A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "interfaccia B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "distanza" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "unità di distanza" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "collegamento wireless" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "collegamenti wireless" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "" +"È necessario specificare un'unità quando si imposta una distanza wireless" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} non è un'interfaccia wireless." diff --git a/netbox/translations/ja/LC_MESSAGES/django.mo b/netbox/translations/ja/LC_MESSAGES/django.mo index 1a47ab87274..210a0699f03 100644 Binary files a/netbox/translations/ja/LC_MESSAGES/django.mo and b/netbox/translations/ja/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/ja/LC_MESSAGES/django.po b/netbox/translations/ja/LC_MESSAGES/django.po index 486d734ff58..d6e811e7350 100644 --- a/netbox/translations/ja/LC_MESSAGES/django.po +++ b/netbox/translations/ja/LC_MESSAGES/django.po @@ -4,18 +4,18 @@ # FIRST AUTHOR , YEAR. # # Translators: +# Jeremy Stretch, 2024 # Tatsuya Ueda , 2024 # teapot, 2024 -# Jeremy Stretch, 2024 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" -"Last-Translator: Jeremy Stretch, 2024\n" +"Last-Translator: teapot, 2024\n" "Language-Team: Japanese (https://app.transifex.com/netbox-community/teams/178115/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,16 +29,17 @@ msgstr "" msgid "Key" msgstr "Key" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "書き込み可能" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -50,11 +51,11 @@ msgstr "作成" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "有効期限" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "最終使用日" @@ -64,45 +65,45 @@ msgstr "最終使用日" msgid "Allowed IPs" msgstr "許可された IP" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "としてログイン {user}。" -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "ログアウトしました。" -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "設定が更新されました。" -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "LDAP認証されたユーザー資格情報は、NetBox内で変更することはできません。" -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "パスワードは正常に変更されました。" #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "計画中" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "プロビジョニング" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -111,9 +112,9 @@ msgstr "プロビジョニング" msgid "Active" msgstr "アクティブ" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "オフライン" @@ -126,98 +127,116 @@ msgstr "デプロビジョニング" msgid "Decommissioned" msgstr "廃止" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "プライマリ" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "セカンダリ" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "三次" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "非アクティブ" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "リージョン (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "リージョン (slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "サイトグループ (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "サイトグループ (slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -229,172 +248,197 @@ msgstr "サイトグループ (slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "サイト" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "サイト (slug)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "プロバイダ (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "プロバイダ (slug)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "プロバイダアカウント (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "プロバイダーアカウント (アカウント)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "プロバイダネットワーク (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "回線タイプ (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "回線タイプ (slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "サイト (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "ターミネーション A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "検索" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "回線" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "プロバイダネットワーク (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "回線 (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "回線 (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "回路グループ (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "回線グループ (slug)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -407,16 +451,17 @@ msgstr "ASN" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -426,8 +471,9 @@ msgstr "ASN" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -480,26 +526,28 @@ msgstr "ASN" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "説明" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -511,22 +559,22 @@ msgstr "説明" msgid "Provider" msgstr "プロバイダ" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "サービス ID" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -537,33 +585,33 @@ msgstr "サービス ID" msgid "Color" msgstr "色" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -576,9 +624,9 @@ msgstr "色" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -594,52 +642,52 @@ msgstr "色" msgid "Type" msgstr "タイプ" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "プロバイダアカウント" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -648,7 +696,7 @@ msgstr "プロバイダアカウント" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -656,7 +704,7 @@ msgstr "プロバイダアカウント" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -666,45 +714,49 @@ msgstr "プロバイダアカウント" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "ステータス" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -716,7 +768,7 @@ msgstr "ステータス" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -739,36 +791,37 @@ msgstr "ステータス" msgid "Tenant" msgstr "テナント" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "開通日" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "終了日" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "保証帯域 (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "サービス情報" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -778,37 +831,37 @@ msgstr "サービス情報" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "テナンシー" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "プロバイダネットワーク" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "ポートスピード (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "アップストリーム速度 (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "接続済みにする" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -816,46 +869,60 @@ msgstr "接続済みにする" msgid "Circuit Termination" msgstr "回線終端" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "終了詳細" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "優先度" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "割当プロバイダ" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "割当プロバイダアカウント" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "回線のタイプ" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "運用状況" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -863,7 +930,7 @@ msgstr "運用状況" msgid "Assigned tenant" msgstr "割当テナント" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -871,44 +938,44 @@ msgstr "割当テナント" msgid "Termination" msgstr "終了" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "プロバイダネットワーク" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -917,13 +984,13 @@ msgstr "プロバイダネットワーク" msgid "Location" msgstr "ロケーション" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -932,22 +999,22 @@ msgstr "ロケーション" msgid "Contacts" msgstr "連絡先" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -960,17 +1027,17 @@ msgstr "連絡先" msgid "Region" msgstr "リージョン" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -978,211 +1045,295 @@ msgstr "リージョン" msgid "Site group" msgstr "サイトグループ" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "属性" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "アカウント" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "タームサイド" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "割当" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "グループ" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "回線グループ" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "色" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "回線タイプ" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "回線タイプ" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "回線 ID" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "一意な回線 ID" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "状態" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "開通済" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "終端" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "保証帯域 (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "保証帯域" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "回線" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "回線" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "回線グループ" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "回線グループ" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "優先度" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "割当回線グループ" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "割当回線グループ" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "終端" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "ポート速度 (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "物理回線速度" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "アップストリーム速度 (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "アップストリーム速度 (ポート速度と異なる場合)" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "クロスコネクト ID" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ローカル・クロスコネクトの ID" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "パッチパネル/ポート" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "パッチパネル ID とポート番号" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "説明" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "回線終端" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "回線終端" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "回線終端は、サイトまたはプロバイダーネットワークに接続する必要があります。" -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "回線終端をサイトとプロバイダーネットワークの両方に接続することはできません。" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "名前" @@ -1191,11 +1342,12 @@ msgid "Full name of the provider" msgstr "プロバイダのフルネーム" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "slug" @@ -1231,40 +1383,45 @@ msgstr "プロバイダネットワーク" msgid "provider networks" msgstr "プロバイダネットワーク" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1279,7 +1436,7 @@ msgstr "プロバイダネットワーク" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1293,8 +1450,9 @@ msgstr "プロバイダネットワーク" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1334,9 +1492,9 @@ msgstr "プロバイダネットワーク" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1346,56 +1504,57 @@ msgstr "プロバイダネットワーク" msgid "Name" msgstr "名前" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "回線" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "回線 ID" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "サイド A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "サイド Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "保証帯域" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1404,6 +1563,12 @@ msgstr "保証帯域" msgid "Comments" msgstr "コメント" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "アサイメント" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "アカウント" @@ -1426,7 +1591,7 @@ msgstr "回路には終端が定義されていません {circuit}。" msgid "Swapped terminations for circuit {circuit}." msgstr "回路のスワップ端子 {circuit}。" -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "このユーザーには、このデータソースを同期する権限がありません。" @@ -1444,21 +1609,19 @@ msgid "Syncing" msgstr "同期中" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "完了" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "失敗" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1470,30 +1633,39 @@ msgstr "スクリプト" msgid "Reports" msgstr "レポート" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "保留中" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "予定済" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "実行中" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "エラー" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "更新" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "削除" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "終了しました" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "開始日時" @@ -1510,11 +1682,13 @@ msgstr "停止しました" msgid "Cancelled" msgstr "キャンセルされました" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "ローカル" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1524,8 +1698,8 @@ msgstr "ユーザ名" msgid "Only used for cloning with HTTP(S)" msgstr "HTTP (S) でのcloneに使用されます" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "パスワード" @@ -1547,24 +1721,63 @@ msgstr "AWS アクセスキー ID" msgid "AWS secret access key" msgstr "AWS シークレットアクセスキー" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "オブジェクトの作成" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "オブジェクトの更新" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "オブジェクトの削除" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "ジョブの開始" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "ジョブの完了" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "ジョブの失敗" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "ジョブのエラー" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "データソース (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "データソース (名前)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "ユーザ (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "ユーザ名" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1572,14 +1785,14 @@ msgstr "データソース (名前)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "有効" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1592,11 +1805,11 @@ msgstr "パラメータ" msgid "Ignore rules" msgstr "ignoreルール" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1606,76 +1819,99 @@ msgstr "ignoreルール" msgid "Data Source" msgstr "データソース" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "ファイル" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "データソース" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "作成" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "オブジェクトタイプ" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "以降に作成" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "以前に作成" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "以降に予定" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "以前に予定" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "以降に開始" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "以前に開始" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "以降に完了" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "以前に完了" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "ユーザ" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "時間" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "以降" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "以前" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "アクション" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1704,19 +1940,19 @@ msgstr "同期するファイルをアップロードするか、データファ msgid "Rack Elevations" msgstr "ラック図" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "電源" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1733,7 +1969,9 @@ msgstr "バナー" msgid "Pagination" msgstr "ページネーション" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "バリデーション" @@ -1743,7 +1981,7 @@ msgstr "バリデーション" msgid "User Preferences" msgstr "ユーザ設定" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1766,10 +2004,48 @@ msgstr "現在の値: {value}" msgid " (default)" msgstr " (デフォルト)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "時刻" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "ユーザ名" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "リクエスト ID" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "アクション" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "変更前データ" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "変更後データ" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "オブジェクト変更" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "オブジェクト変更" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "このオブジェクトタイプ ({type}) では変更ログはサポートされていません。" + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "作成日時" @@ -1802,14 +2078,14 @@ msgstr "現在の設定" msgid "Config revision #{id}" msgstr "設定履歴 #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1817,107 +2093,108 @@ msgstr "設定履歴 #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "タイプ" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "有効" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ignoreルール" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "同期時に除外するファイル名のパターン (1 行に 1 つ)" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "パラメータ" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "最終同期日時" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "データソース" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "データソース" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "不明なバックエンドタイプ: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "同期を開始できません。同期はすでに進行中です。" -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " msgstr "バックエンドの初期化中にエラーが発生しました。依存関係をインストールする必要があります。 " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "最終更新日時" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "パス" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "データソースのルートを基準にしたファイルパス" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "サイズ" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "ハッシュ" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "64 桁の 16 進数でなければなりません。" -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "ファイルデータの SHA256 ハッシュ" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "データファイル" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "データファイル" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "自動同期レコード" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "自動同期レコード" @@ -1941,58 +2218,92 @@ msgstr "管理対象ファイル" msgid "managed files" msgstr "管理対象ファイル" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "予定日時" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "間隔" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "繰り返し間隔 (分)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "開始日時" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "完了日時" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "データ" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "エラー" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "ジョブ ID" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "ジョブ" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "ジョブ" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "このオブジェクトタイプにはジョブを割り当てられません ({type})。" -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "ジョブ終了のステータスが無効です。選択肢は以下のとおりです。 {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "enqueue () は schedule_at と immediate の両方の値を指定して呼び出すことはできません。" + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "削除は保護ルールによって禁止されています。 {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "フルネーム" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "オブジェクト" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "リクエスト ID" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "有効" @@ -2007,51 +2318,63 @@ msgid "Last updated" msgstr "最終更新日" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "オブジェクト" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "間隔" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "バージョン" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "パッケージ" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "最終更新日" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "NetBox の最小バージョン" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "NetBoxの最大バージョン" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "プラグインデータが見つかりません" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "著者" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "著者の電子メール" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "インストール済" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "認定済" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "プラグインが見つかりません" +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "公開済" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "インストール済バージョン" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "最新バージョン" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2065,7 +2388,7 @@ msgstr "労働者" msgid "Host" msgstr "ホスト" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "ポート" @@ -2113,62 +2436,72 @@ msgstr "PID" msgid "No workers found" msgstr "作業者が見つかりませんでした" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "キューに入っているジョブ #{id} 同期するには {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "復元された設定リビジョン #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "ジョブ {job_id} 見つかりません" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "ジョブ {id} が削除されました。" -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "ジョブの削除中にエラーが発生しました {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "ジョブ {id} 見つかりません。" -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "ジョブ {id} が再エンキューされました。" -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "ジョブ {id} キューに追加されました。" -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "ジョブ {id} 停止されました。" -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "ジョブを停止できませんでした {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "プラグインカタログを読み込めませんでした" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "プラグイン {name} が見つかりません" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "ポジション (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "ファシリティ ID" @@ -2176,8 +2509,8 @@ msgstr "ファシリティ ID" msgid "Staging" msgstr "ステージング" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "廃止" @@ -2236,27 +2569,39 @@ msgstr "利用可能" msgid "Deprecated" msgstr "廃止済" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "ミリメートル" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "インチ" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "前面から背面" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "背面から前面" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2272,278 +2617,273 @@ msgstr "インチ" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "親" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "子" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "前面" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "背面" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "検証" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "在庫" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "前面から背面" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "背面から前面" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "左から右" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "右から左" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "側面から背面" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "パッシブ" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "混合" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (ロック無)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (ロック有)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "California Style" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "International/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "独自規格" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "その他" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/International" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "物理" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "仮想" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "無線" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "仮想インタフェース" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "ブリッジ" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "リンクアグリゲーション (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "イーサネット (固定)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "イーサネット (モジュール)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "イーサネット (バックプレーン)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "セルラー" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "シリアル" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "同軸" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "スタック" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "半二重" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "全二重" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "自動" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "アクセス" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "タグ付き" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "タグ付き (全て)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "IEEE スタンダード" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "パッシブ 24V (2 ペア)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "パッシブ 24V (4ペア)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "パッシブ 48V (2 ペア)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "パッシブ 48V (4ペア)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "カッパー" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "光ファイバー" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "ファイバー" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "接続済" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "キロメートル" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "メートル" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "センチメートル" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "マイル" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "フィート" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "キログラム" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "グラム" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "ポンド" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "オンス" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "プライマリ" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "冗長" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "単相" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "三相" @@ -2557,330 +2897,335 @@ msgstr "MAC アドレス形式が無効です: {value}" msgid "Invalid WWN format: {value}" msgstr "WWN 形式が無効です: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "親リージョン (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "親リージョン (slug)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "親サイトグループ (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "親サイトグループ (slug)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "グループ (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "グループ (slug)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "AS (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "親の場所 (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "親の場所 (スラッグ)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "ロケーション (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "ロケーション (slug)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "メーカ (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "メーカ (slug)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "ラックタイプ (slug)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "ラックタイプ (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "ロール (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "ロール (slug)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "ラック (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "ユーザ (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "ユーザ (名前)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "メーカ (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "メーカ (slug)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "デフォルトプラットフォーム (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "デフォルトプラットフォーム (slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "正面画像がある" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "背面画像がある" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "コンソールポートがある" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "コンソールサーバポートがある" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "電源ポートがある" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "電源コンセントがある" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "インタフェースがある" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "パススルーポートがある" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "モジュールベイがある" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "デバイスベイがある" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "在庫品目がある" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "デバイスタイプ (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "モジュールタイプ (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "電源ポート (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "親在庫品目 (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "設定テンプレート (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "デバイスタイプ (slug)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "親デバイス (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "プラットフォーム (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "プラットフォーム (slug)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "サイト名 (slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "ペアレントベイ (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "VM クラスタ (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "クラスタグループ (slug)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "クラスタグループ (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "デバイスモデル (slug)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "奥行きをすべて使うか" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC アドレス" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "プライマリ IP がある" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "帯域外 IP がある" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "バーチャルシャーシ (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "バーチャルシャーシのメンバーか" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "仮想デバイスコンテキストあり" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "デバイスモデル" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "インタフェース (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "モジュールタイプ (モデル)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" msgstr "モジュールベイ (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "デバイス (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "ラック (名前)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "デバイス (名前)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "デバイスタイプ (モデル)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "デバイスロール (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "デバイスロール (slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "バーチャルシャーシ (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2889,33 +3234,33 @@ msgstr "バーチャルシャーシ (ID)" msgid "Virtual Chassis" msgstr "バーチャルシャーシ" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "モジュール (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "ケーブル (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "割当 VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "割当 VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2932,121 +3277,125 @@ msgstr "割当 VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "バーチャルシャーシインタフェース" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "バーチャルシャーシインタフェース (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "インタフェースの種類" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "親インタフェース (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "ブリッジインタフェース (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "LAG インタフェース (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "仮想デバイスコンテキスト" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "仮想デバイスコンテキスト (識別子)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "無線 LAN" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "無線リンク" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "親モジュールベイ (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "インストール済みモジュール (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "インストール済みデバイス (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "インストール済みデバイス (名前)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "マスター (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "マスター (名前)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "テナント (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "テナント (slug)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "未終端" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "電源盤 (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3054,13 +3403,13 @@ msgstr "電源盤 (ID)" msgid "Tags" msgstr "タグ" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3072,168 +3421,114 @@ msgid "" "created.)" msgstr "英数字の範囲が使用できます。(作成する名前の数と一致する必要があります)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "グループ" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "連絡先名" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "連絡先電話番号" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "連絡先電子メール" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "タイムゾーン" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "ロール" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "シリアル番号" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "アセットタグ" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "メーカ" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "フォームファクタ" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "幅" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "高さ (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "降順" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "外形の幅" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "外形の奥行" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "外形の単位" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "取り付け奥行き" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3241,31 +3536,127 @@ msgstr "取り付け奥行き" msgid "Weight" msgstr "重量" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "最大重量" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "重量単位" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "ラックタイプ" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "外形寸法" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "寸法" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "ナンバリング" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "ロール" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "シリアル番号" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "アセットタグ" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "エアフロー" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3275,158 +3666,132 @@ msgstr "重量単位" msgid "Rack" msgstr "ラック" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "ハードウェア" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "メーカ" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "デフォルトプラットフォーム" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "パーツ番号" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "ユニット数" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "ラック利用率に含めない" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "エアフロー" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "デバイスタイプ" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "モジュールタイプ" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "シャーシ" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "VMのロール" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "設定テンプレート" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "デバイスタイプ" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "デバイスロール" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "プラットフォーム" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3437,7 +3802,7 @@ msgstr "プラットフォーム" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3445,7 +3810,7 @@ msgstr "プラットフォーム" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3453,7 +3818,7 @@ msgstr "プラットフォーム" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3463,23 +3828,23 @@ msgstr "プラットフォーム" msgid "Device" msgstr "デバイス" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "設定" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "モジュールタイプ" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3488,7 +3853,7 @@ msgstr "モジュールタイプ" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3497,141 +3862,142 @@ msgstr "モジュールタイプ" msgid "Label" msgstr "ラベル" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "長さ" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "長さの単位" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "ドメイン" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "電源盤" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "供給電源" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "電力相" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "電圧" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "アンペア数" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "最大使用率" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "最大消費電力" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "最大消費電力 (ワット)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "割当電力" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "割当消費電力 (ワット)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "電源ポート" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "供給端子" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "管理のみ" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "PoE モード" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE タイプ" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "無線ロール" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "モジュール" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "仮想デバイスコンテキスト" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "速度" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3645,525 +4011,530 @@ msgstr "速度" msgid "Mode" msgstr "モード" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN グループ" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "タグなし VLAN" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "タグ付き VLAN" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "無線 LAN グループ" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "無線 LAN" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "アドレス" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "オペレーション" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "関連インタフェース" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "802.1Q スイッチング" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "VLAN を割り当てるには、インタフェースモードを指定する必要があります" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "アクセスインタフェースにはタグ付き VLAN を割り当てることはできません。" -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "親リージョン名" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "親サイトグループ名" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "割当リージョン" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "割当グループ" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "使用可能なオプション" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "割当サイト" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "親ロケーション" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "ロケーションが見つかりません。" -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "割当テナント名" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "割当ロール名" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "このラックタイプのメーカ" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "ラックタイプ" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "ラック内の一番小さい番号の位置" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "レール間の幅 (インチ)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "外形寸法の単位" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "重量の単位" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "割当テナント名" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "割当ロール名" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "エアフロー" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "親サイト" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "ラックのロケーション (存在する場合)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "単位" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "カンマ区切りのユニット番号" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "製造メーカ" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "デフォルトのプラットフォーム (オプション)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "デバイス重量" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "デバイス重量の単位" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "モジュール重量" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "モジュール重量の単位" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "プラットフォーム割り当てをこのメーカに限定する" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "割当ロール" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "デバイスタイプメーカ" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "デバイスタイプモデル" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "割当プラットフォーム" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "バーチャルシャーシ" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "クラスタ" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "仮想化クラスタ" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "割当ロケーション (存在する場合)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "割当ラック (存在する場合)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "面" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "ラック取付面" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "親デバイス (子デバイス用)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "デバイスベイ" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "取付られているデバイスベイ (子デバイス用)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "エアフロー" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "取付られているデバイス" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "モジュールベイ" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "取付られているモジュールベイ" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "モジュールタイプ" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "構成要素を複製" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" msgstr "関連する構成要素を自動的に登録 (デフォルト)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "既存の構成要素を採用" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "既存の構成要素を採用" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "ポートタイプ" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "ポート速度 (bps)" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "コンセントタイプ" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "このコンセントに給電する電源ポート" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "電気位相 (三相回路用)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "親インタフェース" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "ブリッジインタフェース" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Lag" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "親 LAG インタフェース" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "VDC" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "VDC 名をコンマで区切り、二重引用符で囲みます。例:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "物理媒体" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "デュプレックス" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "PoEモード" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "PoEタイプ" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "IEEE 802.1Q モード(L2 インタフェース用)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "割当 VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "RF ロール" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "無線ロール (AP/ステーション)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} デバイスには割り当てられていません {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "背面ポート" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "対応する背面ポート" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "物理媒体の分類" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "取付済みデバイス" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "このベイ内に取付された子デバイス" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "子デバイスが見つかりません。" -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "親在庫品目" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "構成要素タイプ" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "構成要素タイプ" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "コンポーネント名" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "構成要素名" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "コンポーネントが見つかりません: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "サイド A デバイス" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "デバイス名" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "サイド A タイプ" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "終了タイプ" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "サイド A 名" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "終端名" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "サイド B デバイス" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "サイド B タイプ" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "サイド B 名" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "接続ステータス" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "サイド {side_upper}: {device} {termination_object} は既に接続されています" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} サイドターミネーションが見つかりません: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "マスター" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "マスターデバイス" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "親サイトの名前" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "上流電源盤" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "プライマリまたは冗長" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "電源タイプ (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "単相または三相" @@ -4181,23 +4552,32 @@ msgid "" "parent device/VM, or they must be global" msgstr "タグ付き VLAN ({vlans}) はインタフェースの親デバイス/VMと同サイトに属しているか、グローバルである必要があります" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." msgstr "位置が定義されていないモジュールベイには、プレースホルダー値のあるモジュールを挿入できません。" -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"モジュールベイツリーの{level}レベルにはプレースホルダ値のあるモジュールをインストールできませんが、 " +"{tokens}個のプレースホルダが与えられています。" + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr " {model} {name} は既にモジュールに属しているので採用できません" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "{model} {name} は既に存在しています" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4206,7 +4586,7 @@ msgstr "{model} {name} は既に存在しています" msgid "Power Panel" msgstr "電源盤" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4216,15 +4596,15 @@ msgstr "電源タップ" msgid "Side" msgstr "サイド" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "デバイスステータス" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "親リージョン" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4232,62 +4612,67 @@ msgstr "親リージョン" msgid "Parent group" msgstr "親グループ" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "ファシリティ" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "ラックタイプ" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "機能" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "画像" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "構成要素" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "サブデバイスロール" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "モデル" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "OOB IP アドレスを持っている" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "バーチャルシャーシメンバー" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "仮想デバイスコンテキストがある" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "クラスタグループ" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "ケーブル接続済" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "専有済" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4299,43 +4684,43 @@ msgstr "専有済" msgid "Connection" msgstr "接続" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "種類" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "管理のみ" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "無線チャネル" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "チャネル周波数 (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "チャネル幅 (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "送信出力 (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4345,7 +4730,7 @@ msgstr "送信出力 (dBm)" msgid "Cable" msgstr "ケーブル" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "自動検出" @@ -4354,119 +4739,97 @@ msgstr "自動検出" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "バーチャルシャーシメンバーはすでに{vc_position}に存在します 。" -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "連絡先情報" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "ラックロール" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "在庫管理" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Slug" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "外形寸法" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "定義済みのラックタイプを選択するか、以下で物理特性を設定してください。" -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "寸法" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "在庫管理" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." msgstr "カンマ区切りのユニット ID 。範囲はハイフンを使用して指定できます。" -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "予約" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Slug" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "シャーシ" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "デバイスロール" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "デバイスが使用している最も小さいユニット番号" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "仮想シャーシ内の位置" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "優先度" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "仮想シャーシ内の優先度" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "このモジュールタイプに関連する構成要素を自動的に入力する" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "最大長は32767です (任意の単位)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "特性" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "コンソールポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "コンソールサーバポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "全面ポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "インタフェーステンプレート" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "電源コンセントテンプレート" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "電源ポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "背面ポートテンプレート" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4477,7 +4840,7 @@ msgstr "背面ポートテンプレート" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4486,7 +4849,7 @@ msgstr "背面ポートテンプレート" msgid "Interface" msgstr "インタフェース" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4494,14 +4857,14 @@ msgstr "インタフェース" msgid "Console Port" msgstr "コンソールポート" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "コンソールサーバポート" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4512,8 +4875,8 @@ msgstr "コンソールサーバポート" msgid "Front Port" msgstr "前面ポート" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4525,76 +4888,76 @@ msgstr "前面ポート" msgid "Rear Port" msgstr "背面ポート" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "電源ポート" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "電源コンセント" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "構成要素割り当て" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "在庫品目は1つの構成要素にのみ割り当てることができます。" -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "LAG インタフェース" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "子デバイス" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." msgstr "まず子デバイスを作成し、親デバイスのサイトとラックに割り当てる必要があります。" -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "コンソールポート" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "コンソールサーバポート" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "前面ポート" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "電源コンセント" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "在庫品目" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "在庫品目ロール" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "プライマリ IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "プライマリ IPv6" @@ -4647,7 +5010,7 @@ msgid "" msgstr "" "前面ポートの数 ({frontport_count}) は選択した背面ポートの数 ({rearport_count}) と一致する必要があります。" -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4671,7 +5034,7 @@ msgstr "最初の VC メンバーのポジションを指定する必要があ #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "ラベル" @@ -4788,178 +5151,178 @@ msgid "" "module type." msgstr "構成要素テンプレートは、デバイスタイプまたはモジュールタイプのいずれかに関連付ける必要があります。" -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "コンソールポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "コンソールポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "コンソールサーバポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "コンソールサーバポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "最大消費電力" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "割当消費電力" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "電源ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "電源ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "割当消費電力は最大消費電力 ({maximum_draw}W) を超えることはできません。" -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "供給端子" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "電力相 (三相電源用)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "電源コンセントテンプレート" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "電源コンセントテンプレート" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "親電源ポート ({power_port}) は同じデバイスタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "親電源ポート ({power_port}) は同じモジュールタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "管理のみ" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "ブリッジインタフェース" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "無線ロール" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "インタフェーステンプレート" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "インタフェーステンプレート" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "インタフェースを自分自身にブリッジすることはできません。" -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "ブリッジインタフェース ({bridge}) は同じデバイスタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "ブリッジインタフェース ({bridge}) は同じモジュールタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "背面ポート位置" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "前面ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "前面ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "背面ポート ({name}) は同じデバイスタイプに属している必要があります" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " "positions" msgstr "背面ポートの位置 ({position}) が無効です; 背面ポート {name} は{count}箇所しかありません" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "位置" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "背面ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "背面ポートテンプレート" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "位置" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "取付済み構成要素名を変更する際に参照する識別子" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "モジュールベイテンプレート" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "モジュールベイテンプレート" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "デバイスベイテンプレート" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "デバイスベイテンプレート" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -4967,21 +5330,21 @@ msgid "" msgstr "" "デバイスベイを許可するためには、デバイスタイプ ({device_type}) のサブデバイスロールを「parent」に設定する必要があります。" -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "パーツ ID" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "メーカ指定の部品識別子" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "在庫品目テンプレート" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "在庫品目テンプレート" @@ -5122,27 +5485,27 @@ msgstr "選択したチャンネルによって設定されます (設定され msgid "transmit power (dBm)" msgstr "送信パワー (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "無線 LAN" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "タグなし VLAN" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "タグ付き VLAN" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "インタフェース" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "インタフェース" @@ -5157,7 +5520,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type} インタフェースは接続済みとしてマークできません。" #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "インタフェースを自身の親にすることはできません。" @@ -5308,90 +5671,96 @@ msgid "" " ({frontport_count})" msgstr "ポジションの数は、マップされた前面ポートの数より少なくすることはできません ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "モジュールベイ" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "モジュールベイ" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "モジュールベイは、その中に取り付けられているモジュールに属することはできません。" + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "デバイスベイ" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "デバイスベイ" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "このタイプ ({device_type}) のデバイスは、デバイスベイをサポートしていません。" -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "デバイスをそれ自体に挿入することはできません。" -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." msgstr "指定されたデバイスは取付できません。デバイスは既に {bay} に取付られています 。" -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "在庫品目ロール" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "在庫品目ロール" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "シリアル番号" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "アセットタグ" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "この部品を識別するために使用される一意のタグ" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "自動検出" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "このアイテムは自動的に検出されました" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "在庫品目" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "在庫品目" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "自分を親として割り当てることはできません。" -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "親在庫品目は同じデバイスに属していません。" -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "子を持つ在庫品目は移動できません" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "在庫品目を別のデバイスの構成要素に割り当てることはできません" @@ -5404,6 +5773,7 @@ msgid "manufacturers" msgstr "メーカ" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "型" @@ -5419,7 +5789,7 @@ msgstr "パーツ番号" msgid "Discrete part number (optional)" msgstr "個別の部品番号 (オプション)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "高さ (U)" @@ -5449,7 +5819,8 @@ msgid "" "device type is neither a parent nor a child." msgstr "親デバイスはデバイスベイに子デバイスを収納します。このデバイスタイプが親でも子供でもない場合は、空白のままにしてください。" -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "エアフロー" @@ -5491,163 +5862,163 @@ msgstr "このデバイスを親デバイスとして分類解除する前に、 msgid "Child device types must be 0U." msgstr "子デバイスタイプは 0U でなければなりません。" -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "モジュールタイプ" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "モジュールタイプ" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "仮想マシンをこのロールに割り当てることができます" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "デバイスロール" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "デバイスロール" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "オプションで、このプラットフォームを特定のメーカのデバイスに限定できます" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "プラットフォーム" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "プラットフォーム" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "このデバイスが果たす機能" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "製造元によって割当られた、シャーシのシリアル番号" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "このデバイスを識別するために使用される一意のタグ" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "ポジション (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "ラックフェイス" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "プライマリ IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "プライマリ IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "out-of-band IP" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "VCポジション" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "バーチャルシャーシポジション" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "VC プライオリティ" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "バーチャルシャーシのマスター選択優先順位" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "緯度" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "10 進数形式の GPS 座標 (xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "経度" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "デバイス名はサイトごとに一意である必要があります。" -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "デバイス" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "デバイス" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "ラック {rack} はサイト{site}に属していません 。" -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "ロケーション {location} はサイト{site}に属していません 。" -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "ラック {rack} はロケーション{location}に属していません 。" -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "ラックを割り当てないとラックフェースは選択できません。" -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "ラックを割り当てないとラックポジションを選択できません。" -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "ポジションは 0.5 ラックユニット単位で入力する必要があります。" -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "ラックの位置を定義するときは、ラックの面を指定する必要があります。" -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "0U デバイスタイプ ({device_type}) をラックポジションに割り当てることはできません。" -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." msgstr "子デバイスタイプをラックフェースに割り当てることはできません。これは親デバイスの属性です。" -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." msgstr "子デバイスタイプをラックポジションに割り当てることはできません。これは親デバイスの属性です。" -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5656,22 +6027,22 @@ msgstr "" "U{position} が既に占有されているか、このデバイスタイプを収容するのに十分なスペースがありません: {device_type} " "({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} は IPv4 アドレスではありません。" -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "指定された IP アドレス ({ip}) はこのデバイスに割り当てられていません。" -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} IPv6 アドレスではありません。" -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5680,84 +6051,84 @@ msgstr "" "割当られたプラットフォームは{platform_manufacturer} のデバイスタイプに限定されます 。しかし、このデバイスのタイプは " "{devicetype_manufacturer}に属します。" -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "割当クラスタは別のサイトに属しています ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "仮想シャーシに割当られたデバイスには、その位置が定義されている必要があります。" -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "モジュール" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "モジュール" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "モジュールは、割当デバイスに属するモジュールベイ内に取り付ける必要があります ({device})。" -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "ドメイン" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "バーチャルシャーシ" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "選択したマスター ({master}) はこの仮想シャーシに割り当てられていません。" -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " "form a cross-chassis LAG interfaces." msgstr "バーチャルシャーシ{self}を削除できません 。クロスシャーシ LAG インタフェースを形成するメンバーインタフェースがあります。" -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "識別子" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "親デバイスに固有の数値識別子" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "コメント" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "仮想デバイスコンテキスト" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "仮想デバイスコンテキスト" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip}は IPv{family}アドレスではありません。" -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "プライマリ IP アドレスは、割当デバイスのインタフェースに属している必要があります。" #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "重量" @@ -5832,157 +6203,169 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "AC 電源の電圧を負にすることはできません" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "ラックロール" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "ラックロール" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "ファシリティ ID" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "ローカル識別子" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "機能的ロール" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "このラックの識別に使用される固有のタグ" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "幅" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "レール間の幅" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "ラックユニットの高さ" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "開始ユニット" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "ラック用開始ユニット" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "降順" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "ユニットには上から下に番号が付けられています" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "外形の幅" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "ラックの外形寸法(幅)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "外形の奥行" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "ラックの外形寸法(奥行き)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "外形の単位" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "最大重量" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "ラックの最大積載量" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "取り付け奥行き" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." msgstr "マウントされたデバイスの最大奥行き (mm)。4 支柱ラックの場合、これは前面レールと背面レールの間の距離です。" -#: netbox/dcim/models/racks.py:221 +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "最大重量" + +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "ラックの最大積載量" + +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "フォームファクタ" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "ラックタイプ" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "ラックタイプ" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "外形の幅/奥行きを設定する場合は単位を指定する必要があります" + +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 +msgid "Must specify a unit when setting a maximum weight" +msgstr "最大重量を設定する場合は単位を指定する必要があります" + +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "ラックロール" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "ラックロール" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "ファシリティ ID" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "ローカル識別子" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "機能的ロール" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "このラックの識別に使用される固有のタグ" + +#: netbox/dcim/models/racks.py:359 msgid "rack" msgstr "ラック" -#: netbox/dcim/models/racks.py:222 +#: netbox/dcim/models/racks.py:360 msgid "racks" msgstr "ラック" -#: netbox/dcim/models/racks.py:237 +#: netbox/dcim/models/racks.py:375 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "割当ロケーションは親サイト ({site}) に属している必要があります。" -#: netbox/dcim/models/racks.py:241 -msgid "Must specify a unit when setting an outer width/depth" -msgstr "外形の幅/奥行きを設定する場合は単位を指定する必要があります" - -#: netbox/dcim/models/racks.py:245 -msgid "Must specify a unit when setting a maximum weight" -msgstr "最大重量を設定する場合は単位を指定する必要があります" - -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " "devices." msgstr "現在取付られているデバイスを収納するには、ラックは少なくとも{min_height} U 必要です 。" -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " "installed devices." msgstr "現在取付られているデバイスを収納するには、ラックユニット番号は {position} 以下で始まる必要があります 。" -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "ロケーションは同じサイト {site} のものでなければなりません。 。" -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "単位" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "ラック予約" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "ラック予約" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr " {height}U ラックのユニットが無効です: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "次のユニットはすでに予約されています: {unit_list}" @@ -6084,11 +6467,11 @@ msgstr "終端 A" msgid "Termination B" msgstr "終端 B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "デバイス A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "デバイス B" @@ -6123,13 +6506,13 @@ msgid "Reachable" msgstr "到達可能" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "デバイス" @@ -6139,17 +6522,17 @@ msgid "VMs" msgstr "VM" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "設定テンプレート" @@ -6157,22 +6540,22 @@ msgstr "設定テンプレート" msgid "Site Group" msgstr "サイトグループ" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP アドレス" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "IPv4 アドレス" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "IPv6 アドレス" @@ -6209,10 +6592,10 @@ msgstr "電源ポート" msgid "Power outlets" msgstr "電源コンセント" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6222,8 +6605,8 @@ msgstr "電源コンセント" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "インタフェース" @@ -6249,8 +6632,8 @@ msgid "Module Bay" msgstr "モジュールベイ" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6259,30 +6642,30 @@ msgstr "モジュールベイ" msgid "Inventory Items" msgstr "在庫品目" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "ケーブル色" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "対向" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "接続済みとしてマークする" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "最大電力 (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "割当電力 (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6291,12 +6674,12 @@ msgstr "割当電力 (W)" msgid "IP Addresses" msgstr "IP アドレス" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP グループ" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6307,52 +6690,52 @@ msgstr "FHRP グループ" msgid "Tunnel" msgstr "トンネル" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "管理のみ" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "取付済みモジュール" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "モジュールシリアル番号" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "モジュール資産タグ" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "モジュールステータス" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "構成要素" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "アイテム" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "デバイスタイプ" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "モジュールタイプ" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "プラットフォーム" @@ -6371,12 +6754,13 @@ msgid "U Height" msgstr "U 高さ" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "インスタンス" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6385,9 +6769,9 @@ msgstr "インスタンス" msgid "Console Ports" msgstr "コンソールポート" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6396,9 +6780,9 @@ msgstr "コンソールポート" msgid "Console Server Ports" msgstr "コンソールサーバポート" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6407,9 +6791,9 @@ msgstr "コンソールサーバポート" msgid "Power Ports" msgstr "電源ポート" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6418,9 +6802,9 @@ msgstr "電源ポート" msgid "Power Outlets" msgstr "電源コンセント" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6428,9 +6812,9 @@ msgstr "電源コンセント" msgid "Front Ports" msgstr "前面ポート" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6439,23 +6823,26 @@ msgstr "前面ポート" msgid "Rear Ports" msgstr "背面ポート" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "デバイスベイ" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "モジュールベイ" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "電源タップ" @@ -6468,41 +6855,45 @@ msgstr "最大使用率" msgid "Available Power (VA)" msgstr "使用可能な電力 (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "ラック" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "高さ" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "スペース" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "外形幅" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "外形奥行" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "最大重量" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "スペース" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "サイト" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "テストケースは peer_termination_type を設定する必要があります" @@ -6511,77 +6902,77 @@ msgstr "テストケースは peer_termination_type を設定する必要があ msgid "Disconnected {count} {type}" msgstr "切断されました {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "予約" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "ラック搭載でないデバイス" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "コンフィグコンテキスト" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "レンダーコンフィグ" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "テンプレートをレンダリング中にエラーが発生しました: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "仮想マシン" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "インストール済みデバイス {device} イン・ベイ {device_bay}。" -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "削除されたデバイス {device} ベイから {device_bay}。" -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "子ども" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "メンバー追加 {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "マスターデバイスを削除できません {device} バーチャルシャーシから。" -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "削除済み {device} バーチャルシャーシから {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "不明な関連オブジェクト: {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "カスタムフィールドのタイプの変更はサポートされていません。" -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "このスクリプトではスケジューリングが有効になっていません。" @@ -6630,7 +7021,7 @@ msgid "Multiple objects" msgstr "複数オブジェクト" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "無効" @@ -6665,7 +7056,7 @@ msgstr "いいえ" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "リンク" @@ -6685,65 +7076,56 @@ msgstr "アルファベット順 (A-Z)" msgid "Alphabetical (Z-A)" msgstr "アルファベット順 (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "更新" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "削除" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "情報" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "成功" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "警告" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "危険" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "デバッグ" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "デフォルト" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "失敗" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "毎時" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 時間毎" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "毎日" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "毎週" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 日毎" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6751,18 +7133,16 @@ msgstr "30 日毎" msgid "Create" msgstr "作成" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "更新" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6773,81 +7153,85 @@ msgstr "更新" msgid "Delete" msgstr "削除" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "青" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "藍" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "紫" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "桃" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "赤" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "橙" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "黄" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "緑" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "青緑" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "水" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "灰" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "黒" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "白" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "スクリプト" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "通知" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -6916,59 +7300,59 @@ msgstr "オブジェクトの数をカウントするときに適用するフィ msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "形式が無効です。オブジェクトフィルタはディクショナリとして渡さなければなりません。" -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "オブジェクトリスト" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "任意のオブジェクトリストを表示します。" -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "デフォルトで表示するオブジェクト数" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "形式が無効です。URL パラメータはディクショナリとして渡さなければなりません。" -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS フィード" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "外部 Web サイトの RSS フィードを埋め込みます。" -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "フィード URL" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "表示するオブジェクトの最大数" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "キャッシュされたコンテンツを保存する時間 (秒)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "ブックマーク" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "個人用のブックマークを表示する" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "イベントルールのアクションタイプが不明です: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "イベントパイプラインをインポートできません {name} エラー: {error}" @@ -6977,210 +7361,219 @@ msgstr "イベントパイプラインをインポートできません {name} msgid "Script module (ID)" msgstr "スクリプトモジュール (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "データファイル (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "グループ (名前)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "クラスタタイプ" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "クラスタタイプ (slug)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "テナントグループ" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "テナントグループ (slug)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "タグ" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "タグ (slug)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "ローカル設定コンテキストがある" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "ユーザ名" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "グループ名" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "必須" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "一意でなければならない" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "UI で表示される" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "UI で編集可能" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "複製可能" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "最小値" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "最大値" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "検証正規表現" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "動作" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "新しいウィンドウ" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "ボタンクラス" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "MIMEタイプ" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "ファイル拡張子" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "添付ファイルとして" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "共有" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "HTTP メソッド" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "ペイロード URL" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "SSL 検証" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "シークレット" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "CA ファイルパス" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "作成時" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "更新時" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "イベントタイプ" -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "削除時" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "ジョブ開始時" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "ジョブ終了時" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "有効" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "オブジェクトタイプ" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "1 つ以上の割当オブジェクトタイプ" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "フィールドデータタイプ (テキスト、整数など)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "オブジェクトタイプ" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "オブジェクトタイプ (オブジェクトフィールドまたはマルチオブジェクトフィールド用)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "選択肢" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "選択肢 (選択フィールド用)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "カスタムフィールドが UI上に表示されるかどうか" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "カスタムフィールドが UI上で編集可能かどうか" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "定義済みの選択肢の基本セット (存在する場合)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7188,231 +7581,230 @@ msgstr "" "引用符で囲んだ、カンマ区切りの選択肢。コロン区切りでラベル設定可能: \"choice1:First Choice,choice2:Second " "Choice\"" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "ボタンクラス" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "グループ内の最初のリンクのクラスがドロップダウンボタンに使用されます" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "このルールをトリガーするイベントタイプ" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "アクションオブジェクト" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "ドットパス形式 (module.Class) のウェブフック名またはスクリプト" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "ウェブフック {name} 見つかりません" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "スクリプト {name} 見つかりません" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "割当オブジェクトタイプ" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "エントリの分類" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "ユーザ" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "二重引用符で囲まれたカンマ区切りユーザ名" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "グループ" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "二重引用符で囲まれたカンマで区切りグループ名" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "関連オブジェクトタイプ" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "フィールドタイプ" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "選択肢" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "データ" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "データファイル" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "コンテンツタイプ" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "HTTP content type" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "イベント" - -#: netbox/extras/forms/filtersets.py:265 -msgid "Action type" -msgstr "アクションタイプ" - -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "オブジェクト作成" - #: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "オブジェクト更新" +msgid "Event type" +msgstr "イベントタイプ" -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "オブジェクト削除" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "ジョブの開始" +#: netbox/extras/forms/filtersets.py:291 +msgid "Action type" +msgstr "アクションタイプ" #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "ジョブの終了" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "タグ付きオブジェクトタイプ" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "許可されるオブジェクトタイプ" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "リージョン" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "サイトグループ" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "ロケーション" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "デバイスタイプ" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "ロール" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "クラスタタイプ" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "クラスタグループ" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "クラスタ" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "テナントグループ" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "以降" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "以前" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "時間" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "このカスタムフィールドを持つオブジェクトのタイプ" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "アクション" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "既定値" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "関連オブジェクトのタイプ (オブジェクト/マルチオブジェクトフィールドのみ)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "関連オブジェクトフィルタ" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "クエリパラメータを JSON オブジェクトとして指定します。" + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "カスタムフィールド" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "動作" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "値" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." msgstr "このフィールドのタイプ。オブジェクト/マルチオブジェクトフィールドの場合は、関連するオブジェクトタイプを以下から選択してください。" -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." msgstr "これはフォームフィールドのヘルプテキストとして表示されます。Markdown がサポートされています。" -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "関連オブジェクト" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" msgstr "1 行に 1 つの選択肢を入力します。必要に応じて、各選択肢にコロンを付けることで、ラベルを指定できます。例:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "カスタムリンク" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "テンプレート" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7421,114 +7813,96 @@ msgstr "" "リンクテキストの Jinja2 テンプレートコード。オブジェクトを次のように参照します。 " "{example}。空のテキストとしてレンダリングされるリンクは表示されません。" -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "リンク URL の Jinja2 テンプレートコード。オブジェクトを次のように参照します。 {example}。" -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "テンプレートコード" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "テンプレートをエクスポート" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "レンダリング" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "選択したリモートソースから、テンプレートコンテンツが入力されます。" -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "ローカルコンテンツまたはデータファイルのいずれかを指定する必要があります" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "保存済みフィルタ" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "通知グループには、少なくとも 1 人のユーザまたはグループを指定します。" + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "HTTP リクエスト" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "スクリプト" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "JSON フォーマットで条件を入力。" -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." msgstr "JSON フォーマットでアクションに渡すパラメータを入力してください。" -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "イベントルール" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "条件" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "作成" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "更新" - -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "削除" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "トリガー" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "ジョブの実行" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "通知グループ" -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "テナント" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "割当" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "データは、以下で選択したリモートソースから入力されます。" -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "ローカルデータまたはデータファイルのいずれかを指定する必要があります" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "コンテンツ" @@ -7574,47 +7948,25 @@ msgstr "スクリプトの実行をスケジュールする" msgid "Interval at which this script is re-run (in minutes)" msgstr "実行される間隔 (分単位)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "indexerが見つかりません" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "時刻" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "ユーザ名" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "リクエスト ID" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "アクション" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "変更前データ" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "データベースの変更は自動的に元に戻されました。" -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "変更後データ" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "スクリプトがエラーで中止されました: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "オブジェクト変更" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "例外が発生しました: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "オブジェクト変更" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "エラーにより、データベースの変更が元に戻されました。" -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "このオブジェクトタイプ ({type}) では変更ログはサポートされていません。" +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "indexerが見つかりません" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7664,113 +8016,129 @@ msgstr "設定テンプレート" msgid "config templates" msgstr "設定テンプレート" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "このフィールドが適用されるオブジェクト。" -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "このカスタムフィールドが保持するデータのタイプ" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "このフィールドがマップされる NetBox オブジェクトのタイプ (オブジェクトフィールド用)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "内部フィールド名" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "英数字とアンダースコアのみ使用できます。" -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "カスタムフィールド名には二重アンダースコアを使用できません。" -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" msgstr "表示されるフィールド名 (指定しない場合は、フィールド名が使用されます)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "グループ名" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "同じグループ内のカスタムフィールドは一緒に表示されます" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "必須" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." -msgstr "true の場合、オブジェクトを作成・編集する際に、このフィールドは必須です。" +"This field is required when creating new objects or editing an existing " +"object." +msgstr "このフィールドは、オブジェクトを作成・編集に必要です。" + +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "ユニークでなければならない" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "このフィールドの値は、割当オブジェクトで一意である必要があります" -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "検索優先度" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." msgstr "検索用の重み付け。値が小さいほど優先されます。検索優先度が 0 のフィールドは無視されます。" -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "フィルタロジック" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." msgstr "Loose は指定した文字列が含まれる場合に一致し、exact はフィールド全体と一致します。" -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "デフォルト" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." msgstr "フィールドのデフォルト値 (JSON 値である必要があります)。文字列を二重引用符で囲みます (例:「Foo」)。" -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"query_params dict (JSON 値である必要があります) " +"を使用してオブジェクト選択の選択肢をフィルタリングします。文字列を二重引用符で囲みます (例:「Foo」)。" + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "表示優先度" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "値が大きいフィールドは、フォームの下に表示されます。" -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "最小値" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "最小許容値 (数値フィールド用)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "最大値" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "最大許容値 (数値フィールド用)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "バリデーション正規表現" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7780,268 +8148,238 @@ msgstr "" "テキストフィールド値に適用する正規表現。^ と $ を使用して文字列全体を強制的に一致させます。例えば、 ^ " "[A-Z]{3}$ は値を3 字の大文字に制限します。" -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "選択肢" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "カスタムフィールドを UI に表示するかどうかを指定します" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "カスタムフィールド値を UI で編集できるかどうかを指定します" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "複製可能" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "オブジェクトの複製時にこの値を複製する" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "カスタムフィールド" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "カスタムフィールド" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "デフォルト値が無効です \"{value}\": {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "最小値は数値フィールドにのみ設定できます" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "最大値は数値フィールドにのみ設定できます" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "正規表現の検証は、テキストフィールドと URL フィールドでのみサポートされます。" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "ブーリアン型フィールドには一意性を強制できない" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "選択フィールドには選択肢のセットを指定する必要があります。" -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "選択肢は選択フィールドにのみ設定できます。" -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "オブジェクトフィールドはオブジェクトタイプを定義する必要があります。" -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} フィールドはオブジェクトタイプを定義できません。" -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "関連オブジェクトフィルターはオブジェクトフィールドにのみ定義できます。" + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "フィルタは、属性を値にマッピングするディクショナリとして定義する必要があります。" + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "真" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "偽" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "値は次の正規表現とマッチする必要があります。 {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "値は文字列でなければなりません。" -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "値は正規表現 '{regex}'と一致する必要があります" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "値は整数でなければなりません。" -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "値は {minimum} 以上でなければなりません" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "値は {maximum} を超えてはいけません" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "値は実数でなければなりません。" -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "値は true または false でなければなりません。" -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "日付値は ISO 8601 フォーマット (YYYY-MM-DD) である必要があります。" -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "日付と時刻の値は ISO 8601 フォーマット (YYYY-MM-DD HH:MM:SS) である必要があります。" -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "{value}は選択肢 {choiceset} に含まれていません。" -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "{value}は選択肢 {choiceset} に含まれていません。" -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "{type}ではなく、オブジェクトIDを指定してください" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "{type} ではなくオブジェクト ID のリストを入力してください" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "無効なオブジェクト ID が見つかりました: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "必須フィールドを空にすることはできません。" -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "定義済みの選択肢の基本セット (オプション)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "選択肢は自動的にアルファベット順に並べられます" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "カスタムフィールド選択肢" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "カスタムフィールド選択肢" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "基本選択肢または追加選択肢を定義する必要があります。" -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "レイアウト" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "設定" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "ダッシュボード" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "ダッシュボード" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "オブジェクトタイプ" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "このルールが適用されるオブジェクト。" -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "作成時" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "一致するオブジェクトが作成されたときにトリガーされます。" - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "更新時" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "一致するオブジェクトが更新されるとトリガーされます。" - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "削除時" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "一致するオブジェクトが削除されたときにトリガーされます。" - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "ジョブ開始時" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "一致するオブジェクトのジョブが開始されるとトリガーされます。" - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "ジョブ終了時" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "一致するオブジェクトのジョブが終了するとトリガーされます。" +msgid "The types of event which will trigger this rule." +msgstr "このルールをトリガーするイベントのタイプ。" -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "条件" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "イベントを生成するかどうかを決定する一連の条件。" -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "アクションタイプ" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "アクションオブジェクトに渡す追加データ" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "イベントルール" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "イベントルール" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "少なくとも 1 つのイベントタイプを選択する必要があります。 : 作成、更新、削除、ジョブの開始、ジョブの終了" - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8050,7 +8388,7 @@ msgstr "" "この URL は、Webhook が呼び出されたときに定義された HTTP メソッドを使用して呼び出されます。Jinja2 " "テンプレート処理はリクエストボディと同じコンテキストでサポートされています。" -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available ここに。" -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "追加ヘッダー" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8073,11 +8411,11 @@ msgstr "" "HTTP コンテンツタイプに加えて、リクエストとともに送信されるユーザ指定の HTTP ヘッダー。ヘッダーは次の形式で定義する必要があります。 " "名前:値。Jinja2 テンプレート処理はリクエストボディ (下記) と同じコンテキストでサポートされています。" -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "ボディテンプレート" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8089,11 +8427,11 @@ msgstr "" "model, timestamp, username, " "request_id, and data." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "シークレット" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8102,77 +8440,77 @@ msgstr "" "提供された場合、リクエストにはシークレットをキーとして使用したペイロード本体のHMAC 16 進ダイジェストを含むX-Hook-" "Signature ヘッダー が含まれます 。シークレットはリクエストでは送信されません。" -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "SSL 証明書検証を有効にします。注意して無効にしてください。" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "CA ファイルパス" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." msgstr "SSL 検証に使用する特定の CA 証明書ファイル。システムデフォルトを使用するには空白のままにしておきます。" -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "ウェブフック" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "ウェブフック" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "SSL 検証が無効になっている場合は、CA 証明書ファイルを指定しないでください。" -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "このリンクが適用されるオブジェクトタイプ。" -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "リンクテキスト" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "リンクテキストの Jinja2 テンプレートコード" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "リンク URL" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "リンク URL の Jinja2 テンプレートコード" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "同じグループのリンクはドロップダウンメニューとして表示されます" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "新しいウィンドウ" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "リンクを強制的に新しいウィンドウで開く" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "カスタムリンク" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "カスタムリンク" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "このテンプレートが適用されるオブジェクトタイプ。" -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8180,110 +8518,157 @@ msgstr "" "Jinja2 テンプレートコード。エクスポートされるオブジェクトのリストは、 " "クエリーセットという名前のコンテキスト変数として渡されます。" -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "デフォルトは text/plain; charset=utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "ファイル拡張子" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "レンダリングされたファイル名に追加する拡張子" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "添付ファイルとして" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "ファイルを直接ダウンロードする" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "エクスポートテンプレート" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "エクスポートテンプレート" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "\"{name}\"は予約されています。別の名前を選択してください。" -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "このフィルタが適用されるオブジェクトタイプ。" -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "共有した" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "保存済みフィルタ" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "保存済みフィルタ" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "フィルタパラメータは、キーワード引数の辞書として保存する必要があります。" -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "画像高さ" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "画像幅" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "添付画像" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "添付画像" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "このオブジェクトタイプ ({type})には添付画像を割り当てることができません。" -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "種類" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "ジャーナルエントリ" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "ジャーナルエントリ" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "このオブジェクトタイプ({type})ではジャーナリングはサポートされていません 。" -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "ブックマーク" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "ブックマーク" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "このオブジェクトタイプ ({type})にはブックマークを割り当てられません。" +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "読む" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "出来事" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "通知" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "通知" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "このタイプのオブジェクト ({type}) 通知はサポートしていません。" + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "グループ" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "ユーザ" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "通知グループ" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "通知グループ" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "サブスクリプション" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "サブスクリプション" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "実行可能" @@ -8324,19 +8709,19 @@ msgstr "キャッシュ値" msgid "cached values" msgstr "キャッシュ値" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "ブランチ" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "ブランチ" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "段階的変更" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "段階的変更" @@ -8360,85 +8745,87 @@ msgstr "タグ付きアイテム" msgid "tagged items" msgstr "タグ付きアイテム" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "スクリプトデータ" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "スクリプト実行パラメータ" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "データベースの変更は自動的に元に戻されました。" - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "スクリプトがエラーで中止されました: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "例外が発生しました: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "エラーにより、データベースの変更が元に戻されました。" - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "削除は保護ルールによって禁止されています。 {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "却下" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "オブジェクトタイプ" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "一意性を検証" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "可視" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "編集可能" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "関連オブジェクトタイプ" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "チョイスセット" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "複製可能" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "最小値" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "最大値" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "検証正規表現" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "カウント" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "アルファベット順に並べる" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "新規ウィンドウ" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "添付ファイルとして" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8448,63 +8835,54 @@ msgstr "添付ファイルとして" msgid "Data File" msgstr "データファイル" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "同期済み" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "画像" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "サイズ (バイト)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "読む" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "SSL バリデーション" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "ジョブ開始" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "ジョブ終了" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "イベントタイプ" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "デバイスロール" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "フルネーム" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "リクエスト ID" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "コメント (ショート)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "ライン" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "レベル" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "メッセージ" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "メソッド" @@ -8535,37 +8913,37 @@ msgstr "検証ルールはディクショナリとして渡さなければなり msgid "Custom validation failed for {attribute}: {exception}" msgstr "のカスタム検証が失敗しました {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "属性が無効です」{name}「」(リクエスト用)" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "{model}において{name}属性は無効です" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "ダッシュボードがリセットされました。" -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "ウィジェットの追加: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "ウィジェットの更新: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "削除したウィジェット: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "ウィジェットの削除中にエラーが発生しました: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "スクリプトを実行できません:RQ ワーカープロセスが実行されていません。" @@ -8608,10 +8986,6 @@ msgstr "SLAAC" msgid "Loopback" msgstr "ループバック" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "セカンダリ" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "エニーキャスト" @@ -8637,19 +9011,19 @@ msgstr "プレーンテキスト" msgid "Invalid IP address format: {address}" msgstr "IP アドレス形式が無効です: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "インポート対象" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "インポート対象 (名前)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "エクスポート対象" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "エクスポート対象 (名前)" @@ -8714,16 +9088,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "このプレフィックス / IP を含むプレフィックス" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "マスクの長さ" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "VLAN 番号 (1-4094)" @@ -8743,23 +9117,23 @@ msgid "Parent prefix" msgstr "親プレフィックス" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "仮想マシン (名前)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "仮想マシン (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "インタフェース (名前)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "VM インタフェース (名前)" @@ -8787,19 +9161,19 @@ msgstr "サービス (ID)" msgid "NAT inside IP address (ID)" msgstr "NAT 内部の IP アドレス (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "IP アドレス (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP アドレス" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "プライマリ IPv4 (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "プライマリ IPv6 (ID)" @@ -8832,17 +9206,17 @@ msgstr "CIDR マスク (例:/24) が必要です。" msgid "Address pattern" msgstr "アドレスパターン" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "重複を禁止する" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "非公開です" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -8855,20 +9229,20 @@ msgstr "非公開です" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "追加日" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN グループ" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -8877,49 +9251,49 @@ msgstr "VLAN グループ" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "プレフィックス長" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "プールです" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "すべて使用済として扱う" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "VLAN アサイメント" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS ネーム" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "プロトコル" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "グループ ID" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -8931,153 +9305,139 @@ msgstr "グループ ID" msgid "Authentication type" msgstr "認証タイプ" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "認証キー" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "認証" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "子 VLAN VID の最小値" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "子 VLAN VID の最大値" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "スコープタイプ" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "VLAN ID の範囲" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "スコープ" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "サイトとグループ" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "ポート" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "インポートルートターゲット" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "エクスポートルートターゲット" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "割当 RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "VLAN のグループ (存在する場合)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "割当インタフェースの親デバイス (存在する場合)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "仮想マシン" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "割当インタフェースの親VM (存在する場合)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "割当インタフェース" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "プライマリか" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "割当デバイスのプライマリ IP アドレスにする" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "デバイスまたは仮想マシンが指定されていないため、プライマリ IP として設定できません" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "インタフェースが指定されていないため、プライマリ IP として設定できません" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "認証タイプ" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "スコープの種類 (アプリとモデル)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "子の VLAN VID の最小値 (デフォルト: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "子 VLAN VID の最大数 (デフォルト: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "割当 VLAN グループ" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "IP プロトコル" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "VM に割り当てられていない場合は必須" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "デバイスに割り当てられていない場合は必須" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} はこのデバイス/VM には割り当てられていません。" #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "ルートターゲット" @@ -9153,31 +9513,34 @@ msgstr "インタフェースに割当済" msgid "DNS Name" msgstr "DNS名" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "VLAN ID" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "最小 VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "VLAN ID が含まれています" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "VID の最大値" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "VLAN ID" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9244,43 +9607,48 @@ msgstr "仮想 IP アドレス" msgid "Assignment already exists" msgstr "既に割り当てられています" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "VLAN ID" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "子 VLAN" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "カンマ区切りのポート番号のリスト。範囲はハイフンを使用して指定できます。" -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "サービステンプレート" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "ポート (s)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "サービス" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "サービステンプレート" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "テンプレートから" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "カスタム" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "サービステンプレートを使用しない場合は、名前、プロトコル、およびポートを指定する必要があります。" @@ -9318,7 +9686,7 @@ msgstr "グループ ID" msgid "protocol" msgstr "プロトコル" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "認証タイプ" @@ -9334,10 +9702,6 @@ msgstr "FHRP グループ" msgid "FHRP groups" msgstr "FHRP グループ" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "優先度" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "FHRP グループ割当" @@ -9354,7 +9718,7 @@ msgstr "プライベート" msgid "IP space managed by this RIR is considered private" msgstr "この RIR が管理する IP スペースはプライベートと見なされます" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR" @@ -9594,22 +9958,6 @@ msgid "" "A service must be associated with either a device or a virtual machine." msgstr "サービスは、デバイスまたは仮想マシンのいずれかに関連付ける必要があります。" -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "最小 VLAN ID" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "子VLANの最小許容ID" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "最大VLAN ID" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "子 VLAN の最大許容ID" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "VLAN グループ" @@ -9622,47 +9970,48 @@ msgstr "scope_id なしでscope_typeを設定することはできません。" msgid "Cannot set scope_id without scope_type." msgstr "scope_typeなしでscope_idを設定することはできません。" -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" -msgstr "最大子 VID は、最小子VID の値以上でなければなりません" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "範囲は重複できません。" + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" +msgstr "子供 VID の最大数は、子供 VID の最小値以上でなければなりません ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "この VLAN が割り当てられているサイト (存在する場合)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "VLAN グループ (オプション)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "数値によるVLAN ID (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "この VLAN の動作ステータス" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "この VLAN の主な機能" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " "site {site}." msgstr "VLANはグループ{group}に割り当てられています (スコープ: {scope}) サイト{site}への割り当てはできません 。" -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "グループ{group}内の VLANにおいて、VID は{minimum}から{maximum}の間である必要があります" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "VID は範囲内にある必要があります {ranges} グループ内の VLAN 用 {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9680,8 +10029,8 @@ msgstr "重複を禁止する" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "この VRF 内のプレフィックス/IP アドレスの重複を防ぐ" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF" @@ -9709,8 +10058,8 @@ msgstr "サイト数" msgid "Provider Count" msgstr "プロバイダ数" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "集約" @@ -9719,21 +10068,21 @@ msgid "Added" msgstr "追加日" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "プレフィックス" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "使用率" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "IP アドレス範囲" @@ -9778,7 +10127,11 @@ msgstr "割当オブジェクト" msgid "Scope Type" msgstr "スコープタイプ" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "VID レンジ" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VID" @@ -9840,31 +10193,44 @@ msgstr "デバイスインタフェース" msgid "VM Interfaces" msgstr "VM インタフェース" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "このフィールドは空白であってはなりません。" -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." msgstr "値は直接渡す必要があります (例: \"foo\": 123)。辞書やリストは使用しないでください。" -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} は有効な選択肢ではありません。" -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "コンテントタイプが無効です: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "値が無効です。コンテントタイプを '.'として指定してください。" -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "範囲は (下限、上部) の形式で指定する必要があります。" + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "範囲の境界は整数として定義する必要があります。" + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} get_view_name () を実装する必要があります" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "モデル{model}において権限{permission}が無効です " @@ -10186,46 +10552,51 @@ msgstr "タグを削除" msgid "{class_name} must specify a model class." msgstr "{class_name} はモデルクラスを指定する必要があります。" -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "カスタムフィールドデータに、不明なフィールド名 '{name}'が存在します。" -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "カスタムフィールドの値が無効です。'{name}': {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "カスタムフィールド '{name}'には一意の値が必要です。" + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "必須カスタムフィールド'{name}'が見つかりません。" -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "リモートデータソース" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "データパス" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "リモートファイルへのパス (データソースルートからの相対パス)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "自動同期が有効" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "データファイルの更新時にデータの自動同期を有効にする" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "同期日付" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} はsync_data () メソッドを実装する必要があります。" @@ -10239,217 +10610,230 @@ msgid "Site Groups" msgstr "サイトグループ" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "ラックロール" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "ラック図" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "テナントグループ" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "連絡先グループ" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "連絡先のロール" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "連絡先の割り当て" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "ラックロール" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "ラック図" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "ラックタイプ" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "モジュール" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "仮想デバイスコンテキスト" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "メーカ" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "デバイス構成要素" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "在庫品目のロール" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "接続" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "ケーブル" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "無線リンク" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "インタフェース接続" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "コンソール接続" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "電源接続" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "無線 LAN グループ" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "プレフィックスと VLAN のロール" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "ASN レンジ" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "VLAN グループ" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "サービステンプレート" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "サービス" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "トンネル" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "トンネルグループ" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "トンネルターミネーション" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2 VPN" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "終端" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "IKEプロポザール" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "IKE ポリシ" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "IPsec プロポーザル" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "IPsec ポリシ" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "IPsec プロファイル" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "仮想化" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "仮想ディスク" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "クラスタタイプ" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "クラスタグループ" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "回線タイプ" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "回路グループ" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "グループ課題" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "回路終端" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "プロバイダ" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "プロバイダアカウント" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "プロバイダネットワーク" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "電源盤" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "コンフィギュレーション" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "コンフィグコンテキスト" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "設定テンプレート" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "カスタマイズ" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10462,114 +10846,108 @@ msgstr "カスタマイズ" msgid "Custom Fields" msgstr "カスタムフィールド" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "カスタムフィールド選択肢" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "カスタムリンク" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "エクスポートテンプレート" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "保存済みフィルタ" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "画像添付ファイル" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "オペレーション" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "インテグレーション" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "データソース" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "イベントルール" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "ウェブフック" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "ジョブ" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "ロギング" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "通知グループ" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "ジャーナルエントリ" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "変更ログ" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "管理者" -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "ユーザ" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "グループ" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "API トークン" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "権限" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "システム" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "プラグイン" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "設定履歴" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "バックグラウンドタスク" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "プラグイン" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10599,29 +10977,22 @@ msgstr "" "{template_extension} はnetbox.plugins.Plugins.PluginTemplate Extension " "のサブクラスではありません!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "PluginTemplateExtension クラス {template_extension}は 有効なモデルが定義されていません!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} はnetbox.Plugins.PluginMenuItem のインスタンスでなければなりません" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} はnetbox.plugins.PluginMenuItem のインスタンスでなければなりません" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} netbox.plugins.Plugin.MenuButton のインスタンスでなければなりません" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_contextはディクショナリでなければなりません" @@ -10698,75 +11069,79 @@ msgstr "初期化後にストアをレジストリに追加できません" msgid "Cannot delete stores from registry" msgstr "レジストリからストアを削除できません" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "チェコ語" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "デンマーク語" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "ドイツ人" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "英語" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "スペイン語" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "フランス語" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "イタリア語" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "日本語" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "オランダ語" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "ポーランド語" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "ポルトガル語" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "ロシア語" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "トルコ語" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "ウクライナ語" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "中国語" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "すべて選択" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "すべて切り替え" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "ドロップダウンを切り替え" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "エラー" @@ -10817,24 +11192,24 @@ msgstr "名前が変更されました {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "削除済み {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "変更ログ" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "ジャーナル" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "データを同期できません:データファイルが設定されていません。" -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "の同期データ {object_type} {object}。" -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "同期済み {count} {object_type}" @@ -10844,7 +11219,7 @@ msgstr "同期済み {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} はget_children () を実装する必要があります" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -10878,11 +11253,11 @@ msgstr "リクエストに問題がありました。管理者に問い合わせ msgid "The complete exception is provided below" msgstr "The complete exception is provided below" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Python version" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "NetBox version" @@ -10906,14 +11281,26 @@ msgstr "(GitHub)" msgid "Home Page" msgstr "ホームページ" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "プロフィール" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "通知" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "サブスクリプション" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "環境設定" @@ -10921,7 +11308,7 @@ msgstr "環境設定" msgid "Change Password" msgstr "パスワードを変更" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -10946,7 +11333,7 @@ msgstr "パスワードを変更" msgid "Cancel" msgstr "キャンセル" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11020,7 +11407,7 @@ msgid "Superuser" msgstr "スーパーユーザ" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "スタッフ" @@ -11035,19 +11422,19 @@ msgstr "割当グループ" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11068,7 +11455,7 @@ msgstr "マイ API トークン" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "トークン" @@ -11089,32 +11476,41 @@ msgstr "トークンを追加" msgid "Home" msgstr "ホーム" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "ネットボックスモチーフ" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "NetBoxロゴ" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "ドキュメント" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "REST API ドキュメント" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "GraphQL API" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "ネットボックスラボサポート" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "ソースコード" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "コミュニティ" @@ -11126,6 +11522,11 @@ msgstr "インストール日" msgid "Termination Date" msgstr "終端日" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "グループを割り当て" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "回線終端を交換する" @@ -11143,6 +11544,14 @@ msgstr "Aサイド" msgid "Z side" msgstr "Z サイド" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "回路を割り当て" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "回路グループ割り当て" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "回線を追加" @@ -11167,7 +11576,7 @@ msgstr "追加" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11288,13 +11697,10 @@ msgstr "新しい値" msgid "Changed" msgstr "変更日" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "最終更新日" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "サイズ" @@ -11376,25 +11782,118 @@ msgstr "ユーザープリファレンス" msgid "Job retention" msgstr "仕事の維持" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "ジョブ" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "作成者" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "スケジューリング" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "ごと %(interval)s 分" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "変更" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "差分" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "前へ" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "次へ" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "オブジェクトが作成されました" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "オブジェクトは削除されました" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "変更なし" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "変更前データ" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "警告:非アトミックな変更と以前の変更レコードの比較" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "変更後のデータ" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "すべて表示 %(count)s 変更点" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "変更ログの保存" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "日々" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "無期限" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "未インストール" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "概要" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "インストール" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "プラグイン詳細" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "サマリー" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "ライセンス" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "バージョン履歴" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "ローカルインストール手順" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11406,8 +11905,8 @@ msgstr "バックグラウンドキュー" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11466,7 +11965,7 @@ msgid "Queued Jobs" msgstr "キューに入っているジョブ" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11524,39 +12023,43 @@ msgstr "エクスポート" msgid "System Status" msgstr "システムステータス" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "ネットボックスリリース" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "ジャンゴバージョン" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" -msgstr "ポスグレ SQL バージョン" +msgstr "PostgreSQL バージョン" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "データベース名" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "データベースサイズ" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "ご利用いただけません" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "RQ ワーカー" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "デフォルトキュー" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "システムタイム" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "現在の構成" @@ -11653,14 +12156,15 @@ msgstr "ラックなし" msgid "GPS Coordinates" msgstr "GPS 座標" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "マップ・イット" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "マップ" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "アセットタグ" @@ -11680,19 +12184,19 @@ msgstr "マネジメント" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "用の NAT" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "ナット" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "電力使用率" @@ -11720,7 +12224,7 @@ msgid "Leg" msgstr "レッグ" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "サービスを追加" @@ -11981,6 +12485,22 @@ msgstr "クリア" msgid "Clear All" msgstr "すべてクリア" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "取り付け奥行き" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "起動ユニット" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "降順単位" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "ラックの高さ" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "子インタフェースの追加" @@ -12043,8 +12563,8 @@ msgstr "チャンネル幅" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "言った" @@ -12134,49 +12654,33 @@ msgstr "最大消費電力" msgid "Allocated Draw" msgstr "割り当てられた抽選" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "スペース活用" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "降順" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "上昇" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "起動ユニット" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "取り付け奥行き" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "ラック重量" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "最大重量" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "合計重量" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "画像とラベル" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "画像のみ" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "ラベルのみ" @@ -12189,6 +12693,10 @@ msgstr "予約を追加" msgid "View List" msgstr "リストを表示" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "ラックビューを選択" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "並び替え" @@ -12242,10 +12750,6 @@ msgstr "サイトタイム" msgid "Physical Address" msgstr "物理アドレス" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "マップ" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "配送先住所" @@ -12286,7 +12790,7 @@ msgstr "新しいメンバーを追加" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "アクション" @@ -12442,46 +12946,42 @@ msgid "Group Name" msgstr "グループ名" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "ユニークでなければならない" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "クローン可能" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "既定値" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "検索重量" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "フィルタロジック" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "ディスプレイ重量" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "UI が表示される" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "UI 編集可能" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "検証ルール" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "最小値" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "最大値" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "正規表現" @@ -12495,11 +12995,11 @@ msgstr "ボタンクラス" msgid "Assigned Models" msgstr "割当モデル" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "リンクテキスト" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "リンク URL" @@ -12520,6 +13020,14 @@ msgid "" "users." msgstr "この変更の影響を受けるのは きみの ダッシュボード。他のユーザには影響しません。" +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "ウィジェット構成" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "ウィジェットを閉じる" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "ウィジェットを追加" @@ -12552,13 +13060,9 @@ msgstr "RSS フィードの取得中に問題が発生しました" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "ジョブスタート" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "ジョブ終了" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "条件" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12600,20 +13104,15 @@ msgstr "結果は保留中です" msgid "Journal Entry" msgstr "ジャーナルエントリ" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "変更ログの保存" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "日々" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "通知グループ" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "無期限" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "割り当てなし" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12627,52 +13126,6 @@ msgstr "ソースコンテキスト" msgid "New Journal Entry" msgstr "新しいジャーナルエントリ" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "変更" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "差分" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "前へ" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "次へ" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "オブジェクトが作成されました" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "オブジェクトは削除されました" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "変更なし" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "変更前データ" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "警告:非アトミックな変更と以前の変更レコードの比較" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "変更後のデータ" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "すべて表示 %(count)s 変更点" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "報告書" @@ -12683,7 +13136,7 @@ msgstr "スクリプトを実行する権限がありません" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "スクリプトを実行" @@ -12696,27 +13149,27 @@ msgstr "スクリプトのロード中にエラーが発生しました" msgid "Script no longer exists in the source file." msgstr "スクリプトはソースファイルに存在しなくなりました。" -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "ラストラン" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "スクリプトはソースファイルに存在しなくなりました" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "決して" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "もう一度実行" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "スクリプトが見つかりません" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -12731,6 +13184,14 @@ msgstr "" msgid "Results" msgstr "結果" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "ログ閾値" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "[すべて]" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "タグ付きアイテム" @@ -12763,11 +13224,11 @@ msgstr "HTTP コンテンツタイプ" msgid "SSL Verification" msgstr "SSL 検証" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "その他のヘッダー" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "ボディテンプレート" @@ -12843,6 +13304,10 @@ msgstr "フィールドオプション" msgid "Accessor" msgstr "アクセサ" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "選択肢" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "インポート値" @@ -13005,6 +13470,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "このアクションの結果、次のオブジェクトが削除されます。" +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "前に" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "未読通知なし" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "すべての通知" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "選択" @@ -13071,15 +13548,23 @@ msgstr "簡易検索" msgid "Saved filter" msgstr "保存済みフィルタ" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "注文をクリア" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "ヘルプセンター" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "ジャンゴ管理者" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "ログアウト" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "ログイン" @@ -13127,10 +13612,6 @@ msgstr "一括作成" msgid "Create Group" msgstr "グループを作成" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "グループを割り当て" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "仮想 IP" @@ -13264,10 +13745,6 @@ msgstr "プレフィックスを追加" msgid "Add VLAN" msgstr "VLAN の追加" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "許可されているビデオ" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "ルート識別子" @@ -13276,20 +13753,16 @@ msgstr "ルート識別子" msgid "Unique IP Space" msgstr "ユニークな IP スペース" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "ネットボックスロゴ" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "エラー" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "サインイン" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "または" @@ -13362,11 +13835,6 @@ msgstr "タイトル" msgid "Phone" msgstr "電話" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "アサイメント" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13406,7 +13874,7 @@ msgstr "割当権限" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "許可" @@ -13428,23 +13896,21 @@ msgid "Allocated Resources" msgstr "割り当てられたリソース" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "バーチャル CPU" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "メモリー" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "ディスク容量" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13485,7 +13951,7 @@ msgid "Cluster Group" msgstr "クラスタグループ" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "クラスタタイプ" @@ -13494,13 +13960,13 @@ msgstr "クラスタタイプ" msgid "Virtual Disk" msgstr "仮想ディスク" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "リソース" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "仮想ディスクを追加" @@ -13682,13 +14148,12 @@ msgstr "無線 LAN グループの追加" msgid "Link Properties" msgstr "リンクプロパティ" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "三次" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "非アクティブ" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "距離" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -13853,13 +14318,13 @@ msgstr "連絡先リンク" msgid "Contact Description" msgstr "連絡先の説明" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "パーミッション (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "グループ (名前)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "通知グループ (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -13881,27 +14346,27 @@ msgstr "スーパーユーザステータス" msgid "If no key is provided, one will be generated automatically." msgstr "キーが指定されていない場合は、キーが自動的に生成されます。" -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "スタッフですか" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "スーパーユーザですか" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "閲覧可能" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "追加可能" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "変更可能" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "削除可能" @@ -13990,45 +14455,45 @@ msgstr "許可" msgid "permissions" msgstr "権限" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "ユーザプリファレンス" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "キー '{path}'はリーフノードです。新しいキーを割り当てることはできません" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "キー '{path}'はディクショナリです。ディクショナリ以外の値は割り当てられません" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "期限切れ" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "最終使用日" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "キー" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "書き込み有効" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "このキーを使用して作成/更新/削除操作を許可する" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "許可された IP" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14037,11 +14502,11 @@ msgstr "" "ネットワーク。制限がない場合は空白のままにしてください。例:10.1.1.0/24、192.168.10.16/32、2001: DB 8:1:: " "/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "トークン" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "トークン" @@ -14049,18 +14514,10 @@ msgstr "トークン" msgid "group" msgstr "グループ" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "グループ" - #: netbox/users/models/users.py:92 msgid "user" msgstr "ユーザ" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "ユーザ" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "このユーザ名のユーザはすでに存在します。" @@ -14187,13 +14644,25 @@ msgid "" msgstr "" "YAML データが無効です。データは複数のドキュメント、またはディクショナリのリストから構成される 1 つのドキュメントの形式である必要があります。" -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " "order." msgstr "リストが無効です ({value})。数値でなければならず、範囲は昇順でなければなりません。" +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "1 つまたは複数の数値範囲をカンマで区切って指定します。例: 1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "範囲が無効です ({value})。昇順の整数の範囲でなければなりません。" + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14343,6 +14812,24 @@ msgstr "動的クエリパラメータに必要な値が見つかりません:'{ msgid "Missing required value for static query param: '{static_params}'" msgstr "静的クエリパラメータに必要な値が見つかりません:'{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "パスワードには少なくとも 1 つの数字が必要です。" + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "パスワードには少なくとも 1 つの大文字が必要です。" + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "パスワードには少なくとも 1 つの小文字が必要です。" + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "パスワードには、少なくとも1つの数字、1つの大文字、1つの小文字が含まれている必要があります。" + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14397,6 +14884,14 @@ msgstr "エクスポートテンプレートを追加" msgid "Import" msgstr "インポート" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "購読解除" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "購読" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "クリップボードにコピー" @@ -14437,15 +14932,11 @@ msgstr "NetBoxを検索" msgid "Open selector" msgstr "セレクターを開く" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "割り当てなし" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "書き込み" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "テストでは csv_update_data を定義する必要があります。" @@ -14454,17 +14945,17 @@ msgstr "テストでは csv_update_data を定義する必要があります。" msgid "{value} is not a valid regular expression." msgstr "{value} は有効な正規表現ではありません。" -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "{self.__class__.__name__} get_required_permission () を実装する必要があります" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} get_required_permission () を実装する必要があります" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14487,7 +14978,7 @@ msgid "Cluster type (ID)" msgstr "クラスタタイプ (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "クラスタ (ID)" @@ -14505,7 +14996,7 @@ msgid "Disk (GB)" msgstr "ディスク (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "サイズ (GB)" @@ -14525,6 +15016,10 @@ msgstr "割り当て済みクラスタ" msgid "Assigned device within cluster" msgstr "クラスタ内の割り当て済みデバイス" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "シリアル番号" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14545,6 +15040,7 @@ msgid "Disk size is managed via the attachment of virtual disks." msgstr "ディスクサイズは、仮想ディスクのアタッチメントによって管理されます。" #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "ディスク" @@ -14584,73 +15080,73 @@ msgid "memory (MB)" msgstr "メモリ (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "ディスク (GB)" +msgid "disk (MB)" +msgstr "ディスク (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "仮想マシン名はクラスタごとに一意である必要があります。" -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "仮想マシン" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "仮想マシン" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "仮想マシンをサイトまたはクラスタに割り当てる必要があります。" -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "選択したクラスタ ({cluster}) はこのサイトに割り当てられていません ({site})。" -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "ホストデバイスを割り当てるときは、クラスタを指定する必要があります。" -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "選択したデバイス ({device}) はこのクラスタに割り当てられていません ({cluster})。" -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " "virtual disks ({total_size})." msgstr "指定されたディスクサイズ ({size}) は割当仮想ディスクの合計サイズと一致する必要がある ({total_size})。" -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "IPvである必要があります{family} 住所。({ip} は IPv です{version} 住所。)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "指定された IP アドレス ({ip}) はこの VM に割り当てられていません。" -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "選択した親インタフェース ({parent}) は別の仮想マシンに属しています ({virtual_machine})。" -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "選択したブリッジインタフェース ({bridge}) は別の仮想マシンに属しています ({virtual_machine})。" -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -14659,24 +15155,24 @@ msgstr "" "タグが付いていない VLAN ({untagged_vlan}) " "はインタフェースの親仮想マシンと同じサイトに属しているか、またはグローバルである必要があります。" -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "サイズ (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "サイズ (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "仮想ディスク" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "仮想ディスク" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "追加しました {count} デバイスをクラスタに {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "削除済み {count} クラスターのデバイス {cluster}" @@ -14695,7 +15191,7 @@ msgstr "IP-in-IP" #: netbox/vpn/choices.py:34 msgid "GRE" -msgstr "灰色" +msgstr "GRE" #: netbox/vpn/choices.py:56 msgid "Hub" @@ -14707,7 +15203,7 @@ msgstr "スポーク" #: netbox/vpn/choices.py:80 msgid "Aggressive" -msgstr "積極的" +msgstr "アグレッシブ" #: netbox/vpn/choices.py:81 msgid "Main" @@ -14790,32 +15286,32 @@ msgid "Outside IP (ID)" msgstr "外部IP (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "IKE ポリシー (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "IKE ポリシー (名前)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "IPsec ポリシー (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "IPsec ポリシー (名前)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (slug)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "VM インタフェース (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (名前)" @@ -14986,7 +15482,7 @@ msgstr "版" msgid "proposals" msgstr "提案" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "事前共有キー" @@ -15167,17 +15663,24 @@ msgstr "WPA エンタープライズ" msgid "Authentication cipher" msgstr "認証暗号" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "距離単位" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "ブリッジド VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "インタフェース A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "インタフェース B" @@ -15185,39 +15688,51 @@ msgstr "インタフェース B" msgid "Side B" msgstr "サイド B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "認証暗号" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "無線 LAN グループ" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "無線 LAN グループ" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "無線 LAN" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "インタフェース A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "インタフェース B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "距離" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "距離単位" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "無線リンク" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "無線リンク" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "ワイヤレス距離を設定するときは単位を指定する必要があります" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} 無線インタフェースではありません。" diff --git a/netbox/translations/nl/LC_MESSAGES/django.mo b/netbox/translations/nl/LC_MESSAGES/django.mo index 4714a83dcca..e86add12e99 100644 Binary files a/netbox/translations/nl/LC_MESSAGES/django.mo and b/netbox/translations/nl/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/nl/LC_MESSAGES/django.po b/netbox/translations/nl/LC_MESSAGES/django.po index 369f953dfa3..82e54a67bac 100644 --- a/netbox/translations/nl/LC_MESSAGES/django.po +++ b/netbox/translations/nl/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Dutch (https://app.transifex.com/netbox-community/teams/178115/nl/)\n" @@ -30,16 +30,17 @@ msgstr "" msgid "Key" msgstr "Sleutel" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Schrijven ingeschakeld" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -51,11 +52,11 @@ msgstr "Aangemaakt" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Vervalt" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Laatst gebruikt" @@ -65,47 +66,47 @@ msgstr "Laatst gebruikt" msgid "Allowed IPs" msgstr "Toegestane IP-adressen" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Ingelogd als {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Je bent uitgelogd." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Je voorkeuren zijn bijgewerkt." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "LDAP-geverifieerde gebruikersgegevens kunnen niet worden gewijzigd in " "NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Je wachtwoord is succesvol gewijzigd." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Gepland" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Provisioning" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -114,9 +115,9 @@ msgstr "Provisioning" msgid "Active" msgstr "Actief" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Offline" @@ -129,98 +130,116 @@ msgstr "Deprovisioning" msgid "Decommissioned" msgstr "Buiten gebruik" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Primair" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Secundair" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Tertiair" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inactief" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Regio (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Regio (slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Sitegroep (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Sitegroep (slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -232,172 +251,197 @@ msgstr "Sitegroep (slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Site" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Site (slug)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Provider (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Provider (slug)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Provideraccount (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Provideraccount (account)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Providernetwerk (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Circuittype (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Circuittype (slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Locatie (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Eindpunt A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Zoeken" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Circuit" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Providernetwerk (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Circuit (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Circuit (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Circuitgroep (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Circuitgroep (slug)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN's" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -410,16 +454,17 @@ msgstr "ASN's" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -429,8 +474,9 @@ msgstr "ASN's" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -483,26 +529,28 @@ msgstr "ASN's" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Omschrijving" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -514,22 +562,22 @@ msgstr "Omschrijving" msgid "Provider" msgstr "Provider" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Service-ID" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -540,33 +588,33 @@ msgstr "Service-ID" msgid "Color" msgstr "Kleur" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -579,9 +627,9 @@ msgstr "Kleur" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -597,52 +645,52 @@ msgstr "Kleur" msgid "Type" msgstr "Type" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Provideraccount" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -651,7 +699,7 @@ msgstr "Provideraccount" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -659,7 +707,7 @@ msgstr "Provideraccount" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -669,45 +717,49 @@ msgstr "Provideraccount" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Status" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -719,7 +771,7 @@ msgstr "Status" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -742,36 +794,37 @@ msgstr "Status" msgid "Tenant" msgstr "Tenant" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Installatiedatum" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Beëindigingsdatum" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Vastleggingssnelheid (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Serviceparameters" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -781,37 +834,37 @@ msgstr "Serviceparameters" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Huurovereenkomst" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Netwerkprovider" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Poortsnelheid (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Upstreamsnelheid (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Markeren als verbonden" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -819,46 +872,60 @@ msgstr "Markeren als verbonden" msgid "Circuit Termination" msgstr "Circuitbeëindiging" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Details van de beëindiging" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Prioriteit" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Toegewezen provider" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Toegewezen provideraccount" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Soort circuit" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Operationele status" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -866,7 +933,7 @@ msgstr "Operationele status" msgid "Assigned tenant" msgstr "Toegewezen huurder" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -874,44 +941,44 @@ msgstr "Toegewezen huurder" msgid "Termination" msgstr "Opzegging" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Netwerkprovider" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -920,13 +987,13 @@ msgstr "Netwerkprovider" msgid "Location" msgstr "Locatie" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -935,22 +1002,22 @@ msgstr "Locatie" msgid "Contacts" msgstr "Contacten" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -963,17 +1030,17 @@ msgstr "Contacten" msgid "Region" msgstr "Regio" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -981,180 +1048,263 @@ msgstr "Regio" msgid "Site group" msgstr "Sitegroep" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Attributen" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Account" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Termzijde" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Opdracht" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "groep" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Circuitgroep" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "kleur" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "soort circuit" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "soorten circuits" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "circuit-ID" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "Uniek circuit-ID" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "-status" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "geïnstalleerd" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "beëindigt" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "Toewijzingssnelheid (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Toegewijde rente" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "circuit" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "circuits" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "circuitgroep" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "circuitgroepen" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "prioriteit" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Circuitgroepopdracht" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Circuitgroepopdrachten" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "beëindiging" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "poortsnelheid (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Fysieke circuitsnelheid" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "upstream snelheid (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Upstream snelheid, indien verschillend van de poortsnelheid" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "ID voor kruisverbinding" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID van de lokale kruisverbinding" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "patchpaneel/poort (en)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "ID en poortnummer(s) van het patchpaneel" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "omschrijving" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "beëindiging van het circuit" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "circuitafsluitingen" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Een circuitafsluiting moet verbonden zijn met een site of een netwerk van " "een provider." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1163,33 +1313,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "naam" @@ -1198,11 +1349,12 @@ msgid "Full name of the provider" msgstr "Volledige naam van de provider" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "slug" @@ -1238,40 +1390,45 @@ msgstr "netwerkprovider" msgid "provider networks" msgstr "providernetwerken" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1286,7 +1443,7 @@ msgstr "providernetwerken" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1300,8 +1457,9 @@ msgstr "providernetwerken" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1341,9 +1499,9 @@ msgstr "providernetwerken" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1353,56 +1511,57 @@ msgstr "providernetwerken" msgid "Name" msgstr "Naam" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Circuits" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Circuit-ID" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Kant A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Kant Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Vastleggingspercentage" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1411,6 +1570,12 @@ msgstr "Vastleggingspercentage" msgid "Comments" msgstr "Opmerkingen" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Opdrachten" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Accounts" @@ -1433,7 +1598,7 @@ msgstr "Er zijn geen afsluitingen gedefinieerd voor het circuit {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Verwisselde aansluitingen voor het circuit {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "" "Deze gebruiker heeft geen toestemming om deze gegevensbron te " @@ -1453,21 +1618,19 @@ msgid "Syncing" msgstr "Synchroniseren" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Voltooid" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Mislukt" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1479,30 +1642,39 @@ msgstr "Scripts" msgid "Reports" msgstr "Rapporten" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "In afwachting" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Gepland" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Wordt uitgevoerd" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Fout" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Bijgewerkt" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Verwijderd" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Klaar" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Gestart" @@ -1519,11 +1691,13 @@ msgstr "Gestopt" msgid "Cancelled" msgstr "Geannuleerd" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Lokaal" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1533,8 +1707,8 @@ msgstr "Gebruikersnaam" msgid "Only used for cloning with HTTP(S)" msgstr "Alleen gebruikt voor klonen met HTTP(S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Wachtwoord" @@ -1556,24 +1730,63 @@ msgstr "AWS-toegangssleutel-ID" msgid "AWS secret access key" msgstr "Geheime toegangssleutel van AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Object aangemaakt" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Object bijgewerkt" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Object verwijderd" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Opdracht gestart" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Opdracht voltooid" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Opdracht is mislukt" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Taak is fout" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Gegevensbron (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Gegevensbron (naam)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Gebruiker (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Gebruikersnaam" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1581,14 +1794,14 @@ msgstr "Gegevensbron (naam)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Ingeschakeld" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1601,11 +1814,11 @@ msgstr "Parameters" msgid "Ignore rules" msgstr "Regels negeren" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1615,76 +1828,99 @@ msgstr "Regels negeren" msgid "Data Source" msgstr "Gegevensbron" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Bestand" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Gegevensbron" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Aangemaakt" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Soort object" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Aangemaakt na" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Eerder gemaakt" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Daarna gepland" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Eerder gepland" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Begonnen na" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Eerder begonnen" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Voltooid na" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Eerder voltooid" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Gebruiker" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Tijd" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Na" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Voordien" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Actie" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1716,19 +1952,19 @@ msgstr "" msgid "Rack Elevations" msgstr "Rackverhogingen" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Stroom" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1745,7 +1981,9 @@ msgstr "Banners" msgid "Pagination" msgstr "Paginering" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Validatie" @@ -1755,7 +1993,7 @@ msgstr "Validatie" msgid "User Preferences" msgstr "Gebruikersvoorkeuren" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1778,10 +2016,50 @@ msgstr "Huidige waarde: {value}" msgid " (default)" msgstr " (standaard)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "tijd" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "gebruikersnaam" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "verzoek-ID" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "daad" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "gegevens vóór de wijziging" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "gegevens na de wijziging" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "wijziging van het object" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "wijzigingen in het object" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"Logboekregistratie van wijzigingen wordt niet ondersteund voor dit " +"objecttype ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "aangemaakt" @@ -1814,14 +2092,14 @@ msgstr "Huidige configuratie" msgid "Config revision #{id}" msgstr "Revisie van de configuratie #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1829,62 +2107,63 @@ msgstr "Revisie van de configuratie #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "type" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "ingeschakeld" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "negeer regels" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Patronen (één per regel) die overeenkomen met bestanden om te negeren " "tijdens het synchroniseren" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "parameters" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "laatst gesynchroniseerd" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "gegevensbron" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "gegevensbronnen" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Onbekend backend-type: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "Kan de synchronisatie niet starten; de synchronisatie is al bezig." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1892,48 +2171,48 @@ msgstr "" "Er is een fout opgetreden bij het initialiseren van de backend. Er moet een " "afhankelijkheid worden geïnstalleerd: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "laatst bijgewerkt" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "pad" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Bestandspad relatief ten opzichte van de hoofdmap van de gegevensbron" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "grootte" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "hash" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "De lengte moet 64 hexadecimale tekens zijn." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "SHA256-hash van de bestandsgegevens" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "gegevensbestand" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "gegevensbestanden" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "opname automatisch synchroniseren" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "records automatisch synchroniseren" @@ -1957,60 +2236,96 @@ msgstr "beheerd bestand" msgid "managed files" msgstr "beheerde bestanden" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "gepland" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "interval" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Herhalingsinterval (in minuten)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "gestart" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "voltooid" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "gegevens" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "fout" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "taak-ID" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "taak" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "taken" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "Taken kunnen niet worden toegewezen aan dit objecttype ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" "Ongeldige status voor beëindiging van het dienstverband. De keuzes zijn: " "{choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"enqueue () kan niet worden aangeroepen met waarden voor zowel schedule_at " +"als immediate." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Verwijdering wordt voorkomen door een beschermingsregel: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Volledige naam" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Object" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "ID aanvragen" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Is actief" @@ -2025,51 +2340,63 @@ msgid "Last updated" msgstr "Laatst bijgewerkt" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Object" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Interval" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Versie" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Pakket" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Laatst bijgewerkt" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Minimale NetBox-versie" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Maximale NetBox-versie" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Geen plugin-gegevens gevonden" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Auteur" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "E-mail van de auteur" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Geïnstalleerd" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Gecertificeerd" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Gepubliceerd" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Geen plug-ins gevonden" +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Geïnstalleerde versie" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Laatste versie" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2083,7 +2410,7 @@ msgstr "Workers" msgid "Host" msgstr "Host" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Poort" @@ -2131,62 +2458,72 @@ msgstr "PIDE" msgid "No workers found" msgstr "Geen workers gevonden" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Taak in de wachtrij #{id} om te synchroniseren {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Herstelde configuratierevisie #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Taak {job_id} niet gevonden" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Baan {id} is verwijderd." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Fout bij het verwijderen van de taak {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Baan {id} niet gevonden." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Baan {id} is opnieuw gevraagd." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Baan {id} is ondervraagd." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Baan {id} is gestopt." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Kon de taak niet stoppen {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "De catalogus met plug-ins kon niet worden geladen" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Plug-in {name} niet gevonden" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Positie (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "Faciliteits-ID" @@ -2194,8 +2531,8 @@ msgstr "Faciliteits-ID" msgid "Staging" msgstr "Klaarzetten" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Ontmanteling" @@ -2254,27 +2591,39 @@ msgstr "Beschikbaar" msgid "Deprecated" msgstr "Verouderd" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Millimeters" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Inches" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Van voor naar achter" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Van achter naar voren" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2290,278 +2639,273 @@ msgstr "Inches" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Ouder" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Kind" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Voorkant" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Achterkant" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Klaargezet" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Inventaris" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Van voor naar achter" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Van achter naar voren" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Van links naar rechts" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Van rechts naar links" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Van links naar achteren" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Passief" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Gemengd" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (niet-vergrendelend)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (vergrendeling)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Californische stijl" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "Internationaal/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Gepatenteerd" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Andere" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/internationaal" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Fysiek" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Virtueel" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Draadloos" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Virtuele interfaces" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Bridge" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Linkaggregatiegroep (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (vast)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modulair)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (backplane)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Mobiel" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Serienummer" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Coaxiaal" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Stapelen" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Half" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Volledig" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Auto" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Toegang" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Getagd" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Getagd (Alles)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "IEEE-standaard" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Passief 24V (2 paren)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Passief 24V (4 paren)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Passief 48V (2 paren)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Passief 48V (4 paren)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Koper" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Glasvezel" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Vezel" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Verbonden" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Kilometers" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Meters" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Centimeters" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Mijlen" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Feet" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Kilogrammen" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Gram" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Ponden" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Ons" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Primair" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Redundant" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Een fase" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Drie fase" @@ -2575,330 +2919,335 @@ msgstr "Ongeldig formaat van het MAC-adres: {value}" msgid "Invalid WWN format: {value}" msgstr "Ongeldig WWN-formaat: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Ouderregio (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Ouderregio (slug)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Oudersitegroep (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Bovenliggende sitegroep (slug)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Groep (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Groep (slug)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "ALS (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Locatie van de ouder (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Locatie van de ouder (slug)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Locatie (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Locatie (slug)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Fabrikant (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Fabrikant (slug)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Racktype (slug)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Racktype (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rol (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rol (slug)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Rek (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Gebruiker (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Gebruiker (naam)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Fabrikant (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Fabrikant (slug)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Standaardplatform (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Standaardplatform (slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Heeft een afbeelding van de voorkant" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Heeft een afbeelding van de achterkant" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Heeft consolepoorten" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Heeft consoleserverpoorten" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Heeft voedingspoorten" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Heeft stopcontacten" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Heeft interfaces" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Heeft pass-through-poorten" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Heeft modulevakken" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Heeft apparaatvakken" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Heeft inventarisitems" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Soort apparaat (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Moduletype (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Voedingspoort (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Onderliggend inventarisitem (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Configuratiesjabloon (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Soort apparaat (slug)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Ouderapparaat (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Platform (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Platform (slug)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Sitenaam (slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Ouderbaby (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "VM-cluster (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Clustergroep (slug)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Clustergroep (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Apparaatmodel (slug)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Is volledige diepte" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC-adres" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Heeft een primair IP-adres" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Heeft een IP-adres buiten de band" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Virtueel chassis (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Is een virtueel chassislid" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Heeft een context voor een virtueel apparaat" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Model van het apparaat" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Interface (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Moduletype (model)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Modulebaai (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Modulevak (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Apparaat (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Rack (naam)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Apparaat (naam)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Soort apparaat (model)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Rol van het apparaat (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Rol van het apparaat (slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Virtueel chassis (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2907,33 +3256,33 @@ msgstr "Virtueel chassis (ID)" msgid "Virtual Chassis" msgstr "Virtueel chassis" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Module (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Kabel (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Toegewezen VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "Toegewezen VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2950,121 +3299,125 @@ msgstr "Toegewezen VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Virtuele chassisinterfaces voor apparaten" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Virtuele chassisinterfaces voor apparaat (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Soort interface" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Ouderinterface (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Overbrugde interface (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "LAG-interface (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Context van het virtuele apparaat" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Context van het virtuele apparaat (ID)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Draadloos LAN" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Draadloze link" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Baai voor oudermodule (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Geïnstalleerde module (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Geïnstalleerd apparaat (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Geïnstalleerd apparaat (naam)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Meester (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Master (naam)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Tenant (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Tenant (slug)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Onbeëindigd" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Voedingspaneel (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3072,13 +3425,13 @@ msgstr "Voedingspaneel (ID)" msgid "Tags" msgstr "Labels" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3092,168 +3445,114 @@ msgstr "" "Alfanumerieke reeksen worden ondersteund. (Moet overeenkomen met het aantal " "namen dat wordt aangemaakt.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "groep" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Naam van de contactpersoon" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Telefoonnummer contacteren" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "E-mailadres voor contact" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Tijdzone" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Rol" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Serienummer" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Tag voor bedrijfsmiddelen" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Fabrikant" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Vormfactor" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Breedte" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Hoogte (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Aflopende eenheden" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Buitenbreedte" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Buitendiepte" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Buitenste eenheid" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Inbouwdiepte" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3261,31 +3560,127 @@ msgstr "Inbouwdiepte" msgid "Weight" msgstr "Gewicht" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Maximaal gewicht" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Gewichtseenheid" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Racktype" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Buitenafmetingen" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Dimensies" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Nummering" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Rol" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Serienummer" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Tag voor bedrijfsmiddelen" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Luchtstroom" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3295,158 +3690,132 @@ msgstr "Gewichtseenheid" msgid "Rack" msgstr "Rek" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Hardware" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Fabrikant" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Standaardplatform" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Onderdeelnummer" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "U-hoogte" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 -msgid "Exclude from utilization" -msgstr "Uitsluiten van gebruik" - -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Luchtstroom" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 +msgid "Exclude from utilization" +msgstr "Uitsluiten van gebruik" + +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Soort apparaat" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Moduletype" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Chassis" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "VM-rol" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Configuratiesjabloon" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Soort apparaat" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Rol van het apparaat" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Platform" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3457,7 +3826,7 @@ msgstr "Platform" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3465,7 +3834,7 @@ msgstr "Platform" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3473,7 +3842,7 @@ msgstr "Platform" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3483,23 +3852,23 @@ msgstr "Platform" msgid "Device" msgstr "Apparaat" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Configuratie" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Moduletype" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3508,7 +3877,7 @@ msgstr "Moduletype" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3517,141 +3886,142 @@ msgstr "Moduletype" msgid "Label" msgstr "Label" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Lengte" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Lengte-eenheid" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Domein" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Voedingspaneel" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Levering" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Spanning" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Stroomsterkte" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Maximaal gebruik" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Maximale trekking" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Maximaal stroomverbruik (watt)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Toegewezen loting" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Toegewezen stroomverbruik (watt)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Voedingspoort" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Voer de poot in" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Alleen voor beheer" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "PoE-modus" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE-type" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Draadloze rol" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Module" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Contexten van virtuele apparaten" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Snelheid" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3665,293 +4035,298 @@ msgstr "Snelheid" msgid "Mode" msgstr "Modus" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN-groep" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN zonder label" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Getagde VLAN's" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Draadloze LAN-groep" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Draadloze LAN's" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Addressing" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Operatie" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Gerelateerde interfaces" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "802.1Q-omschakeling" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "De interfacemodus moet worden gespecificeerd om VLAN's toe te wijzen" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "" "Aan een toegangsinterface kunnen geen gelabelde VLAN's worden toegewezen." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Naam van de moederregio" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Naam van de oudersitegroep" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Toegewezen regio" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Toegewezen groep" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "beschikbare opties" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Toegewezen site" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Locatie van de ouders" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Locatie niet gevonden." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Naam van de toegewezen tenant" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Naam van de toegewezen rol" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "De fabrikant van dit racktype" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Racktype" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "De positie met het laagst genummerde nummer in het rack" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Breedte van rail tot rail (in inches)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Eenheid voor buitenafmetingen" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Eenheid voor rackgewichten" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Naam van de toegewezen tenant" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Naam van de toegewezen rol" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Richting van de luchtstroom" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Site voor ouders" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Locatie van het rek (indien aanwezig)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Eenheden" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Door komma's gescheiden lijst van individuele eenheidsnummers" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "De fabrikant die dit apparaattype produceert" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Het standaardplatform voor apparaten van dit type (optioneel)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Gewicht van het apparaat" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Eenheid voor het gewicht van het apparaat" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Gewicht van de module" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Eenheid voor modulegewicht" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Beperk de platformtoewijzingen aan deze fabrikant" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Toegewezen rol" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Apparaattype fabrikant" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Apparaattype model" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Toegewezen platform" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Virtueel chassis" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Cluster" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Virtualisatiecluster" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Toegewezen locatie (indien aanwezig)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Toegewezen rek (indien aanwezig)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Gezicht" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Gemonteerd rackfront" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Ouderapparaat (voor apparaten voor kinderen)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Toestelvak" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Apparaatvak waarin dit apparaat is geïnstalleerd (voor onderliggende " "apparaten)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Richting van de luchtstroom" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Het apparaat waarop deze module is geïnstalleerd" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Modulevak" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "De moduleruimte waarin deze module is geïnstalleerd" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Het type module" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Componenten repliceren" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3959,238 +4334,238 @@ msgstr "" "Componenten die aan dit moduletype zijn gekoppeld automatisch invullen " "(standaard ingeschakeld)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Componenten adopteren" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Reeds bestaande componenten adopteren" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Poorttype" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Poortsnelheid in bps" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Type stopcontact" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Lokale voedingspoort die dit stopcontact voedt" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Elektrische fase (voor driefasige circuits)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Interface voor ouders" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Overbrugde interface" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Lag" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "LAG-interface voor ouders" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Vdcs" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "VDC-namen gescheiden door komma's, tussen dubbele aanhalingstekens. " "Voorbeeld:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Fysiek medium" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Dubbelzijdig" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Poe-modus" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Poe-type" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "IEEE 802.1Q operationele modus (voor L2-interfaces)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Toegewezen VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Rf-rol" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Draadloze rol (AP/station)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} is niet toegewezen aan het apparaat {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Poort aan de achterkant" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Bijbehorende poort aan de achterkant" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Classificatie van fysieke media" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Geïnstalleerd apparaat" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Kinderapparaat dat in deze bay is geïnstalleerd" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Kinderapparaat niet gevonden." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Onderliggend inventarisitem" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Soort onderdeel" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Soort onderdeel" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Naam van het onderdeel" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Naam van de component" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Onderdeel niet gevonden: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Side A-apparaat" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Naam van het apparaat" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Type kant A" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Soort beëindiging" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Naam van kant A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Naam van beëindiging" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Side B-apparaat" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Type kant B" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Naam van kant B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Status van de verbinding" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Kant {side_upper}: {device} {termination_object} is al verbonden" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} nevenbeëindiging niet gevonden: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Meester" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Master-apparaat" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Naam van de moedersite" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Stroomopwaarts stroompaneel" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Primair of redundant" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Soort voeding (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Enkel- of driefasig" @@ -4210,7 +4585,7 @@ msgstr "" "De gelabelde VLAN's ({vlans}) moeten tot dezelfde site behoren als het " "bovenliggende apparaat/VM van de interface, of ze moeten globaal zijn" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4218,17 +4593,27 @@ msgstr "" "Kan een module met tijdelijke aanduidingen niet installeren in een " "modulecompartiment zonder gedefinieerde positie." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Kan een module met tijdelijke aanduidingswaarden niet installeren in een " +"modulelaurierboom {level} in een boom, maar {tokens} tijdelijke aanduidingen" +" gegeven." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "Kan niet adopteren {model} {name} omdat het al bij een module hoort" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "EEN {model} genoemd {name} bestaat al" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4237,7 +4622,7 @@ msgstr "EEN {model} genoemd {name} bestaat al" msgid "Power Panel" msgstr "Voedingspaneel" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4247,15 +4632,15 @@ msgstr "Stroomvoorziening" msgid "Side" msgstr "Kant" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Status van het apparaat" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Regio van het moederland" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4263,62 +4648,67 @@ msgstr "Regio van het moederland" msgid "Parent group" msgstr "Oudergroep" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Faciliteit" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Racktype" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Functie" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Afbeeldingen" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Componenten" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Rol van het subapparaat" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Model" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Heeft een OOB IP" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Virtueel chassislid" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Heeft contexten voor virtuele apparaten" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Clustergroep" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Bekabeld" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Bezet" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4330,43 +4720,43 @@ msgstr "Bezet" msgid "Connection" msgstr "Verbinding" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Vriendelijk" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Alleen voor beheer" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Draadloos kanaal" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Kanaalfrequentie (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Kanaalbreedte (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Zendvermogen (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4376,7 +4766,7 @@ msgstr "Zendvermogen (dBm)" msgid "Cable" msgstr "Kabel" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Ontdekt" @@ -4385,28 +4775,31 @@ msgstr "Ontdekt" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Er bestaat al een virtueel chassislid op zijn plaats {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Contactgegevens" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Rol van het rek" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Inventarisbeheer" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Slug" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Buitenafmetingen" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Selecteer een vooraf gedefinieerd racktype of stel hieronder de fysieke " +"kenmerken in." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Dimensies" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Inventarisbeheer" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4414,96 +4807,73 @@ msgstr "" "Door komma's gescheiden lijst van numerieke eenheid-ID's. Een bereik kan " "worden gespecificeerd met een koppelteken." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Reservatie" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Slug" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Chassis" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Apparaat Rol" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "" "De eenheid met het laagste nummer die door het apparaat wordt gebruikt" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" "De positie in het virtuele chassis waarmee dit apparaat wordt " "geïdentificeerd" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Prioriteit" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "De prioriteit van het apparaat in het virtuele chassis" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "" "Componenten die aan dit moduletype zijn gekoppeld automatisch invullen" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "De maximale lengte is 32767 (elke eenheid)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Kenmerken" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Sjabloon voor consolepoort" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Poortsjabloon voor consoleserver" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Sjabloon voor de voorpoort" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Interfacesjabloon" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Sjabloon voor stopcontact" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Sjabloon voor voedingspoort" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Sjabloon voor achterpoort" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4514,7 +4884,7 @@ msgstr "Sjabloon voor achterpoort" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4523,7 +4893,7 @@ msgstr "Sjabloon voor achterpoort" msgid "Interface" msgstr "Interface" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4531,14 +4901,14 @@ msgstr "Interface" msgid "Console Port" msgstr "Consolepoort" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Console Server-poort" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4549,8 +4919,8 @@ msgstr "Console Server-poort" msgid "Front Port" msgstr "Poort Voor" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4562,36 +4932,36 @@ msgstr "Poort Voor" msgid "Rear Port" msgstr "Poort achter" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Voedingspoort" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Stopcontact" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Toewijzing van componenten" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "Een InventoryItem kan slechts aan één component worden toegewezen." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "LAG-interface" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Apparaat voor kinderen" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4599,41 +4969,41 @@ msgstr "" "Kindapparaten moeten eerst worden aangemaakt en toegewezen aan de site en " "het rack van het ouderapparaat." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Consolepoort" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Console-serverpoort" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Poort voor" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Stopcontact" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Inventarisitem" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Rol van het inventarisitem" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "Primaire IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "Primaire IPv6" @@ -4697,7 +5067,7 @@ msgstr "" "overeenkomen met het geselecteerde aantal posities aan de achterkant van de " "poort ({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4723,7 +5093,7 @@ msgstr "Voor het eerste VC-lid moet een positie worden gespecificeerd." #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "label" @@ -4856,41 +5226,41 @@ msgstr "" "Een componentsjabloon moet gekoppeld zijn aan een apparaattype of een " "moduletype." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "sjabloon voor consolepoort" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "sjablonen voor consolepoorten" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "poortsjabloon voor consoleserver" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "poortsjablonen voor consoleservers" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "maximale trekking" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "toegewezen gelijkspel" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "sjabloon voor voedingspoort" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "sjablonen voor voedingspoorten" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -4898,96 +5268,96 @@ msgstr "" "De toegewezen trekking mag niet hoger zijn dan de maximale trekking " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "voerbeen" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Fase (voor driefasige voedingen)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "sjabloon voor stopcontact" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "sjablonen voor stopcontacten" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Voedingspoort voor ouders ({power_port}) moet tot hetzelfde apparaattype " "behoren" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Voedingspoort voor ouders ({power_port}) moet tot hetzelfde moduletype " "behoren" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "alleen beheer" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "bridge-interface" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "draadloze rol" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "interfacesjabloon" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "interfacesjablonen" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Een interface kan niet naar zichzelf worden overbrugd." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Bridge-interface ({bridge}) moet tot hetzelfde apparaattype behoren" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Bridge-interface ({bridge}) moet tot hetzelfde moduletype behoren" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "positie van de achterpoort" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "sjabloon voor de voorpoort" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "sjablonen voor de voorpoort" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Achterpoort ({name}) moet tot hetzelfde apparaattype behoren" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4996,48 +5366,48 @@ msgstr "" "Ongeldige positie van de achterpoort ({position}); achterpoort {name} heeft " "slechts {count} standen" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "standen" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "sjabloon voor de achterpoort" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "sjablonen voor achterpoorten" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "positie" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Identificatie waarnaar moet worden verwezen bij het hernoemen van " "geïnstalleerde componenten" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "sjabloon voor modulebay" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "sjablonen voor modulebay" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "sjabloon voor apparaatvak" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "sjablonen voor apparaatruimte" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5046,21 +5416,21 @@ msgstr "" "De rol van het apparaattype van het subapparaat ({device_type}) moet op " "„parent” zijn ingesteld om apparaatbays toe te staan." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "onderdeel-ID" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Onderdeel-ID toegewezen door de fabrikant" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "sjabloon voor inventarisitems" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "sjablonen voor inventarisitems" @@ -5204,27 +5574,27 @@ msgstr "Ingevuld per geselecteerd kanaal (indien ingesteld)" msgid "transmit power (dBm)" msgstr "zendvermogen (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "draadloze LAN's" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "VLAN zonder label" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "gelabelde VLAN's" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "interface" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "interfaces" @@ -5240,7 +5610,7 @@ msgstr "" "{display_type} interfaces kunnen niet als verbonden worden gemarkeerd." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Een interface kan niet zijn eigen ouder zijn." @@ -5406,32 +5776,39 @@ msgstr "" "Het aantal posities mag niet minder zijn dan het aantal toegewezen poorten " "aan de voorkant ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "modulevak" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "modulevakken" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "" +"Een modulecompartiment mag niet behoren tot een module die erin is " +"geïnstalleerd." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "apparaatvak" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "bays voor apparaten" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "Dit type apparaat ({device_type}) ondersteunt geen apparaatsleuven." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Kan een apparaat niet op zichzelf installeren." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5439,61 +5816,62 @@ msgstr "" "Kan het opgegeven apparaat niet installeren; het apparaat is al " "geïnstalleerd in {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "Rol van het inventarisitem" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "Rollen van inventarisitems" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "serienummer" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "tag voor bedrijfsmiddelen" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Een unieke tag die wordt gebruikt om dit item te identificeren" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "ontdekt" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Dit item is automatisch ontdekt" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "inventarisitem" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "inventarisartikelen" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Kan zichzelf niet als ouder toewijzen." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "" "Het item van de bovenliggende inventaris behoort niet tot hetzelfde " "apparaat." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "Kan een inventarisitem met afhankelijke kinderen niet verplaatsen" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "Kan inventarisitem niet toewijzen aan component op een ander apparaat" @@ -5506,6 +5884,7 @@ msgid "manufacturers" msgstr "fabrikanten" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "model-" @@ -5521,7 +5900,7 @@ msgstr "onderdeelnummer" msgid "Discrete part number (optional)" msgstr "Discreet onderdeelnummer (optioneel)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "hoogte (U)" @@ -5557,7 +5936,8 @@ msgstr "" "apparaatvakken. Laat dit veld leeg als dit apparaattype geen ouder of kind " "is." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "luchtstroom" @@ -5604,148 +5984,148 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Apparaattypen voor kinderen moeten 0U zijn." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "moduletype" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "moduletypen" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Virtuele machines kunnen aan deze rol worden toegewezen" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "rol van het apparaat" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "rollen van het apparaat" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Beperk dit platform optioneel tot apparaten van een bepaalde fabrikant" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "platform" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "platformen" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "De functie die dit apparaat dient" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Serienummer van het chassis, toegekend door de fabrikant" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Een unieke tag die wordt gebruikt om dit apparaat te identificeren" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "positie (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "gezicht met een rekje" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "primaire IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "primaire IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "IP-adres buiten de band" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "VC-positie" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Virtuele chassispositie" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "VC-prioriteit" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Verkiezingsprioriteit van het virtuele chassis" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "breedtegraad" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "GPS-coördinaat in decimaal formaat (xx.jjjjj)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "lengtegraad" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "De apparaatnaam moet per site uniek zijn." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "apparaat" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "apparaten" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Rek {rack} hoort niet bij de site {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Locatie {location} hoort niet bij de site {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Rek {rack} hoort niet bij de locatie {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "Kan geen rackface selecteren zonder een rack toe te wijzen." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "Kan geen rackpositie selecteren zonder een rack toe te wijzen." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "De positie moet in stappen van 0,5 rekeenheden zijn." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" "Bij het bepalen van de positie van het rek moet het oppervlak van het rack " "worden gespecificeerd." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -5753,7 +6133,7 @@ msgstr "" "Een 0U-apparaattype ({device_type}) kan niet worden toegewezen aan een " "rackpositie." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5761,7 +6141,7 @@ msgstr "" "Onderliggende apparaattypen kunnen niet aan een rackface worden toegewezen. " "Dit is een kenmerk van het ouderapparaat." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5769,7 +6149,7 @@ msgstr "" "Onderliggende apparaattypen kunnen niet worden toegewezen aan een " "rackpositie. Dit is een kenmerk van het ouderapparaat." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5778,22 +6158,22 @@ msgstr "" "U{position} is al bezet of beschikt niet over voldoende ruimte voor dit " "apparaattype: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} is geen IPv4-adres." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Het opgegeven IP-adres ({ip}) is niet toegewezen aan dit apparaat." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} is geen IPv6-adres." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5803,26 +6183,26 @@ msgstr "" "apparaattypen, maar het type van dit apparaat behoort tot " "{devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Het toegewezen cluster behoort tot een andere site ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "De positie van een apparaat dat aan een virtueel chassis is toegewezen, moet" " zijn positie hebben bepaald." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "module" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "modules" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5831,15 +6211,15 @@ msgstr "" "De module moet worden geïnstalleerd in een modulecompartiment dat bij het " "toegewezen apparaat hoort ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "domein" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "virtueel chassis" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." @@ -5847,7 +6227,7 @@ msgstr "" "De geselecteerde master ({master}) is niet toegewezen aan dit virtuele " "chassis." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5856,41 +6236,41 @@ msgstr "" "Kan het virtuele chassis niet verwijderen {self}. Er zijn lidinterfaces die " "een LAG-interface tussen chassis vormen." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "-identificatiecode" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Numerieke identificatie die uniek is voor het ouderapparaat" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "reacties" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "context van het virtuele apparaat" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "contexten van virtuele apparaten" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} is geen IPv{family} adres." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "Het primaire IP-adres moet bij een interface op het toegewezen apparaat " "horen." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "gewicht" @@ -5968,94 +6348,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "De spanning kan niet negatief zijn voor de AC-voeding" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "rack rol" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "rack rollen" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "ID van de faciliteit" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Lokaal toegewezen identificatiecode" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Functionele rol" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Een unieke tag die wordt gebruikt om dit rek te identificeren" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "breedte" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Breedte van spoor tot spoor" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Hoogte in rekeenheden" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "starteenheid" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Starteenheid voor rack" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "aflopende eenheden" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Eenheden zijn van boven naar beneden genummerd" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "buitenbreedte" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Buitenafmeting van het rek (breedte)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "buitendiepte" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Buitenafmeting van het rek (diepte)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "buiteneenheid" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "maximaal gewicht" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Maximaal draagvermogen voor het rack" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "montagediepte" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6063,30 +6408,77 @@ msgstr "" "Maximale diepte van een gemonteerd apparaat, in millimeters. Voor rekken met" " vier stijlen is dit de afstand tussen de voor- en achterrails." -#: netbox/dcim/models/racks.py:221 -msgid "rack" -msgstr "rack" +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "maximaal gewicht" -#: netbox/dcim/models/racks.py:222 -msgid "racks" -msgstr "racks" +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Maximaal draagvermogen voor het rack" -#: netbox/dcim/models/racks.py:237 -#, python-brace-format -msgid "Assigned location must belong to parent site ({site})." -msgstr "De toegewezen locatie moet bij de bovenliggende site horen ({site})." +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "vormfactor" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "type rek" -#: netbox/dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "soorten rekken" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" "Moet een eenheid specificeren bij het instellen van een buitenbreedte/diepte" -#: netbox/dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "" "Moet een eenheid specificeren bij het instellen van een maximaal gewicht" -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "rack rol" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "rack rollen" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "ID van de faciliteit" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Lokaal toegewezen identificatiecode" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Functionele rol" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Een unieke tag die wordt gebruikt om dit rek te identificeren" + +#: netbox/dcim/models/racks.py:359 +msgid "rack" +msgstr "rack" + +#: netbox/dcim/models/racks.py:360 +msgid "racks" +msgstr "racks" + +#: netbox/dcim/models/racks.py:375 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "De toegewezen locatie moet bij de bovenliggende site horen ({site})." + +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6095,7 +6487,7 @@ msgstr "" "Het rek moet minimaal {min_height}Ik praat om de momenteel geïnstalleerde " "apparaten te huisvesten." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6104,29 +6496,29 @@ msgstr "" "De nummering van de rackeenheid moet beginnen bij {position} of minder om " "momenteel geïnstalleerde apparaten te huisvesten." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "De locatie moet van dezelfde locatie zijn, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "eenheden" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "Reserveren van de baan" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "Reserveringen volgen" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Ongeldige eenheid (en) voor {height}U-rail: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "De volgende eenheden zijn al gereserveerd: {unit_list}" @@ -6229,11 +6621,11 @@ msgstr "Beëindiging A" msgid "Termination B" msgstr "Eindpunt B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Apparaat A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Apparaat B" @@ -6268,13 +6660,13 @@ msgid "Reachable" msgstr "Bereikbaar" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Apparaten" @@ -6284,17 +6676,17 @@ msgid "VMs" msgstr "VM's" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Configuratiesjabloon" @@ -6302,22 +6694,22 @@ msgstr "Configuratiesjabloon" msgid "Site Group" msgstr "Sitegroep" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP-adres" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "IPv4-adres" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "IPv6-adres" @@ -6354,10 +6746,10 @@ msgstr "Voedingspoorten" msgid "Power outlets" msgstr "Stopcontacten" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6367,8 +6759,8 @@ msgstr "Stopcontacten" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfaces" @@ -6394,8 +6786,8 @@ msgid "Module Bay" msgstr "Modulebaai" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6404,30 +6796,30 @@ msgstr "Modulebaai" msgid "Inventory Items" msgstr "Inventarisartikelen" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Kleur van de kabel" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Peers koppelen" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Markeer Verbonden" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Maximale trekkracht (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Toegewezen trekking (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6436,12 +6828,12 @@ msgstr "Toegewezen trekking (W)" msgid "IP Addresses" msgstr "IP-adressen" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP-groepen" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6452,52 +6844,52 @@ msgstr "FHRP-groepen" msgid "Tunnel" msgstr "Tunnel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Alleen beheer" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC's" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Geïnstalleerde module" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Seriële module" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Tag voor module-bedrijfsmiddelen" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Status van de module" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Onderdeel" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Artikelen" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Apparaattypen" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Moduletypen" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Platformen" @@ -6516,12 +6908,13 @@ msgid "U Height" msgstr "U-hoogte" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Instanties" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6530,9 +6923,9 @@ msgstr "Instanties" msgid "Console Ports" msgstr "Consolepoorten" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6541,9 +6934,9 @@ msgstr "Consolepoorten" msgid "Console Server Ports" msgstr "Serverpoorten voor de console" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6552,9 +6945,9 @@ msgstr "Serverpoorten voor de console" msgid "Power Ports" msgstr "Voedingspoorten" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6563,9 +6956,9 @@ msgstr "Voedingspoorten" msgid "Power Outlets" msgstr "Stopcontacten" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6573,9 +6966,9 @@ msgstr "Stopcontacten" msgid "Front Ports" msgstr "Ports aan de voorkant" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6584,23 +6977,26 @@ msgstr "Ports aan de voorkant" msgid "Rear Ports" msgstr "Poorten achteraan" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Apparaatvakken" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Modulebays" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Stroomvoedingen" @@ -6613,41 +7009,45 @@ msgstr "Maximaal gebruik" msgid "Available Power (VA)" msgstr "Beschikbaar vermogen (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Racks" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Hoogte" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Ruimte" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Buitenbreedte" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Buitendiepte" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Maximaal gewicht" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Ruimte" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Sites" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "De testcase moet peer_termination_type instellen" @@ -6656,79 +7056,79 @@ msgstr "De testcase moet peer_termination_type instellen" msgid "Disconnected {count} {type}" msgstr "Verbinding verbroken {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Reserveringen" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Apparaten zonder rack" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Context van de configuratie" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Render-configuratie" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "" "Er is een fout opgetreden tijdens het renderen van de sjabloon: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Virtuele machines" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Geïnstalleerd apparaat {device} in de baai {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Apparaat verwijderd {device} van bay {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Kinderen" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Lid toegevoegd {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Kan het masterapparaat niet verwijderen {device} vanaf het virtuele chassis." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Verwijderd {device} vanaf een virtueel chassis {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Onbekende gerelateerde object (en): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "Het wijzigen van het type aangepaste velden wordt niet ondersteund." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "Planning is niet ingeschakeld voor dit script." @@ -6777,7 +7177,7 @@ msgid "Multiple objects" msgstr "Meerdere objecten" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Uitgeschakeld" @@ -6812,7 +7212,7 @@ msgstr "Nee" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Link" @@ -6832,65 +7232,56 @@ msgstr "Alfabetisch (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Alfabetisch (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Bijgewerkt" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Verwijderd" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Informatie" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Succes" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Waarschuwing" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Gevaar" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Debuggen" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Standaard" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Mislukking" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Elk uur" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 uur" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Dagelijks" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Wekelijks" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 dagen" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6898,18 +7289,16 @@ msgstr "30 dagen" msgid "Create" msgstr "Creëren" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Bijwerken" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6920,81 +7309,85 @@ msgstr "Bijwerken" msgid "Delete" msgstr "Verwijderen" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Blauw" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Indigo" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Paars" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Roze" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Rood" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "Oranje" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Geel" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Groen" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Groenblauw" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Cyaan" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Grijs" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Zwart" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Wit" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Script" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Melding" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7069,60 +7462,60 @@ msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "" "Ongeldig formaat. Objectfilters moeten als woordenboek worden doorgegeven." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Objectlijst" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Geef een willekeurige lijst met objecten weer." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Het standaardaantal objecten dat moet worden weergegeven" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" "Ongeldig formaat. URL-parameters moeten als woordenboek worden doorgegeven." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS-feed" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Voeg een RSS-feed van een externe website in." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "URL van de feed" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Het maximale aantal objecten dat moet worden weergegeven" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Hoe lang moet de inhoud in de cache worden bewaard (in seconden)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Bladwijzers" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Laat je persoonlijke bladwijzers zien" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Onbekend actietype voor een evenementregel: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "" @@ -7132,212 +7525,221 @@ msgstr "" msgid "Script module (ID)" msgstr "Scriptmodule (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Gegevensbestand (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Groep (naam)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Clustertype" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Clustertype (slug)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Tenant groep" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Tenant groep (slug)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Tag" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Label (slug)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Heeft contextgegevens voor de lokale configuratie" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Gebruikersnaam" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Groepsnaam" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Verplicht" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Moet uniek zijn" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "UI zichtbaar" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "UI bewerkbaar" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Is kloonbaar" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Minimumwaarde" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Maximale waarde" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Validatieregex" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Gedrag" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Nieuw venster" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Knopklasse" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "MIME-type" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "bestandsextensie" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Als bijlage" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Gedeeld" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "HTTP-methode" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "URL van de payload" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "SSL-verificatie" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Geheim" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "CA-bestandspad" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Over creëren" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "Bij de update" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Soorten evenementen" -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Bij verwijderen" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "Aan het begin van het werk" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "Aan het einde van het werk" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Is actief" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Objecttypen" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Een of meer toegewezen objecttypen" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Veldgegevenstype (bijv. tekst, geheel getal, enz.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Soort object" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Objecttype (voor velden met objecten of velden met meerdere objecten)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Keuze set" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Keuzeset (voor selectievelden)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Of het aangepaste veld wordt weergegeven in de gebruikersinterface" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Of het aangepaste veld bewerkbaar is in de gebruikersinterface" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "" "De basisset van vooraf gedefinieerde keuzes om te gebruiken (indien " "aanwezig)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7346,208 +7748,204 @@ msgstr "" "gescheiden door een dubbele punt: „Choice1:First Choice, Choice2:Second " "Choice”" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "knopklasse" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "De klasse van de eerste link in een groep wordt gebruikt voor de dropdown-" "knop" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Het (de) evenementtype (s) dat deze regel activeert" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Actieobject" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Webhook-naam of script als stippelpad module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} niet gevonden" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Script {name} niet gevonden" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Toegewezen objecttype" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "De classificatie van binnenkomst" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Gebruikers" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "" +"Gebruikersnamen gescheiden door komma's, tussen dubbele aanhalingstekens" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Groepen" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Groepsnamen gescheiden door komma's, tussen dubbele aanhalingstekens" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Gerelateerd objecttype" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Soort veld" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Keuzes" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Gegevens" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Gegevensbestand" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Inhoudstypen" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "HTTP-inhoudstype" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Evenementen" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "Soort evenement" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "Soort actie" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Creaties van objecten" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Updates van objecten" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Verwijderingen van objecten" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "De taak begint" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Beëindigingen van het werk" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Objecttype met tags" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Toegestaan objecttype" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Regio's" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Sitegroepen" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Locaties" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Apparaattypes" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Rollen" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Clustertypen" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Clustergroepen" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Clusters" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Tenant groepen" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Na" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Voordien" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Tijd" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Het (de) objecttype (s) dat dit aangepaste veld heeft" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Actie" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Standaardwaarde" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "" "Type van het gerelateerde object (alleen voor velden met object/meerdere " "objecten)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Filter voor gerelateerde objecten" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Specificeer queryparameters als een JSON-object." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Aangepast veld" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Gedrag" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Waarden" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7555,7 +7953,7 @@ msgstr "" "Het type gegevens dat in dit veld is opgeslagen. Voor velden met " "object/meerdere objecten selecteert u hieronder het gerelateerde objecttype." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7563,7 +7961,11 @@ msgstr "" "Dit wordt weergegeven als helptekst voor het formulierveld. Markdown wordt " "ondersteund." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Gerelateerd object" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7571,16 +7973,16 @@ msgstr "" "Voer één keuze per regel in. Voor elke keuze kan een optioneel label worden " "gespecificeerd door er een dubbele punt aan toe te voegen. Voorbeeld:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Aangepaste link" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Sjablonen" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7590,63 +7992,68 @@ msgstr "" "{example}. Links die als lege tekst worden weergegeven, worden niet " "weergegeven." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "" "Jinja2-sjablooncode voor de link-URL. Verwijs naar het object als {example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Sjablooncode" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Sjabloon exporteren" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Renderen" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "De inhoud van de sjabloon wordt ingevuld via de externe bron die hieronder " "is geselecteerd." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Moet lokale inhoud of een gegevensbestand specificeren" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Opgeslagen filter" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "" +"In een meldingsgroep wordt ten minste één gebruiker of groep gespecificeerd." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "HTTP-aanvraag" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Keuze van de actie" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Voer de voorwaarden in JSON formaat." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7654,56 +8061,34 @@ msgstr "" "Voer parameters in om door te geven aan de actie JSON formaat." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Regel voor evenementen" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Voorwaarden" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Creaties" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Triggers" -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Updates" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Meldingsgroep" -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Verwijderingen" - -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Uitvoering van taken" - -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Tenant" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Opdracht" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "" "Gegevens worden ingevuld via de externe bron die hieronder is geselecteerd." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Moet lokale gegevens of een gegevensbestand specificeren" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Inhoud" @@ -7751,49 +8136,25 @@ msgstr "Plan de uitvoering van het script op een bepaald tijdstip" msgid "Interval at which this script is re-run (in minutes)" msgstr "Interval waarmee dit script opnieuw wordt uitgevoerd (in minuten)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Geen indexers gevonden!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "tijd" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "gebruikersnaam" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "verzoek-ID" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "daad" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "gegevens vóór de wijziging" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Wijzigingen in de database zijn automatisch teruggedraaid." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "gegevens na de wijziging" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Script is met een fout afgebroken: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "wijziging van het object" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Er deed zich een uitzondering voor: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "wijzigingen in het object" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Wijzigingen in de database zijn teruggedraaid vanwege een fout." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "" -"Logboekregistratie van wijzigingen wordt niet ondersteund voor dit " -"objecttype ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Geen indexers gevonden!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7845,34 +8206,34 @@ msgstr "configuratiesjabloon" msgid "config templates" msgstr "configuratiesjablonen" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Het (de) object (en) waarop dit veld van toepassing is." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Het type gegevens dat dit aangepaste veld bevat" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "Het type NetBox-object waarnaar dit veld wordt toegewezen (voor " "objectvelden)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Naam van het interne veld" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Alleen alfanumerieke tekens en onderstrepingstekens zijn toegestaan." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "Dubbele onderstrepingstekens zijn niet toegestaan in aangepaste veldnamen." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7880,31 +8241,39 @@ msgstr "" "Naam van het veld zoals getoond aan gebruikers (indien niet opgegeven, wordt" " 'de veldnaam gebruikt)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "naam van de groep" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Aangepaste velden binnen dezelfde groep worden samen weergegeven" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "verplicht" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Indien ingeschakeld, is dit veld vereist wanneer u nieuwe objecten maakt of " -"een bestaand object bewerkt." +"Dit veld is vereist wanneer u nieuwe objecten maakt of een bestaand object " +"bewerkt." + +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "moet uniek zijn" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "De waarde van dit veld moet uniek zijn voor het toegewezen object" -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "zoekgewicht" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7912,11 +8281,11 @@ msgstr "" "Weging voor zoeken. Lagere waarden worden als belangrijker beschouwd. Velden" " met een zoekgewicht van nul worden genegeerd." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "filterlogica" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7924,11 +8293,11 @@ msgstr "" "Loose komt overeen met elk exemplaar van een bepaalde tekenreeks; exact komt" " overeen met het hele veld." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "standaard" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7936,36 +8305,45 @@ msgstr "" "Standaardwaarde voor het veld (moet een JSON-waarde zijn). Voeg tekenreeksen" " in met dubbele aanhalingstekens (bijvoorbeeld „Foo”)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filter de selectiekeuzes voor objecten met behulp van een query_params-" +"dictaat (moet een JSON-waarde zijn) .Voeg tekenreeksen in met dubbele " +"aanhalingstekens (bijvoorbeeld „Foo”)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "gewicht van het beeldscherm" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "" "Velden met een hoger gewicht worden lager weergegeven in een formulier." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "minimumwaarde" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Minimaal toegestane waarde (voor numerieke velden)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "maximale waarde" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Maximaal toegestane waarde (voor numerieke velden)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "validatieregex" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7976,284 +8354,252 @@ msgstr "" "en $ om het matchen van de hele string te forceren. Bijvoorbeeld ^ " "[A-Z]{3}$ beperkt de waarden tot precies drie hoofdletters." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "keuzeset" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Specificeert of het aangepaste veld wordt weergegeven in de " "gebruikersinterface" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Specificeert of de aangepaste veldwaarde kan worden bewerkt in de " "gebruikersinterface" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "is kloonbaar" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Repliceer deze waarde bij het klonen van objecten" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "aangepast veld" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "aangepaste velden" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Ongeldige standaardwaarde”{value}„: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "" "Er mag alleen een minimumwaarde worden ingesteld voor numerieke velden" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "" "Er mag alleen een maximumwaarde worden ingesteld voor numerieke velden" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Validatie van reguliere expressies wordt alleen ondersteund voor tekst- en " "URL-velden" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "Uniciteit kan niet worden afgedwongen voor booleaanse velden" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Selectievelden moeten een reeks keuzes specificeren." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Keuzes kunnen alleen worden ingesteld op selectievelden." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Objectvelden moeten een objecttype definiëren." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} velden definiëren mogelijk geen objecttype." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "" +"Een gerelateerd objectfilter kan alleen voor objectvelden worden " +"gedefinieerd." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Filter moet worden gedefinieerd als een woordenboek dat attributen aan " +"waarden toewijst." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Waar" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Onwaar" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "Waarden moeten overeenkomen met deze regex: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "De waarde moet een tekenreeks zijn." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "De waarde moet overeenkomen met regex '{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "De waarde moet een geheel getal zijn." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "De waarde moet minstens {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "De waarde mag niet hoger zijn dan {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "De waarde moet een decimaal getal zijn." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "De waarde moet waar of onwaar zijn." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "De datumwaarden moeten de indeling ISO 8601 hebben (JJJJ-MM-DD)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "De datum- en tijdwaarden moeten de indeling ISO 8601 hebben (JJJJ-MM-DD " "H:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Ongeldige keuze ({value}) voor keuzeset {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Ongeldige keuze (s) ({value}) voor keuzeset {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "De waarde moet een object-ID zijn, niet {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "De waarde moet een lijst met object-ID's zijn, niet {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Ongeldige object-ID gevonden: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Het verplichte veld mag niet leeg zijn." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Basisset van vooraf gedefinieerde keuzes (optioneel)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Keuzes worden automatisch alfabetisch gerangschikt" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "aangepaste veldkeuzeset" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "aangepaste veldkeuzesets" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Moet basis- of extra keuzes definiëren." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "lay-out" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "configuratie" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "dashboard" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "spatschermen" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "objecttypen" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Het (de) object (en) waarop deze regel van toepassing is." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "op create" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Wordt geactiveerd wanneer een overeenkomend object wordt gemaakt." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "bij de update" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Wordt geactiveerd wanneer een overeenkomend object wordt bijgewerkt." +msgid "The types of event which will trigger this rule." +msgstr "De soorten gebeurtenissen die deze regel zullen activeren." -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "bij verwijderen" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Wordt geactiveerd wanneer een overeenkomend object wordt verwijderd." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "bij het begin van het werk" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "" -"Wordt geactiveerd wanneer een taak voor een overeenkomend object wordt " -"gestart." - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "aan het einde van het werk" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "" -"Wordt geactiveerd wanneer een taak voor een overeenkomend object wordt " -"beëindigd." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "voorwaarden" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Een set voorwaarden die bepalen of de gebeurtenis wordt gegenereerd." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "actietype" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Aanvullende gegevens om door te geven aan het actieobject" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "regel van het evenement" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "regels voor evenementen" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Er moet minstens één type gebeurtenis worden geselecteerd: aanmaken, " -"bijwerken, verwijderen, starten van de taak en/of einde van de taak." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8264,7 +8610,7 @@ msgstr "" "Jinja2-sjablonen wordt ondersteund met dezelfde context als de hoofdtekst " "van het verzoek." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available hier." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "extra kopteksten" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8291,11 +8637,11 @@ msgstr "" "Jinja2-sjablonen wordt ondersteund met dezelfde context als de hoofdtekst " "van het verzoek (hieronder)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "sjabloon voor het lichaam" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8308,11 +8654,11 @@ msgstr "" "tijdstempel, gebruikersnaam, " "aanvraag_id, en gegevens." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "geheim" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8322,16 +8668,16 @@ msgstr "" "header met een HMAC-hex-samenvatting van de payload-body met het geheim als " "sleutel. Het geheim wordt niet in het verzoek doorgegeven." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" "Activeer de verificatie van SSL-certificaten. Voorzichtig uitschakelen!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "CA-bestandspad" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8340,64 +8686,64 @@ msgstr "" "verificatie. Laat dit veld leeg om de standaardinstellingen van het systeem " "te gebruiken." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "webhook" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "webhooks" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "Geef geen CA-certificaatbestand op als SSL-verificatie is uitgeschakeld." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Het (de) objecttype (s) waarop deze link van toepassing is." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "linktekst" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Jinja2-sjablooncode voor linktekst" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL van de link" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Jinja2-sjablooncode voor link-URL" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Links met dezelfde groep verschijnen als een dropdown-menu" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "nieuw venster" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Link forceren om in een nieuw venster te openen" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "link op maat" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "links op maat" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Het (de) objecttype (s) waarop dit sjabloon van toepassing is." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8405,115 +8751,162 @@ msgstr "" "Jinja2-sjablooncode. De lijst met objecten die worden geëxporteerd, wordt " "doorgegeven als een contextvariabele met de naam queryset." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "Wordt standaard ingesteld op text/plain; charset=utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "bestandsextensie" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Uitbreiding om toe te voegen aan de gerenderde bestandsnaam" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "als bijlage" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Download het bestand als bijlage" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "sjabloon exporteren" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "sjablonen exporteren" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "„{name}„is een gereserveerde naam. Kies een andere naam." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Het (de) objecttype (s) waarop dit filter van toepassing is." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "gedeeld" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "opgeslagen filter" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "opgeslagen filters" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Filterparameters moeten worden opgeslagen als een woordenboek met " "trefwoordargumenten." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "hoogte van de afbeelding" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "breedte van de afbeelding" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "bijlage bij de afbeelding" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "bijlagen bij afbeeldingen" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" "Afbeeldingsbijlagen kunnen niet aan dit objecttype worden toegewezen " "({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "vriendelijk" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "journaalboeking" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "journaalboekingen" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Journaling wordt niet ondersteund voor dit objecttype ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "bladwijzer" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "bladwijzers" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "" "Bladwijzers kunnen niet aan dit objecttype worden toegewezen ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "lezen" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "evenement" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "melding" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "meldingen" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Objecten van dit type ({type}) ondersteunen geen meldingen." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "groepen" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "gebruikers" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "meldingsgroep" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "meldingsgroepen" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "abonnement" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "abonnementen" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "is uitvoerbaar" @@ -8554,19 +8947,19 @@ msgstr "waarde in de cache" msgid "cached values" msgstr "waarden in de cache" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "filiaal" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "takken" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "gefaseerde verandering" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "gefaseerde wijzigingen" @@ -8590,85 +8983,87 @@ msgstr "item met tags" msgid "tagged items" msgstr "getagde artikelen" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Scriptgegevens" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Parameters voor uitvoering van scripts" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Wijzigingen in de database zijn automatisch teruggedraaid." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Script is met een fout afgebroken: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Er deed zich een uitzondering voor: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Wijzigingen in de database zijn teruggedraaid vanwege een fout." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "Verwijdering wordt voorkomen door een beschermingsregel: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Ontslaan" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Objecttypen" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Uniciteit valideren" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Zichtbaar" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Bewerkbaar" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Gerelateerd objecttype" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Keuzeset" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Is kloonbaar" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Minimumwaarde" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Maximale waarde" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Validatie Regex" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Tellen" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Alfabetisch ordenen" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Nieuw venster" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Als bijlage" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8678,63 +9073,54 @@ msgstr "Als bijlage" msgid "Data File" msgstr "Gegevensbestand" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Gesynchroniseerd" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Afbeelding" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Grootte (bytes)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Lees" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "SSL-validatie" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Begin van de taak" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Einde van de opdracht" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Soorten evenementen" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Apparaat rollen" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Volledige naam" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "ID aanvragen" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Opmerkingen (kort)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Lijn" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Niveau" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Bericht" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Methode" @@ -8765,37 +9151,37 @@ msgstr "Validatieregels moeten als woordenboek worden doorgegeven" msgid "Custom validation failed for {attribute}: {exception}" msgstr "Aangepaste validatie is mislukt voor {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Ongeldig kenmerk”{name}„op aanvraag" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Ongeldig kenmerk”{name}„voor {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Je dashboard is opnieuw ingesteld." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Widget toegevoegd: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Bijgewerkte widget: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Widget verwijderd: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Fout bij het verwijderen van de widget: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "Kan script niet uitvoeren: het RQ-werkproces wordt niet uitgevoerd." @@ -8840,10 +9226,6 @@ msgstr "SLAAC" msgid "Loopback" msgstr "Loopback" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Secundair" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8869,19 +9251,19 @@ msgstr "Platte tekst" msgid "Invalid IP address format: {address}" msgstr "Ongeldig formaat van het IP-adres: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Doel importeren" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Importdoel (naam)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Doel exporteren" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Exportdoel (naam)" @@ -8946,16 +9328,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Prefixen die dit voorvoegsel of IP-adres bevatten" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Lengte van het masker" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "VLAN-nummer (1-4094)" @@ -8975,23 +9357,23 @@ msgid "Parent prefix" msgstr "Oudervoorvoegsel" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Virtuele machine (naam)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Virtuele machine (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Interface (naam)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "VM-interface (naam)" @@ -9019,19 +9401,19 @@ msgstr "Service (ID)" msgid "NAT inside IP address (ID)" msgstr "NAT binnen IP-adres (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "IP-adres (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP-adres" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "Primaire IPv4 (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "Primaire IPv6 (ID)" @@ -9064,17 +9446,17 @@ msgstr "Een CIDR-masker (bijv /24) is vereist." msgid "Address pattern" msgstr "Adrespatroon" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Zorg voor unieke ruimte" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Is privé" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9087,20 +9469,20 @@ msgstr "Is privé" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Datum toegevoegd" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN-groep" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9109,49 +9491,49 @@ msgstr "VLAN-groep" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Lengte van het voorvoegsel" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Is een zwembad" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Behandel als volledig gebruikt" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "VLAN-toewijzing" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS-naam" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocol" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Groeps-ID" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9163,157 +9545,143 @@ msgstr "Groeps-ID" msgid "Authentication type" msgstr "Authenticatietype" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Verificatiesleutel" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Authentificatie" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "Minimale VLAN-VID voor kinderen" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Maximale VLAN-VID voor kinderen" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Soort bereik" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "VLAN-ID-bereiken" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Toepassingsgebied" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Site en groep" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Poorten" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Routedoelen importeren" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Routedoelen exporteren" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "Toegewezen RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "VLAN-groep (indien aanwezig)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Ouderapparaat met toegewezen interface (indien aanwezig)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Virtuele machine" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "Bovenliggende VM van de toegewezen interface (indien aanwezig)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Toegewezen interface" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Is primair" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Maak dit het primaire IP-adres voor het toegewezen apparaat" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Geen apparaat of virtuele machine gespecificeerd; kan niet worden ingesteld " "als primair IP-adres" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" "Geen interface gespecificeerd; kan niet worden ingesteld als primair IP-" "adres" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Authenticatietype" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Soort bereik (app en model)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Minimale VLAN-VID voor kinderen (standaard: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Maximale VLAN-VID voor kinderen (standaard: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Toegewezen VLAN-groep" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "IP-protocol" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Vereist indien niet toegewezen aan een VM" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Vereist indien niet toegewezen aan een apparaat" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} is niet toegewezen aan dit apparaat/VM." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Routedoelen" @@ -9389,31 +9757,34 @@ msgstr "Toegewezen aan een interface" msgid "DNS Name" msgstr "DNS-naam" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "VLAN-ID" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN's" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Minimale VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Bevat VLAN-ID" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Maximale VID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "VLAN-ID" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9484,11 +9855,16 @@ msgstr "Virtueel IP-adres" msgid "Assignment already exists" msgstr "De opdracht bestaat al" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "VLAN-ID's" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "Kind-VLAN's" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9496,33 +9872,33 @@ msgstr "" "Door komma's gescheiden lijst van een of meer poortnummers. Een bereik kan " "worden gespecificeerd met een koppelteken." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Servicesjabloon" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Poort (en)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Service" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Servicesjabloon" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Van sjabloon" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Op maat" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9563,7 +9939,7 @@ msgstr "groeps-ID" msgid "protocol" msgstr "protocol" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "authenticatietype" @@ -9579,10 +9955,6 @@ msgstr "FHRP-groep" msgid "FHRP groups" msgstr "FHRP-groepen" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "prioriteit" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "FHRP-groepsopdracht" @@ -9599,7 +9971,7 @@ msgstr "privé" msgid "IP space managed by this RIR is considered private" msgstr "IP-ruimte die door deze RIR wordt beheerd, wordt als privé beschouwd" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR's" @@ -9857,22 +10229,6 @@ msgid "" msgstr "" "Een service moet gekoppeld zijn aan een apparaat of een virtuele machine." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "minimale VLAN-id" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Laagst toegestane ID van een onderliggend VLAN" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "maximale VLAN-ID" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Hoogst toegestane ID van een onderliggend VLAN" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "VLAN-groepen" @@ -9885,39 +10241,40 @@ msgstr "Kan scope_type niet instellen zonder scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Kan scope_id niet instellen zonder scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Bereiken kunnen elkaar niet overlappen." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" "De maximale VID voor kinderen moet groter zijn dan of gelijk zijn aan de " -"minimale VID voor kinderen" +"minimale VID voor kinderen ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "De specifieke site waaraan dit VLAN is toegewezen (indien aanwezig)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "VLAN-groep (optioneel)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "Numerieke VLAN-id (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Operationele status van dit VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "De primaire functie van dit VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN's" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9926,10 +10283,10 @@ msgstr "" "VLAN is toegewezen aan de groep {group} (toepassingsgebied: {scope}); kan " "niet ook aan de site worden toegewezen {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "VID moet tussen {minimum} en {maximum} voor VLAN's in groep {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "VID moet binnen bereik zijn {ranges} voor VLAN's in groep {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9947,8 +10304,8 @@ msgstr "unieke ruimte afdwingen" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Voorkom dubbele voorvoegsels/IP-adressen in deze VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF's" @@ -9977,8 +10334,8 @@ msgstr "Aantal sites" msgid "Provider Count" msgstr "Aantal providers" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Totalen" @@ -9987,21 +10344,21 @@ msgid "Added" msgstr "Toegevoegd" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Voorvoegsels" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Gebruik" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "IP-bereiken" @@ -10046,7 +10403,11 @@ msgstr "Toegewezen object" msgid "Scope Type" msgstr "Soort toepassingsgebied" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "VID-reeksen" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VID" @@ -10114,11 +10475,11 @@ msgstr "Interfaces voor apparaten" msgid "VM Interfaces" msgstr "VM-interfaces" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Dit veld is mogelijk niet leeg." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10126,23 +10487,37 @@ msgstr "" "De waarde moet rechtstreeks worden doorgegeven (bijvoorbeeld „foo”: 123); " "gebruik geen woordenboek of lijst." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} is geen geldige keuze." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Ongeldig inhoudstype: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Ongeldige waarde. Specificeer een inhoudstype als " "'.'." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "" +"Bereiken moeten in het formulier worden gespecificeerd (onder, boven)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Bereikgrenzen moeten worden gedefinieerd als gehele getallen." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} moet get_view_name () implementeren" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Ongeldige toestemming {permission} voor model {model}" @@ -10470,49 +10845,54 @@ msgstr "Tags verwijderen" msgid "{class_name} must specify a model class." msgstr "{class_name} moet een modelklasse specificeren." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Onbekende veldnaam '{name}'in aangepaste veldgegevens." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Ongeldige waarde voor aangepast veld '{name}': {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Aangepast veld '{name}'moet een unieke waarde hebben." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Ontbreekt het vereiste aangepaste veld '{name}'." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Externe gegevensbron" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "datapad" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "" "Pad naar extern bestand (ten opzichte van de root van de gegevensbron)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "automatische synchronisatie ingeschakeld" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Automatische synchronisatie van gegevens inschakelen wanneer het " "gegevensbestand wordt bijgewerkt" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "datum gesynchroniseerd" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} moet een sync_data () -methode implementeren." @@ -10526,217 +10906,230 @@ msgid "Site Groups" msgstr "Sitegroepen" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Rack rollen" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Verhogingen" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Tenant Groepen" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Contactgroepen" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Rollen voor contactpersonen" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Neem contact op met opdrachten" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Rack rollen" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Verhogingen" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Soorten rekken" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Modules" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Contexten van virtuele apparaten" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Fabrikanten" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Onderdelen van het apparaat" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Rollen van inventarisitems" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Verbindingen" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Kabels" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Draadloze links" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Interface-aansluitingen" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Console-aansluitingen" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Stroomaansluitingen" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Draadloze LAN-groepen" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Prefix- en VLAN-rollen" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "ASN-reeksen" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "VLAN-groepen" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Servicesjablonen" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Diensten" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Tunnels" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Tunnelgroepen" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Tunnelafsluitingen" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPN's" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Beëindigingen" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "IKE-voorstellen" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "IKE-beleid" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "IPsec-voorstellen" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "IPsec-beleid" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "IPsec-profielen" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Virtualisatie" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Virtuele schijven" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Clustertypen" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Clustergroepen" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Circuittypes" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Circuitgroepen" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Groepsopdrachten" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Circuitafsluitingen" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Providers" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Accounts van providers" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Netwerken van providers" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Voedingspanelen" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Configuraties" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Contexten configureren" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Configuratiesjablonen" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Aanpassing" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10749,114 +11142,108 @@ msgstr "Aanpassing" msgid "Custom Fields" msgstr "Aangepaste velden" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Aangepaste veldkeuzes" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Aangepaste links" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Sjablonen exporteren" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Opgeslagen filters" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Afbeeldingsbijlagen" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operaties" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Integraties" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Gegevensbronnen" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Regels voor evenementen" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhooks" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Jobs" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Loggen" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Meldingsgroepen" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Journaalboekingen" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Logboek wijzigen" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 -msgid "Admin" -msgstr "beheerder" - -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Gebruikers" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Groepen" +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 +msgid "Admin" +msgstr "beheerder" -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "API-tokens" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Machtigingen" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Systeem" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Plug-ins" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Configuratiegeschiedenis" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Achtergrondtaken" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Plug-ins" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10888,31 +11275,22 @@ msgstr "" "{template_extension} is geen subklasse van de " "NetBox.Plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"PluginTemplateExtension-klasse {template_extension} definieert geen geldig " -"model!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} moet een exemplaar zijn van NetBox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} moet een exemplaar zijn van NetBox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} moet een exemplaar zijn van NetBox.Plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context moet een woordenboek zijn" @@ -10993,75 +11371,79 @@ msgstr "Kan na initialisatie geen winkels aan het register toevoegen" msgid "Cannot delete stores from registry" msgstr "Kan winkels niet verwijderen uit het register" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "Tsjechisch" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "Deens" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Duits" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Engels" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "Spaans" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "Frans" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "Italiaans" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Japans" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Nederlands" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Pools" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "Portugees" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Russisch" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Turks" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "Oekraïens" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "Chinees" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Alles selecteren" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Alles omschakelen" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Dropdown in- en uitschakelen" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Fout" @@ -11114,25 +11496,25 @@ msgstr "Hernoemd {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Verwijderd {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Log met wijzigingen" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "Tijdschrift" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "" "Kan gegevens niet synchroniseren: er is geen gegevensbestand ingesteld." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Gesynchroniseerde gegevens voor {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Gesynchroniseerd {count} {object_type}" @@ -11142,7 +11524,7 @@ msgstr "Gesynchroniseerd {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} moet get_children () implementeren" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11179,11 +11561,11 @@ msgstr "" msgid "The complete exception is provided below" msgstr "De volledige uitzondering wordt hieronder gegeven" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Python-versie" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "NetBox-versie" @@ -11207,14 +11589,26 @@ msgstr "op GitHub" msgid "Home Page" msgstr "Startpagina" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Profiel" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Meldingen" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Abonnementen" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Voorkeuren" @@ -11222,7 +11616,7 @@ msgstr "Voorkeuren" msgid "Change Password" msgstr "Wachtwoord wijzigen" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11247,7 +11641,7 @@ msgstr "Wachtwoord wijzigen" msgid "Cancel" msgstr "Annuleer" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11321,7 +11715,7 @@ msgid "Superuser" msgstr "Superuser" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Staf" @@ -11336,19 +11730,19 @@ msgstr "Toegewezen groepen" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11369,7 +11763,7 @@ msgstr "Mijn API-tokens" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Token" @@ -11390,32 +11784,41 @@ msgstr "Een token toevoegen" msgid "Home" msgstr "Home" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "NetBox-motief" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "NetBox-logo" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Documenten" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "REST API-documentatie" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "GraphQL-API" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Ondersteuning voor NetBox Labs" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Broncode" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Gemeenschap" @@ -11427,6 +11830,11 @@ msgstr "Datum van installatie" msgid "Termination Date" msgstr "Beëindigingsdatum" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Groep toewijzen" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Swap Circuit-afsluitingen" @@ -11444,6 +11852,14 @@ msgstr "A-kant" msgid "Z side" msgstr "Z-kant" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Circuit toewijzen" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Circuitgroepopdracht" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Circuit toevoegen" @@ -11468,7 +11884,7 @@ msgstr "Toevoegen" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11589,13 +12005,10 @@ msgstr "Nieuwe waarde" msgid "Changed" msgstr "Gewijzigd" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Laatst bijgewerkt" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Grootte" @@ -11677,25 +12090,120 @@ msgstr "Gebruikersvoorkeuren" msgid "Job retention" msgstr "Behoud van een baan" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Taak" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Gemaakt door" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Planning" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "elk %(interval)s minuten" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Verandering" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Verschil" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Vorige" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Volgende" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Object gemaakt" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Object verwijderd" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Geen wijzigingen" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Gegevens vóór de wijziging" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Waarschuwing: niet-atomaire wijzigingen vergelijken met eerdere " +"wijzigingsrecords" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Gegevens na de wijziging" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Alles bekijken %(count)s Veranderingen" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Het bewaren van logboeken wijzigen" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "dagen" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Onbepaald" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Niet geïnstalleerd" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Overzicht" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Installeren" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Details van de plug-in" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Samenvatting" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Licentie" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Versiegeschiedenis" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Lokale installatie-instructies" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11707,8 +12215,8 @@ msgstr "Achtergrondwachtrijen" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11767,7 +12275,7 @@ msgid "Queued Jobs" msgstr "Opdrachten in de wachtrij" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11827,39 +12335,43 @@ msgstr "Exporteren" msgid "System Status" msgstr "Status van het systeem" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "NetBox-release" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Django-versie" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "PostgreSQL-versie" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Databasenaam" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Grootte van de database" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Niet beschikbaar" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "RQ-werknemers" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "standaardwachtrij" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Systeemtijd" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Huidige configuratie" @@ -11959,14 +12471,15 @@ msgstr "Niet gehackt" msgid "GPS Coordinates" msgstr "GPS-coördinaten" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Breng het in kaart" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Kaart" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Tag voor bedrijfsmiddelen" @@ -11986,19 +12499,19 @@ msgstr "Beheer" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT voor" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NAT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Energiegebruik" @@ -12026,7 +12539,7 @@ msgid "Leg" msgstr "Leg" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Een service toevoegen" @@ -12287,6 +12800,22 @@ msgstr "Duidelijk" msgid "Clear All" msgstr "Alles wissen" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Montagediepte" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Starteenheid" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Aflopende eenheden" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Rackhoogte" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Kindinterface toevoegen" @@ -12349,8 +12878,8 @@ msgstr "Kanaalbreedte" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12440,49 +12969,33 @@ msgstr "Maximaal aantal trekkingen" msgid "Allocated Draw" msgstr "Toegewezen gelijkspel" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Ruimtegebruik" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "aflopend" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "oplopend" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Starteenheid" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Montagediepte" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Gewicht van het rek" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Maximaal gewicht" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Totaal gewicht" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Afbeeldingen en labels" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Alleen afbeeldingen" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Alleen labels" @@ -12495,6 +13008,10 @@ msgstr "Reservering toevoegen" msgid "View List" msgstr "Lijst bekijken" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Rack-weergave selecteren" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Sorteer op" @@ -12548,10 +13065,6 @@ msgstr "Tijd op de site" msgid "Physical Address" msgstr "Fysiek adres" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Kaart" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Verzendadres" @@ -12592,7 +13105,7 @@ msgstr "Nieuw lid toevoegen" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Acties" @@ -12764,46 +13277,42 @@ msgid "Group Name" msgstr "Naam van de groep" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Moet uniek zijn" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Kloonbaar" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Standaardwaarde" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Zoekgewicht" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Filterlogica" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Gewicht van het scherm" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "UI zichtbaar" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "UI bewerkbaar" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Validatieregels" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Minimumwaarde" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Maximale waarde" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Reguliere expressie" @@ -12817,11 +13326,11 @@ msgstr "Knopklasse" msgid "Assigned Models" msgstr "Toegewezen modellen" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Tekst koppelen" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "URL van de link" @@ -12846,6 +13355,14 @@ msgstr "" "Deze wijziging is alleen van invloed jouw dashboard, en heeft geen " "invloed op andere gebruikers." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "configuratie van de widget" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Widget sluiten" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Een widget toevoegen" @@ -12878,13 +13395,9 @@ msgstr "Er is een probleem opgetreden bij het ophalen van de RSS-feed" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Begin van de taak" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Einde van de opdracht" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Voorwaarden" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12926,20 +13439,15 @@ msgstr "Resultaten in behandeling" msgid "Journal Entry" msgstr "Dagboekinvoer" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Het bewaren van logboeken wijzigen" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "dagen" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Meldingsgroep" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Onbepaald" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Geen toegewezen" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12953,54 +13461,6 @@ msgstr "Broncontexten" msgid "New Journal Entry" msgstr "Nieuwe journaalpost" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Verandering" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Verschil" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Vorige" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Volgende" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Object gemaakt" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Object verwijderd" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Geen wijzigingen" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Gegevens vóór de wijziging" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Waarschuwing: niet-atomaire wijzigingen vergelijken met eerdere " -"wijzigingsrecords" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Gegevens na de wijziging" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Alles bekijken %(count)s Veranderingen" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Rapporteren" @@ -13011,7 +13471,7 @@ msgstr "Je hebt geen toestemming om scripts uit te voeren" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Script uitvoeren" @@ -13024,27 +13484,27 @@ msgstr "Fout bij laden van script" msgid "Script no longer exists in the source file." msgstr "Het script bestaat niet meer in het bronbestand." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Laatste run" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Het script is niet langer aanwezig in het bronbestand" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Nooit" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Draai opnieuw" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Geen scripts gevonden" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -13059,6 +13519,14 @@ msgstr "" msgid "Results" msgstr "Resultaten" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Drempel voor loggen" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Alles" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Getagde artikelen" @@ -13091,11 +13559,11 @@ msgstr "HTTP-inhoudstype" msgid "SSL Verification" msgstr "SSL-verificatie" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Aanvullende kopteksten" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Lichaamssjabloon" @@ -13172,6 +13640,10 @@ msgstr "Veldopties" msgid "Accessor" msgstr "Accessor" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "keuzes" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Importwaarde" @@ -13340,6 +13812,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Als gevolg van deze actie worden de volgende objecten verwijderd." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "geleden" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Geen ongelezen meldingen" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Alle meldingen" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Selecteer" @@ -13407,15 +13891,23 @@ msgstr "Snel zoeken" msgid "Saved filter" msgstr "Opgeslagen filter" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Duidelijke bestelling" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Helpcentrum" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Django-beheerder" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Uitloggen" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Inloggen" @@ -13463,10 +13955,6 @@ msgstr "Bulk aanmaken" msgid "Create Group" msgstr "Groep aanmaken" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Groep toewijzen" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "Virtuele IP-adressen" @@ -13600,10 +14088,6 @@ msgstr "Een voorvoegsel toevoegen" msgid "Add VLAN" msgstr "VLAN toevoegen" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "Toegestane VID's" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Routeherkenner" @@ -13612,20 +14096,16 @@ msgstr "Routeherkenner" msgid "Unique IP Space" msgstr "Unieke IP-ruimte" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "NetBox-logo" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Fouten" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Inloggen" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Of" @@ -13703,11 +14183,6 @@ msgstr "Titel" msgid "Phone" msgstr "Telefoon" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Opdrachten" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13747,7 +14222,7 @@ msgstr "Toegewezen machtigingen" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Toestemming" @@ -13769,23 +14244,21 @@ msgid "Allocated Resources" msgstr "Toegewezen middelen" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Virtuele CPU's" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Geheugen" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Schijfruimte" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13826,7 +14299,7 @@ msgid "Cluster Group" msgstr "Clustergroep" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Clustertype" @@ -13835,13 +14308,13 @@ msgstr "Clustertype" msgid "Virtual Disk" msgstr "Virtuele schijf" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Hulpbronnen" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Virtuele schijf toevoegen" @@ -14023,13 +14496,12 @@ msgstr "Draadloze LAN-groep toevoegen" msgid "Link Properties" msgstr "Eigenschappen van de link" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Tertiair" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Inactief" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Afstand" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14195,13 +14667,13 @@ msgstr "Link contact opnemen" msgid "Contact Description" msgstr "Beschrijving van de contactpersoon" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Toestemming (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Groep (naam)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Meldingsgroep (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14224,27 +14696,27 @@ msgid "If no key is provided, one will be generated automatically." msgstr "" "Als er geen sleutel wordt verstrekt, wordt er automatisch een gegenereerd." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Is personeel" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Is Superuser" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Kan bekijken" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Kan toevoegen" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Kan veranderen" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Kan verwijderen" @@ -14341,48 +14813,48 @@ msgstr "toestemming" msgid "permissions" msgstr "toestemmingen" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "gebruikersvoorkeuren" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "" "Sleutel '{path}'is een bladknooppunt; kan geen nieuwe sleutels toewijzen" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Sleutel '{path}'is een woordenboek; kan geen waarde toekennen die niet uit " "het woordenboek bestaat" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "vervalt" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "laatst gebruikt" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "sleutel" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "schrijven ingeschakeld" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "Bewerkingen aanmaken, bijwerken/verwijderen met deze sleutel toestaan" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "toegestane IP's" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14391,11 +14863,11 @@ msgstr "" "Laat dit veld leeg zodat er geen beperkingen zijn. Bijvoorbeeld: " "„10.1.1.0/24, 192.168.10.16/32, 2001:DB 8:1: :/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "blijk" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "tokens" @@ -14403,18 +14875,10 @@ msgstr "tokens" msgid "group" msgstr "groeperen" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "groepen" - #: netbox/users/models/users.py:92 msgid "user" msgstr "gebruiker" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "gebruikers" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Er bestaat al een gebruiker met deze gebruikersnaam." @@ -14554,7 +15018,7 @@ msgstr "" "Ongeldige YAML-gegevens. De gegevens moeten de vorm hebben van meerdere " "documenten, of een enkel document dat een lijst met woordenboeken bevat." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14563,6 +15027,22 @@ msgstr "" "Ongeldige lijst ({value}). Moet numeriek zijn en reeksen moeten in oplopende" " volgorde staan." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Geef een of meer numerieke reeksen op, gescheiden door komma's. Voorbeeld: " +"1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Ongeldige reeksen ({value}). Moet een reeks gehele getallen in oplopende " +"volgorde zijn." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14726,6 +15206,26 @@ msgid "Missing required value for static query param: '{static_params}'" msgstr "" "Ontbrekende vereiste waarde voor statische queryparameter: '{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Het wachtwoord moet minstens één cijfer bevatten." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Het wachtwoord moet minstens één hoofdletter bevatten." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Het wachtwoord moet minstens één kleine letter bevatten." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Je wachtwoord moet minstens één cijfer, één hoofdletter en één kleine letter" +" bevatten." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14783,6 +15283,14 @@ msgstr "Exportsjabloon toevoegen" msgid "Import" msgstr "Importeren" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Afmelden" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Abonneer" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Naar klembord kopiëren" @@ -14823,15 +15331,11 @@ msgstr "Zoek in NetBox" msgid "Open selector" msgstr "Selector openen" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Geen toegewezen" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Schrijf" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "De test moet csv_update_data definiëren." @@ -14840,18 +15344,18 @@ msgstr "De test moet csv_update_data definiëren." msgid "{value} is not a valid regular expression." msgstr "{value} is geen geldige reguliere expressie." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" "{self.__class__.__name__} moet get_required_permission () implementeren" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} moet get_required_permission () implementeren" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14874,7 +15378,7 @@ msgid "Cluster type (ID)" msgstr "Clustertype (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Cluster (ID)" @@ -14892,7 +15396,7 @@ msgid "Disk (GB)" msgstr "Schijf (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Grootte (GB)" @@ -14912,6 +15416,10 @@ msgstr "Toegewezen cluster" msgid "Assigned device within cluster" msgstr "Toegewezen apparaat binnen cluster" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Serienummer" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14937,6 +15445,7 @@ msgstr "" "De schijfgrootte wordt beheerd via de koppeling van virtuele schijven." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Schijf" @@ -14978,27 +15487,27 @@ msgid "memory (MB)" msgstr "geheugen (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "schijf (GB)" +msgid "disk (MB)" +msgstr "schijf (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "De naam van de virtuele machine moet per cluster uniek zijn." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "virtuele machine" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "virtuele machines" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" "Een virtuele machine moet worden toegewezen aan een site en/of cluster." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." @@ -15006,11 +15515,11 @@ msgstr "" "Het geselecteerde cluster ({cluster}) is niet toegewezen aan deze site " "({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "Moet een cluster specificeren bij het toewijzen van een hostapparaat." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." @@ -15018,7 +15527,7 @@ msgstr "" "Het geselecteerde apparaat ({device}) is niet toegewezen aan dit cluster " "({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -15027,17 +15536,17 @@ msgstr "" "De opgegeven schijfgrootte ({size}) moet overeenkomen met de totale grootte " "van toegewezen virtuele schijven ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "Moet een IPv zijn{family} adres. ({ip} is een IPv{version} adres.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "Het opgegeven IP-adres ({ip}) is niet toegewezen aan deze VM." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -15046,7 +15555,7 @@ msgstr "" "De geselecteerde ouderinterface ({parent}) behoort tot een andere virtuele " "machine ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -15055,7 +15564,7 @@ msgstr "" "De geselecteerde bridge-interface ({bridge}) behoort tot een andere virtuele" " machine ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -15064,24 +15573,24 @@ msgstr "" "Het VLAN zonder label ({untagged_vlan}) moet tot dezelfde site behoren als " "de bovenliggende virtuele machine van de interface, of moet globaal zijn." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "grootte (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "grootte (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "virtuele schijf" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "virtuele schijven" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Toegevoegd {count} apparaten om te clusteren {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Verwijderd {count} apparaten uit het cluster {cluster}" @@ -15195,32 +15704,32 @@ msgid "Outside IP (ID)" msgstr "Buiten IP (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "IKE-beleid (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "IKE-beleid (naam)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "IPsec-beleid (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "IPsec-beleid (naam)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (slug)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "VM-interface (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (naam)" @@ -15394,7 +15903,7 @@ msgstr "versie" msgid "proposals" msgstr "voorstellen" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "vooraf gedeelde sleutel" @@ -15578,17 +16087,24 @@ msgstr "WPA Enterprise" msgid "Authentication cipher" msgstr "Authenticatiecijfer" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Afstandseenheid" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "Overbrugd VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Interface A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Interface B" @@ -15596,39 +16112,52 @@ msgstr "Interface B" msgid "Side B" msgstr "Kant B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "authenticatiecijfer" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "draadloze LAN-groep" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "draadloze LAN-groepen" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "draadloos LAN" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "interface A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "interface B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "afstand" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "afstandseenheid" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "draadloze link" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "draadloze verbindingen" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "" +"Moet een eenheid specificeren bij het instellen van een draadloze afstand" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} is geen draadloze interface." diff --git a/netbox/translations/pl/LC_MESSAGES/django.mo b/netbox/translations/pl/LC_MESSAGES/django.mo index 78f34755bfc..f5f82a07d3c 100644 Binary files a/netbox/translations/pl/LC_MESSAGES/django.mo and b/netbox/translations/pl/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/pl/LC_MESSAGES/django.po b/netbox/translations/pl/LC_MESSAGES/django.po index 590b5640f19..fbd5a0ea84d 100644 --- a/netbox/translations/pl/LC_MESSAGES/django.po +++ b/netbox/translations/pl/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Polish (https://app.transifex.com/netbox-community/teams/178115/pl/)\n" @@ -29,16 +29,17 @@ msgstr "" msgid "Key" msgstr "Klucz" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Zapis włączony" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -50,11 +51,11 @@ msgstr "Utworzony" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Wygasa" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Ostatnio używane" @@ -64,47 +65,47 @@ msgstr "Ostatnio używane" msgid "Allowed IPs" msgstr "Dozwolone adresy IP" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Zaloguj się jako {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Wylogowałeś się." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Twoje preferencje zostały zaktualizowane." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "Poświadczenia użytkownika uwierzytelnionego LDAP nie mogą być zmieniane w " "NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Twoje hasło zostało pomyślnie zmienione." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Planowane" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Zaopatrzenie" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -113,9 +114,9 @@ msgstr "Zaopatrzenie" msgid "Active" msgstr "Aktywny" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Nieaktywne" @@ -128,98 +129,116 @@ msgstr "Odstąpienie od zaopatrzenia" msgid "Decommissioned" msgstr "Wycofane ze służby" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Podstawowy" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Wtórny" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Trzeciorzędowy" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Nieaktywny" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Region (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Region (slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Grupa witryn (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Grupa witryn (slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -231,172 +250,197 @@ msgstr "Grupa witryn (slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Teren" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Teren (slug)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Dostawca (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Dostawca (slug)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Konto dostawcy (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Konto dostawcy (konto)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Sieć dostawcy (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Typ obwodu (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Typ obwodu (slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Teren (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Wypowiedzenie A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Szukaj" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Obwód" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Sieć dostawcy (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Obwód (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Obwód (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Grupa obwodów (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Grupa obwodów (ślimak)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -409,16 +453,17 @@ msgstr "ASN" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -428,8 +473,9 @@ msgstr "ASN" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -482,26 +528,28 @@ msgstr "ASN" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Opis" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -513,22 +561,22 @@ msgstr "Opis" msgid "Provider" msgstr "Dostawca" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Identyfikator usługi" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -539,33 +587,33 @@ msgstr "Identyfikator usługi" msgid "Color" msgstr "Kolor" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -578,9 +626,9 @@ msgstr "Kolor" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -596,52 +644,52 @@ msgstr "Kolor" msgid "Type" msgstr "Typ" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Konto dostawcy" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -650,7 +698,7 @@ msgstr "Konto dostawcy" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -658,7 +706,7 @@ msgstr "Konto dostawcy" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -668,45 +716,49 @@ msgstr "Konto dostawcy" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Status" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -718,7 +770,7 @@ msgstr "Status" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -741,36 +793,37 @@ msgstr "Status" msgid "Tenant" msgstr "Najemca" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Data instalacji" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Data wypowiedzenia" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Szybkość zatwierdzania (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Parametry serwisowe" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -780,37 +833,37 @@ msgstr "Parametry serwisowe" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Najem" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Sieć dostawców" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Prędkość portu (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Prędkość od klienta do serwera (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Oznacz podłączony" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -818,46 +871,60 @@ msgstr "Oznacz podłączony" msgid "Circuit Termination" msgstr "Zakończenie obwodu" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Szczegóły wypowiedzenia" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Priorytet" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Przydzielony dostawca" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Przydzielone konto dostawcy" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Rodzaj obwodu" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Status operacyjny" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -865,7 +932,7 @@ msgstr "Status operacyjny" msgid "Assigned tenant" msgstr "Przydzielony najemca" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -873,44 +940,44 @@ msgstr "Przydzielony najemca" msgid "Termination" msgstr "Wypowiedzenie" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Sieć dostawców" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -919,13 +986,13 @@ msgstr "Sieć dostawców" msgid "Location" msgstr "Lokalizacja" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -934,22 +1001,22 @@ msgstr "Lokalizacja" msgid "Contacts" msgstr "Łączność" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -962,17 +1029,17 @@ msgstr "Łączność" msgid "Region" msgstr "Region" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -980,178 +1047,261 @@ msgstr "Region" msgid "Site group" msgstr "Grupa terenów" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Atrybuty" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Konto" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Strona terminowa" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Zlecenie" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Grupa" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Grupa obwodów" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "kolor" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "typ obwodu" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "typy obwodów" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "ID obwodu" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "Unikalny identyfikator obwodu" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "status" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "zainstalowany" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "kończy się" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "szybkość zatwierdzania (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Stopa zobowiązań" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "obwód" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "obwodów" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "grupa obwodów" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "grupy obwodów" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "priorytet" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Przypisanie grupy obwodów" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Przydziały grup obwodowych" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "wypowiedzenie" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "Prędkość portu (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Prędkość obwodu fizycznego" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "prędkość przed strumieniem (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Prędkość poprzedzająca, jeśli różni się od prędkości portu" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "identyfikator połączenia krzyżowego" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "Identyfikator lokalnego połączenia krzyżowego" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "panel krosowy/port (y)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "Identyfikator panelu krosowego i numer (y) portu" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "opis" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "zakończenie obwodu" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "zakończenia obwodu" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "Zakończenie obwodu musi być podłączone do witryny lub sieci dostawcy." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1160,33 +1310,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "nazwa" @@ -1195,11 +1346,12 @@ msgid "Full name of the provider" msgstr "Pełna nazwa dostawcy" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "slug" @@ -1235,40 +1387,45 @@ msgstr "sieć dostawców" msgid "provider networks" msgstr "sieci dostawców" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1283,7 +1440,7 @@ msgstr "sieci dostawców" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1297,8 +1454,9 @@ msgstr "sieci dostawców" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1338,9 +1496,9 @@ msgstr "sieci dostawców" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1350,56 +1508,57 @@ msgstr "sieci dostawców" msgid "Name" msgstr "Nazwa" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Obwody" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Identyfikator obwodu" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Strona A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Strona Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Współczynnik zatwierdzania" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1408,6 +1567,12 @@ msgstr "Współczynnik zatwierdzania" msgid "Comments" msgstr "Komentarze" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Zadania" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Konta" @@ -1430,7 +1595,7 @@ msgstr "Nie zdefiniowano zakończeń dla obwodu {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Wymienione zakończenia na obwód {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "Ten użytkownik nie ma uprawnień do synchronizacji tego źródła danych." @@ -1448,21 +1613,19 @@ msgid "Syncing" msgstr "Synchronizacja" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Zakończone" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Nie powiodło się" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1474,30 +1637,39 @@ msgstr "Skrypty" msgid "Reports" msgstr "Raporty" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "Oczekiwane" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Zaplanowane" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Uruchomione" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Zakończone z błędem" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Zaktualizowano" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Usunięte" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Zakończone" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Rozpoczęte" @@ -1514,11 +1686,13 @@ msgstr "Zatrzymane" msgid "Cancelled" msgstr "Anulowane" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Lokalne" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1528,8 +1702,8 @@ msgstr "Nazwa użytkownika" msgid "Only used for cloning with HTTP(S)" msgstr "Tylko używane do klonowania poprzez HTTP(S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Hasło" @@ -1551,24 +1725,63 @@ msgstr "Identyfikator klucza dostępu AWS" msgid "AWS secret access key" msgstr "Tajny klucz dostępu AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Utworzony obiekt" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Obiekt zaktualizowany" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Obiekt usunięty" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Praca rozpoczęta" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Praca zakończona" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Zadanie nie powiodło się" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Błąd pracy" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Źródło danych (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Źródło danych (nazwa)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Użytkownik (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Nazwa użytkownika" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1576,14 +1789,14 @@ msgstr "Źródło danych (nazwa)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Włączone" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1596,11 +1809,11 @@ msgstr "Parametry" msgid "Ignore rules" msgstr "Ignoruj reguły" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1610,76 +1823,99 @@ msgstr "Ignoruj reguły" msgid "Data Source" msgstr "Źródło danych" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Plik" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Źródło danych" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Stworzenie" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Typ obiektu" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Utworzone po" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Utworzone przed" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Zaplanowane po" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Zaplanowane przed" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Rozpoczęte po" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Rozpoczęte przed" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Zakończone po" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Zakończone przed" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Użytkownik" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Czas" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Po" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Wcześniej" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Działanie" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1708,19 +1944,19 @@ msgstr "Musisz przesłać plik lub wybrać plik danych do synchronizacji" msgid "Rack Elevations" msgstr "Elewacje szafy rack" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Moc" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1737,7 +1973,9 @@ msgstr "Banery" msgid "Pagination" msgstr "Paginacja" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Walidacja" @@ -1747,7 +1985,7 @@ msgstr "Walidacja" msgid "User Preferences" msgstr "Preferencje użytkownika" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1771,10 +2009,49 @@ msgstr "Bieżąca wartość: {value}" msgid " (default)" msgstr " (domyślnie)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "czas" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "nazwa użytkownika" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "Identyfikator żądania" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "działanie" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "dane wstępnej zmiany" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "dane po zmianie" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "zmiana obiektu" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "zmiany obiektu" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"Rejestracja zmian nie jest obsługiwana dla tego typu obiektu ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "utworzony" @@ -1807,14 +2084,14 @@ msgstr "Bieżąca konfiguracja" msgid "Config revision #{id}" msgstr "Wersja konfiguracji #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1822,110 +2099,111 @@ msgstr "Wersja konfiguracji #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "typ" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "włączone" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ignoruj zasady" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Wzory (jeden na wiersz) pasujące do plików do zignorowania podczas " "synchronizacji" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "parametry" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "ostatnio zsynchronizowane" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "źródło danych" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "źródła danych" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Nieznany typ zaplecza: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "Nie można zainicjować synchronizacji; synchronizacja jest już w toku." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " msgstr "" "Wystąpił błąd podczas inicjowania zaplecza. Należy zainstalować zależność: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "Ostatnia aktualizacja" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "ścieżka" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Ścieżka pliku względem katalogu głównego źródła danych" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "rozmiar" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "haszysz" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "Długość musi wynosić 64 znaki szesnastkowe." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "Skrót danych pliku SHA256" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "plik danych" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "pliki danych" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "zapis automatycznej synchronizacji" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "automatyczna synchronizacja rekordów" @@ -1949,58 +2227,94 @@ msgstr "plik zarządzany" msgid "managed files" msgstr "zarządzane pliki" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "planowy" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "interwał" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Odstęp nawrotów (w minutach)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "rozpoczął się" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "ukończony" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "dane" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "błąd" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "ID pracy" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "pracy" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "prace" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "Zadania nie mogą być przypisane do tego typu obiektu ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "Nieprawidłowy status zakończenia pracy. Wybory to: {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"enqueue () nie można wywołać z wartościami zarówno dla schedule_at, jak i " +"natychmiastowego." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Usuwanie jest zapobiegane przez regułę ochrony: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Pełne imię i nazwisko" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Przedmiot" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "Identyfikator żądania" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Jest aktywny" @@ -2015,51 +2329,63 @@ msgid "Last updated" msgstr "Ostatnia aktualizacja" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "IDENTYFIKATOR" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Przedmiot" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Przedział" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Wersja" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Pakiet" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Ostatnia aktualizacja" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Minimalna wersja NetBox" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Maksymalna wersja NetBox" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Nie znaleziono danych wtyczki" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Autor" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Adres e-mail autora" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Zainstalowany" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Nie znaleziono wtyczek" +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Certyfikowany" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Opublikowano" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Zainstalowana wersja" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Najnowsza wersja" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2073,7 +2399,7 @@ msgstr "Pracownicy" msgid "Host" msgstr "Gospodarz" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Port" @@ -2121,62 +2447,72 @@ msgstr "PID" msgid "No workers found" msgstr "Nie znaleziono pracowników" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Zadanie w kolejce #{id} zsynchronizować {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Przywrócona wersja konfiguracji #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Praca {job_id} nie znaleziono" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Praca {id} został usunięty." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Błąd usuwania zadania {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Praca {id} nie znaleziono." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Praca {id} został ponownie ustawiony w kolejce." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Praca {id} został ustawiony w kolejce." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Praca {id} został zatrzymany." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Nie udało się zatrzymać zadania {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Nie można załadować katalogu wtyczek" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Wtyczka {name} nie znaleziono" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Pozycja (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "Identyfikator obiektu" @@ -2184,8 +2520,8 @@ msgstr "Identyfikator obiektu" msgid "Staging" msgstr "Inscenizacja" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Wycofanie z eksploatacji" @@ -2244,27 +2580,39 @@ msgstr "Dostępny" msgid "Deprecated" msgstr "Przestarzałe" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Milimetrów" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Cale" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Przód do tyłu" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Tył do przodu" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2280,278 +2628,273 @@ msgstr "Cale" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Rodzic" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Dziecko" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Przód" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Tył" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Inscenizowane" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Inwentaryzacja" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Przód do tyłu" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Tył do przodu" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Od lewej do prawej" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Od prawej do lewej" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Z boku do tyłu" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Pasywny" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Mieszane" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (bez blokowania)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (Blokowanie)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Styl kalifornijski" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "Międzynarodowy/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Zastrzeżone" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Pozostałe" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/Międzynarodowy" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Fizyczne" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Wirtualny" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Bezprzewodowy" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Interfejsy wirtualne" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Most" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Grupa agregacji linków (LGD)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (stały)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modułowy)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (płaszczyzna tylna)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Komórkowy" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Seryjny" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "koncentryczny" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Układanie" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Połowa" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Pełny" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Automatyczny" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Dostęp" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Oznaczone" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Oznaczone (Wszystkie)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "Standard IEEE" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Pasywny 24V (2 pary)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Pasywny 24V (4-parowy)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Pasywny 48V (2 pary)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Pasywny 48V (4 pary)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Miedź" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Światłowód" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Włókno" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Połączony" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Kilometry" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Mierniki" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Centymetry" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Mile" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Stopy" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Kilogramy" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Gramy" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "funty" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Uncja" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Podstawowy" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Nadmiarowy" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Jednofazowy" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Trójfazowy" @@ -2565,330 +2908,335 @@ msgstr "Nieprawidłowy format adresu MAC: {value}" msgid "Invalid WWN format: {value}" msgstr "Nieprawidłowy format WWN: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Region macierzysty (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Region macierzysty (ślimak)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Nadrzędna grupa witryn (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Nadrzędna grupa witryn (ślimak)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Grupa (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Grupa (ślimak)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "JAKO (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Lokalizacja nadrzędna (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Lokalizacja nadrzędna (ślimak)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Lokalizacja (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Lokalizacja (ślimak)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Producent (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Producent (ślimak)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Rodzaj stelaża (ślimak)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Typ stelaża (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rola (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rola (ślimak)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Stojak (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Użytkownik (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Użytkownik (nazwa)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Producent (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Producent (ślimak)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Domyślna platforma (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Domyślna platforma (slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Posiada obraz z przodu" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Posiada tylny obraz" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Posiada porty konsoli" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Posiada porty serwera konsoli" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Posiada porty zasilania" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Posiada gniazdka elektryczne" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Posiada interfejsy" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Posiada porty przelotowe" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Posiada kieszenie modułowe" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Posiada zatoki na urządzenia" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Posiada pozycje inwentaryzacyjne" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Typ urządzenia (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Typ modułu (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Port zasilania (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Nadrzędny element zapasów (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Szablon konfiguracji (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Typ urządzenia (ślimak)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Urządzenie nadrzędne (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Platforma (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Platforma (ślimak)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Nazwa witryny (slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Zatoka macierzysta (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "Klaster maszyn wirtualnych (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Grupa klastra (ślimak)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Grupa klastra (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Model urządzenia (ślimak)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Jest pełna głębokość" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "Adres MAC" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Posiada podstawowy adres IP" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Posiada adres IP poza pasmem" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Wirtualne podwozie (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Jest członkiem wirtualnego podwozia" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "OOB IP (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Posiada kontekst urządzenia wirtualnego" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Model urządzenia" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Interfejs (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Typ modułu (model)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Moduł Bay (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Osłona modułu (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Urządzenie (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Stojak (nazwa)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Urządzenie (nazwa)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Typ urządzenia (model)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Rola urządzenia (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Rola urządzenia (slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Wirtualne podwozie (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2897,33 +3245,33 @@ msgstr "Wirtualne podwozie (ID)" msgid "Virtual Chassis" msgstr "Wirtualne podwozie" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Moduł (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Kabel (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Przypisana sieć VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "Przypisany VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2940,121 +3288,125 @@ msgstr "Przypisany VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Interfejsy wirtualnej obudowy dla urządzenia" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Interfejsy wirtualnej obudowy dla urządzenia (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Rodzaj interfejsu" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Interfejs nadrzędny (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Interfejs mostkowy (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "Interfejs LAG (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Kontekst urządzenia wirtualnego" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Kontekst urządzenia wirtualnego (identyfikator)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Bezprzewodowa sieć LAN" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Połączenie bezprzewodowe" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Osłona modułu nadrzędnego (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Zainstalowany moduł (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Zainstalowane urządzenie (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Zainstalowane urządzenie (nazwa)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Mistrz (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Mistrz (imię)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Najemca (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Najemca (ślimak)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Nieskończony" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Panel zasilania (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3062,13 +3414,13 @@ msgstr "Panel zasilania (ID)" msgid "Tags" msgstr "Tagi" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3082,168 +3434,114 @@ msgstr "" "Obsługiwane są zakresy alfanumeryczne. (Musi odpowiadać liczbie tworzonych " "nazw.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Grupa" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Nazwa kontaktu" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Telefon kontaktowy" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "Kontakt E-mail" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Strefa czasowa" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Rola" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Numer seryjny" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Etykieta zasobu" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Producent" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Współczynnik kształtu" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Szerokość" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Wysokość (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Jednostki malejące" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Szerokość zewnętrzna" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Głębokość zewnętrzna" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Jednostka zewnętrzna" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Głębokość montażu" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3251,192 +3549,262 @@ msgstr "Głębokość montażu" msgid "Weight" msgstr "Waga" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Maksymalna waga" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Jednostka wagowa" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 -#: netbox/templates/dcim/inc/cable_termination.html:16 -#: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 -#: netbox/templates/dcim/rack/base.html:4 -#: netbox/templates/dcim/rackreservation.html:19 -#: netbox/templates/dcim/rackreservation.html:36 -#: netbox/virtualization/forms/model_forms.py:113 -msgid "Rack" -msgstr "Stojak" +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Rodzaj stelaża" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 -#: netbox/templates/dcim/device_edit.html:20 -msgid "Hardware" -msgstr "Sprzęt" +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Wymiary zewnętrzne" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Producent" +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Wymiary" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Numeracja" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Rola" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Numer seryjny" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Etykieta zasobu" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Przepływ powietrza" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 +#: netbox/templates/dcim/inc/cable_termination.html:16 +#: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 +#: netbox/templates/dcim/rack/base.html:4 +#: netbox/templates/dcim/rackreservation.html:19 +#: netbox/templates/dcim/rackreservation.html:36 +#: netbox/virtualization/forms/model_forms.py:113 +msgid "Rack" +msgstr "Stojak" + +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 +#: netbox/templates/dcim/device_edit.html:20 +msgid "Hardware" +msgstr "Sprzęt" -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Domyślna platforma" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Numer części" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Wysokość U" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Wyklucz z wykorzystania" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Przepływ powietrza" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Typ urządzenia" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Typ modułu" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Podwozie" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "Rola maszyny wirtualnej" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Szablon konfiguracji" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Typ urządzenia" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Rola urządzenia" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Platforma" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3447,7 +3815,7 @@ msgstr "Platforma" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3455,7 +3823,7 @@ msgstr "Platforma" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3463,7 +3831,7 @@ msgstr "Platforma" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3473,23 +3841,23 @@ msgstr "Platforma" msgid "Device" msgstr "Urządzenie" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Konfiguracja" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Rodzaj modułu" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3498,7 +3866,7 @@ msgstr "Rodzaj modułu" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3507,141 +3875,142 @@ msgstr "Rodzaj modułu" msgid "Label" msgstr "Etykieta" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Długość" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Jednostka długości" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Domena" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Panel zasilania" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Dostawa" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Faza" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Napięcie" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Natężenie prądu" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Maksymalne wykorzystanie" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Maksymalne losowanie" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Maksymalny pobór mocy (waty)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Przydzielone losowanie" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Przydzielony pobór mocy (waty)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Port zasilania" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Noga do karmienia" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Tylko zarządzanie" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "Tryb PoE" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "Typ PoE" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Rola sieci bezprzewodowej" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Moduł" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "OPÓŹNIENIE" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Konteksty urządzeń wirtualnych" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Prędkość" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3655,292 +4024,297 @@ msgstr "Prędkość" msgid "Mode" msgstr "Tryb" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Grupa VLAN" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "Nieoznaczone sieci VLAN" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Oznaczone sieci VLAN" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Grupa sieci bezprzewodowej sieci LAN" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Bezprzewodowe sieci LAN" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Adresowanie" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Operacja" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Powiązane interfejsy" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "Przełączanie 802.1Q" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "Tryb interfejsu musi być określony, aby przypisać sieci VLAN" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "Interfejs dostępu nie może mieć przypisanych oznakowanych sieci VLAN." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Nazwa regionu macierzystego" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Nazwa nadrzędnej grupy witryn" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Przypisany region" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Przydzielona grupa" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "dostępne opcje" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Przydzielona witryna" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Lokalizacja nadrzędna" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Lokalizacja nie została znaleziona." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Nazwa przydzielonego najemcy" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Nazwa przypisanej roli" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Producent tego typu regału" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Rodzaj stelaża" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "Najniższa pozycja w stojaku" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Szerokość szyny do szyny (w calach)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Jednostka do wymiarów zewnętrznych" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Jednostka do obciążników regałowych" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Nazwa przydzielonego najemcy" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Nazwa przypisanej roli" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Kierunek przepływu powietrza" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Witryna nadrzędna" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Lokalizacja stojaka (jeśli istnieje)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Jednostki" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Lista poszczególnych numerów jednostek oddzielona przecinkami" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Producent, który produkuje ten typ urządzenia" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Domyślna platforma dla urządzeń tego typu (opcjonalnie)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Waga urządzenia" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Jednostka do wagi urządzenia" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Waga modułu" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Jednostka do ciężaru modułu" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Ogranicz przypisania platformy do tego producenta" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Przypisana rola" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Producent typu urządzenia" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Model typu urządzenia" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Przydzielona platforma" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Wirtualne podwozie" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Klaster" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Klaster wirtualizacji" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Przypisana lokalizacja (jeśli istnieje)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Przypisany stojak (jeśli istnieje)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Twarz" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Zamontowana powierzchnia regału" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Urządzenie nadrzędne (dla urządzeń podrzędnych)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Osłona urządzenia" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Osłona urządzenia, w której to urządzenie jest zainstalowane (dla urządzeń " "podrzędnych)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Kierunek przepływu powietrza" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Urządzenie, w którym zainstalowany jest ten moduł" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Wnęka modułu" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "Wnęka modułu, w której ten moduł jest zainstalowany" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Rodzaj modułu" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Replikacja komponentów" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3948,238 +4322,238 @@ msgstr "" "Automatyczne wypełnianie komponentów powiązanych z tym typem modułu " "(domyślnie włączone)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Zastosuj komponenty" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Zastosuj już istniejące komponenty" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Typ portu" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Prędkość portu w bps" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Rodzaj wylotu" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Lokalny port zasilania zasilający to gniazdko" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Faza elektryczna (dla obwodów trójfazowych)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Interfejs nadrzędny" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Interfejs mostkowy" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Opóźnienie" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Nadrzędny interfejs LAG" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Vdc" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "Nazwy VDC oddzielone przecinkami, otoczone podwójnymi cudzysłowami. " "Przykład:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Medium fizyczne" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Dwupoziomowy" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Tryb PoE" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Typ PoE" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "Tryb pracy IEEE 802.1Q (dla interfejsów L2)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Przypisany VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Rola Rf" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Rola bezprzewodowa (AP/stacja)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} nie jest przypisany do urządzenia {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Tylny port" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Odpowiedni tylny port" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Klasyfikacja medium fizycznego" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Zainstalowane urządzenie" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Urządzenie dziecięce zainstalowane w tej wnęce" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Nie znaleziono urządzenia dziecięcego." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Nadrzędny element zapasów" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Typ komponentu" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Typ komponentu" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Nazwa firmy" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Nazwa komponentu" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Nie znaleziono komponentu: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Urządzenie boczne A" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Nazwa urządzenia" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Typ strony A" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Typ zakończenia" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Nazwa strony A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Nazwa zakończenia" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Urządzenie boczne B" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Strona typu B" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Nazwa strony B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Status połączenia" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Bok {side_upper}: {device} {termination_object} jest już połączony" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} Nie znaleziono zakończenia bocznego: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Mistrzu" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Urządzenie główne" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Nazwa witryny nadrzędnej" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Panel zasilania przed strumieniem" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Podstawowy lub nadmiarowy" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Rodzaj zasilania (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Pojedynczy lub trójfazowy" @@ -4199,7 +4573,7 @@ msgstr "" "Oznaczone sieci VLAN ({vlans}) muszą należeć do tej samej witryny co " "urządzenie nadrzędne/maszyna wirtualna interfejsu lub muszą być globalne" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4207,17 +4581,26 @@ msgstr "" "Nie można zainstalować modułu z wartościami zastępczymi w kieszeni modułu " "bez zdefiniowanej pozycji." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Nie można zainstalować modułu z wartościami zastępczymi w drzewie laurowym " +"modułu {level} na drzewie, ale {tokens} podane symbole zastępcze." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "Nie można adoptować {model} {name} ponieważ już należy do modułu" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "A {model} o nazwie {name} już istnieje" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4226,7 +4609,7 @@ msgstr "A {model} o nazwie {name} już istnieje" msgid "Power Panel" msgstr "Panel zasilania" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4236,15 +4619,15 @@ msgstr "Zasilanie zasilania" msgid "Side" msgstr "Bok" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Status urządzenia" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Region macierzysty" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4252,62 +4635,67 @@ msgstr "Region macierzysty" msgid "Parent group" msgstr "Grupa nadrzędna" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Obiekty" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Rodzaj stelaża" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Funkcja" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Obrazy" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Komponenty" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Rola urządzenia podrzędnego" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Model" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Posiada adres IP OOB" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Wirtualny element podwozia" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Posiada konteksty urządzeń wirtualnych" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Grupa klastra" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Okablowany" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Zajęty" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4319,43 +4707,43 @@ msgstr "Zajęty" msgid "Connection" msgstr "Połączenie" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Uprzejmy" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Tylko MGMT" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Kanał bezprzewodowy" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Częstotliwość kanału (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Szerokość kanału (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Moc transmisji (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4365,7 +4753,7 @@ msgstr "Moc transmisji (dBm)" msgid "Cable" msgstr "Kabel" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Odkryte" @@ -4374,28 +4762,31 @@ msgstr "Odkryte" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Wirtualny element podwozia istnieje już na pozycji {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Dane kontaktowe" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Rola szafy" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Kontrola zapasów" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Ślimak" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Wymiary zewnętrzne" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Wybierz wstępnie zdefiniowany typ stelaża lub ustaw parametry fizyczne " +"poniżej." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Wymiary" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Kontrola zapasów" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4403,93 +4794,70 @@ msgstr "" "Lista numerycznych identyfikatorów jednostek oddzielonych przecinkami. " "Zakres można określić za pomocą myślnika." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Rezerwacje" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Ślimak" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Podwozie" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Rola urządzenia" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "Jednostka o najniższej liczbie zajmowana przez urządzenie" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "" "Pozycja w wirtualnej obudowie tego urządzenia jest identyfikowana przez" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Priorytet" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "Priorytet urządzenia w wirtualnej obudowie" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "Automatyczne wypełnianie komponentów powiązanych z tym typem modułu" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "Maksymalna długość to 32767 (dowolna jednostka)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Charakterystyka" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Szablon portu konsoli" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Szablon portu serwera konsoli" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Szablon portu przedniego" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Szablon interfejsu" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Szablon gniazdka elektrycznego" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Szablon portu zasilania" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Szablon tylnego portu" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4500,7 +4868,7 @@ msgstr "Szablon tylnego portu" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4509,7 +4877,7 @@ msgstr "Szablon tylnego portu" msgid "Interface" msgstr "Interfejs" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4517,14 +4885,14 @@ msgstr "Interfejs" msgid "Console Port" msgstr "Port konsoli" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Port serwera konsoli" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4535,8 +4903,8 @@ msgstr "Port serwera konsoli" msgid "Front Port" msgstr "Port przedni" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4548,36 +4916,36 @@ msgstr "Port przedni" msgid "Rear Port" msgstr "Tylny port" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Port zasilania" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Gniazdo zasilania" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Przypisywanie komponentów" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "InventoryItem można przypisać tylko do pojedynczego komponentu." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "Interfejs LAG" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Urządzenie dziecięce" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4585,41 +4953,41 @@ msgstr "" "Urządzenia podrzędne muszą być najpierw utworzone i przypisane do witryny i " "szafy urządzenia nadrzędnego." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Port konsoli" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Port serwera konsoli" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Port przedni" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Gniazdo zasilania" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Przedmiot zapasów" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Rola pozycji zapasów" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "Podstawowy IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "Podstawowy IPv6" @@ -4681,7 +5049,7 @@ msgstr "" "Liczba portów frontowych do utworzenia ({frontport_count}) musi odpowiadać " "wybranej liczbie pozycji tylnych portów ({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4707,7 +5075,7 @@ msgstr "Pozycja musi być określona dla pierwszego członka VC." #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "marka" @@ -4834,41 +5202,41 @@ msgid "" msgstr "" "Szablon komponentu musi być skojarzony z typem urządzenia lub typem modułu." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "szablon portu konsoli" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "szablony portów konsoli" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "szablon portu serwera konsoli" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "szablony portów serwera konsoli" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "maksymalne losowanie" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "przydzielone losowanie" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "szablon portu zasilania" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "szablony portów zasilania" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -4876,97 +5244,97 @@ msgstr "" "Przydzielone losowanie nie może przekroczyć maksymalnego losowania " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "noga karmiąca" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Faza (dla zasilania trójfazowego)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "szablon gniazdka elektrycznego" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "szablony gniazdek elektrycznych" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Nadrzędny port zasilania ({power_port}) musi należeć do tego samego typu " "urządzenia" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Nadrzędny port zasilania ({power_port}) musi należeć do tego samego typu " "modułu" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "Tylko zarządzanie" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "interfejs mostka" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "rola bezprzewodowa" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "szablon interfejsu" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "szablony interfejsu" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Interfejs nie może być połączony z samym sobą." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Interfejs mostka ({bridge}) musi należeć do tego samego typu urządzenia" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Interfejs mostka ({bridge}) musi należeć do tego samego typu modułu" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "pozycja tylnego portu" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "szablon portu przedniego" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "szablony portów przednich" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Tylny port ({name}) musi należeć do tego samego typu urządzenia" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4975,48 +5343,48 @@ msgstr "" "Nieprawidłowa pozycja tylnego portu ({position}); tylny port {name} ma tylko" " {count} położenia" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "położenia" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "szablon tylnego portu" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "szablony tylnych portów" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "położenie" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Identyfikator, do którego należy odwołać się podczas zmiany nazwy " "zainstalowanych komponentów" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "szablon modułu wnęki" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "szablony modułów" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "szablon kieszeni urządzenia" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "szablony kieszeni urządzeń" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5025,21 +5393,21 @@ msgstr "" "Rola podurządzenia typu urządzenia ({device_type}) musi być ustawiony na " "„rodzic”, aby zezwolić na gniazda urządzeń." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "ID części" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Identyfikator części przypisany przez producenta" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "szablon pozycji inwentaryzacji" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "szablony pozycji inwentaryzacji" @@ -5182,27 +5550,27 @@ msgstr "Wypełnione przez wybrany kanał (jeśli ustawiony)" msgid "transmit power (dBm)" msgstr "moc nadawania (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "bezprzewodowe sieci LAN" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "nieoznaczone sieci VLAN" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "oznaczone sieci VLAN" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "interfejs" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "interfejsy" @@ -5217,7 +5585,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type} interfejsów nie można oznaczyć jako połączonych." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Interfejs nie może być własnym rodzicem." @@ -5381,32 +5749,37 @@ msgstr "" "Liczba pozycji nie może być mniejsza niż liczba zmapowanych portów przednich" " ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "wnęka modułu" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "kieszenie modułowe" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "Wnęka modułu nie może należeć do zainstalowanego w nim modułu." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "wnęka urządzenia" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "kieszenie na urządzenia" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "Ten typ urządzenia ({device_type}) nie obsługuje wnęk na urządzenia." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Nie można zainstalować urządzenia w sobie." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5414,60 +5787,61 @@ msgstr "" "Nie można zainstalować określonego urządzenia; urządzenie jest już " "zainstalowane w {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "rola pozycji zapasów" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "role pozycji zapasów" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "numer seryjny" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "znacznik zasobu" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Unikalny znacznik używany do identyfikacji tego elementu" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "odkryty" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Ten przedmiot został automatycznie wykryty" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "pozycja inwentaryzacyjna" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "pozycje inwentaryzacyjne" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Nie można przypisać siebie jako rodzica." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "Nadrzędny element ekwipunku nie należy do tego samego urządzenia." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "" "Nie można przenieść pozycji inwentarza z pozostałymi dziećmi na utrzymaniu" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "" "Nie można przypisać elementu zapasów do komponentu na innym urządzeniu" @@ -5481,6 +5855,7 @@ msgid "manufacturers" msgstr "producentów" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "model" @@ -5496,7 +5871,7 @@ msgstr "numer części" msgid "Discrete part number (optional)" msgstr "Dyskretny numer części (opcjonalnie)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "wysokość (U)" @@ -5531,7 +5906,8 @@ msgstr "" " Pozostaw puste, jeśli ten typ urządzenia nie jest ani rodzicem, ani " "dzieckiem." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "przepływ powietrza" @@ -5578,153 +5954,153 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Typy urządzeń podrzędnych muszą mieć wartość 0U." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "typ modułu" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "typy modułów" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Maszyny wirtualne mogą być przypisane do tej roli" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "rola urządzenia" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "role urządzenia" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "Opcjonalnie ogranicz tę platformę do urządzeń określonego producenta" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "platforma" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "platformy" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "Funkcja, jaką spełnia to urządzenie" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Numer seryjny podwozia, przypisany przez producenta" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Unikalny znacznik używany do identyfikacji tego urządzenia" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "pozycja (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "powierzchnia regału" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "podstawowy IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "podstawowy IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "Poza pasmem IP" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "Pozycja VC" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Wirtualna pozycja podwozia" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "Priorytet VC" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Priorytet wyboru głównego wirtualnego podwozia" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "swoboda" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Współrzędne GPS w formacie dziesiętnym (xx.rrrr)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "długość geograficzna" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Nazwa urządzenia musi być niepowtarzalna dla każdej witryny." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "urządzenie" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "urządzenia" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Stojak {rack} nie należy do strony {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Lokalizacja {location} nie należy do strony {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Stojak {rack} Nie należy do lokalizacji {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "Nie można wybrać powierzchni stelaża bez przypisania stelaża." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "Nie można wybrać pozycji stelaża bez przypisania stelaża." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "Pozycja musi być w odstępach co 0,5 jednostek regałowych." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" "Należy określić powierzchnię stelaża podczas definiowania położenia stelaża." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "" "Typ urządzenia 0U ({device_type}) nie można przypisać do pozycji stojaka." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5732,7 +6108,7 @@ msgstr "" "Typy urządzeń podrzędnych nie mogą być przypisane do powierzchni stelaża. " "Jest to atrybut urządzenia nadrzędnego." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5740,7 +6116,7 @@ msgstr "" "Typy urządzeń podrzędnych nie mogą być przypisane do pozycji szafy. Jest to " "atrybut urządzenia nadrzędnego." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5749,22 +6125,22 @@ msgstr "" "U{position} jest już zajęty lub nie ma wystarczającej ilości miejsca, aby " "pomieścić ten typ urządzenia: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} nie jest adresem IPv4." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Podany adres IP ({ip}) nie jest przypisany do tego urządzenia." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} nie jest adresem IPv6." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5773,26 +6149,26 @@ msgstr "" "Przydzielona platforma jest ograniczona do {platform_manufacturer} typy " "urządzeń, ale typ tego urządzenia należy do {devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Przypisany klaster należy do innej lokalizacji ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Urządzenie przypisane do wirtualnej obudowy musi mieć zdefiniowane " "położenie." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "moduł" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "modułów" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5801,22 +6177,22 @@ msgstr "" "Moduł musi być zainstalowany w wnęce modułowej należącej do przypisanego " "urządzenia ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "domena" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "wirtualne podwozie" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "Wybrany mistrz ({master}) nie jest przypisany do tej wirtualnej obudowy." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5825,40 +6201,40 @@ msgstr "" "Nie można usunąć wirtualnej obudowy {self}. Istnieją interfejsy członów, " "które tworzą interfejsy LAG między podwoziami." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identyfikator" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Identyfikator numeryczny unikalny dla urządzenia nadrzędnego" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "komentarzy" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "kontekst urządzenia wirtualnego" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "konteksty urządzeń wirtualnych" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} nie jest IPV{family} adres." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "Podstawowy adres IP musi należeć do interfejsu na przypisanym urządzeniu." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "waga" @@ -5936,94 +6312,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "Napięcie nie może być ujemne dla zasilania prądem przemiennym" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "rola stelaża" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "role w szafie" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "Identyfikator obiektu" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Lokalnie przypisany identyfikator" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Funkcjonalna rola" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Unikalny znacznik używany do identyfikacji tego stelaża" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "szerokość" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Szerokość szyny do szyny" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Wysokość w jednostkach regałowych" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "jednostka startowa" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Jednostka startowa do stojaka" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "jednostki malejące" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Jednostki są ponumerowane od góry do dołu" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "szerokość zewnętrzna" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Wymiar zewnętrzny stelaża (szerokość)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "głębokość zewnętrzna" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Wymiar zewnętrzny stelaża (głębokość)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "jednostka zewnętrzna" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "maksymalna waga" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Maksymalna nośność regału" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "głębokość montażu" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6031,30 +6372,77 @@ msgstr "" "Maksymalna głębokość zamontowanego urządzenia, w milimetrach. W przypadku " "stojaków czterosłupkowych jest to odległość między przednią i tylną szyną." -#: netbox/dcim/models/racks.py:221 -msgid "rack" -msgstr "regał" +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "maksymalna waga" -#: netbox/dcim/models/racks.py:222 -msgid "racks" -msgstr "stojaki" +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Maksymalna nośność regału" -#: netbox/dcim/models/racks.py:237 -#, python-brace-format -msgid "Assigned location must belong to parent site ({site})." -msgstr "Przypisana lokalizacja musi należeć do witryny nadrzędnej ({site})." +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "współczynnik kształtu" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "typ stelaża" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "typy regałów" -#: netbox/dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" "Należy określić jednostkę podczas ustawiania szerokości/głębokości " "zewnętrznej" -#: netbox/dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "Należy określić jednostkę podczas ustawiania maksymalnej wagi" -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "rola stelaża" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "role w szafie" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "Identyfikator obiektu" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Lokalnie przypisany identyfikator" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Funkcjonalna rola" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Unikalny znacznik używany do identyfikacji tego stelaża" + +#: netbox/dcim/models/racks.py:359 +msgid "rack" +msgstr "regał" + +#: netbox/dcim/models/racks.py:360 +msgid "racks" +msgstr "stojaki" + +#: netbox/dcim/models/racks.py:375 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "Przypisana lokalizacja musi należeć do witryny nadrzędnej ({site})." + +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6063,7 +6451,7 @@ msgstr "" "Stojak musi być co najmniej {min_height}Wysokość do przechowywania aktualnie" " zainstalowanych urządzeń." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6072,29 +6460,29 @@ msgstr "" "Numeracja jednostek regałowych musi rozpoczynać się od {position} lub mniej," " aby pomieścić aktualnie zainstalowane urządzenia." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "Lokalizacja musi pochodzić z tego samego miejsca, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "jednostki" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "rezerwacja stojaków" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "rezerwacje regałów" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Nieprawidłowa jednostka (y) dla {height}Stojak U: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Następujące jednostki zostały już zarezerwowane: {unit_list}" @@ -6198,11 +6586,11 @@ msgstr "Wypowiedzenie A" msgid "Termination B" msgstr "Wypowiedzenie B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Urządzenie A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Urządzenie B" @@ -6237,13 +6625,13 @@ msgid "Reachable" msgstr "Osiągnięty" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Urządzenia" @@ -6253,17 +6641,17 @@ msgid "VMs" msgstr "maszyny wirtualne" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Szablon konfiguracji" @@ -6271,22 +6659,22 @@ msgstr "Szablon konfiguracji" msgid "Site Group" msgstr "Grupa witryn" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "Adres IP" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "Adres IPv4" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "Adres IPv6" @@ -6323,10 +6711,10 @@ msgstr "Porty zasilania" msgid "Power outlets" msgstr "Gniazdka elektryczne" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6336,8 +6724,8 @@ msgstr "Gniazdka elektryczne" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfejsy" @@ -6363,8 +6751,8 @@ msgid "Module Bay" msgstr "Moduł Bay" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6373,30 +6761,30 @@ msgstr "Moduł Bay" msgid "Inventory Items" msgstr "Przedmioty magazynowe" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Kolor kabla" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Łącz rówieśników" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Oznacz Połączony" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Maksymalne wyciąganie (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Przydzielone losowanie (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6405,12 +6793,12 @@ msgstr "Przydzielone losowanie (W)" msgid "IP Addresses" msgstr "Adresy IP" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Grupy FHRP" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6421,52 +6809,52 @@ msgstr "Grupy FHRP" msgid "Tunnel" msgstr "Tunel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Tylko zarządzanie" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Zainstalowany moduł" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Moduł szeregowy" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Etykietka zasobów modułu" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Status modułu" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Komponent" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Przedmioty" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Rodzaje urządzeń" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Rodzaje modułów" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Platformy" @@ -6485,12 +6873,13 @@ msgid "U Height" msgstr "Wysokość U" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Instancje" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6499,9 +6888,9 @@ msgstr "Instancje" msgid "Console Ports" msgstr "Porty konsoli" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6510,9 +6899,9 @@ msgstr "Porty konsoli" msgid "Console Server Ports" msgstr "Porty serwera konsoli" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6521,9 +6910,9 @@ msgstr "Porty serwera konsoli" msgid "Power Ports" msgstr "Porty zasilania" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6532,9 +6921,9 @@ msgstr "Porty zasilania" msgid "Power Outlets" msgstr "Gniazdka elektryczne" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6542,9 +6931,9 @@ msgstr "Gniazdka elektryczne" msgid "Front Ports" msgstr "Porty przednie" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6553,23 +6942,26 @@ msgstr "Porty przednie" msgid "Rear Ports" msgstr "Tylne porty" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Wnęsy na urządzenia" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Wnęsy modułowe" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Zasilanie zasilania" @@ -6582,41 +6974,45 @@ msgstr "Maksymalne wykorzystanie" msgid "Available Power (VA)" msgstr "Dostępna moc (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Regały" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Wysokość" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Przestrzeń" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Szerokość zewnętrzna" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Głębokość zewnętrzna" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Maksymalna waga" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Przestrzeń" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Witryny" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "Przypadek testowy musi ustawić peer_termination_type" @@ -6625,77 +7021,77 @@ msgstr "Przypadek testowy musi ustawić peer_termination_type" msgid "Disconnected {count} {type}" msgstr "Odłączony {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Rezerwacje" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Urządzenia bez stojaków" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Kontekst konfiguracji" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Konfiguracja renderowania" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Wystąpił błąd podczas renderowania szablonu: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Maszyny wirtualne" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Zainstalowane urządzenie {device} w zatoce {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Usunięte urządzenie {device} z zatoki {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Dzieci" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Dodano członka {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Nie można usunąć urządzenia głównego {device} z wirtualnego podwozia." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Usunięto {device} z wirtualnego podwozia {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Nieznany obiekt (y) powiązany (y): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "Zmiana typu pól niestandardowych nie jest obsługiwana." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "Planowanie nie jest włączone dla tego skryptu." @@ -6744,7 +7140,7 @@ msgid "Multiple objects" msgstr "Wiele obiektów" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Niepełnosprawny" @@ -6779,7 +7175,7 @@ msgstr "Nie" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Link" @@ -6799,65 +7195,56 @@ msgstr "Alfabetycznie (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Alfabetycznie (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Zaktualizowano" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Usunięte" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Informacja" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Sukces" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Ostrzeżenie" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Niebezpieczeństwo" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Debugowanie" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Domyślnie" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Niepowodzenie" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Godzinowe" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 godzin" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Codziennie" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Tygodniowy" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 dni" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6865,18 +7252,16 @@ msgstr "30 dni" msgid "Create" msgstr "Stwórz" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Aktualizacja" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6887,81 +7272,85 @@ msgstr "Aktualizacja" msgid "Delete" msgstr "Usuń" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Niebieska" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Indygo" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Fioletowy" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Różowy" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Czerwony" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "Pomarańczowy" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Żółty" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Zielony" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Cyraneczka" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Niebieski" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Szary" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Czarny" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Biały" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Hook internetowy" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Skrypt" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Powiadomienie" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7035,61 +7424,61 @@ msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "" "Nieprawidłowy format. Filtry obiektów muszą być przekazywane jako słownik." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Lista obiektów" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Wyświetla dowolną listę obiektów." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Domyślna liczba obiektów do wyświetlenia" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" "Nieprawidłowy format. Parametry adresu URL muszą być przekazywane jako " "słownik." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "Kanał RSS" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Osadź kanał RSS z zewnętrznej strony internetowej." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "Adres URL kanału" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Maksymalna liczba obiektów do wyświetlenia" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Jak długo przechowywać zawartość w pamięci podręcznej (w sekundach)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Zakładki" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Pokaż swoje osobiste zakładki" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Nieznany typ akcji dla reguły zdarzenia: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Nie można importować pociągu zdarzeń {name} błąd: {error}" @@ -7098,210 +7487,219 @@ msgstr "Nie można importować pociągu zdarzeń {name} błąd: {error}" msgid "Script module (ID)" msgstr "Moduł skryptu (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Plik danych (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Grupa (nazwa)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Typ klastra" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Typ klastra (ślimak)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Grupa najemców" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Grupa najemców (ślimak)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Etykietka" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Tag (ślimak)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Posiada lokalne dane kontekstowe konfiguracji" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Nazwa użytkownika" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Nazwa grupy" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Wymagane" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Musi być wyjątkowy" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "Widoczny interfejs użytkownika" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "Edytowalny interfejs użytkownika" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Jest klonowalny" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Minimalna wartość" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Maksymalna wartość" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Walidacja regex" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Zachowanie" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Nowe okno" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Klasa przycisków" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "Typ MIME" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Rozszerzenie pliku" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Jako załącznik" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Udostępnione" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "Metoda HTTP" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "Adres URL ładunku" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "Weryfikacja SSL" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Tajemnica" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "Ścieżka pliku CA" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Przy tworzeniu" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "Po aktualizacji" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Po usunięciu" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Rodzaje zdarzeń" -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "Na początku pracy" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "Na koniec pracy" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Jest aktywny" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Typy obiektów" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Jeden lub więcej przypisanych typów obiektów" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Typ danych pola (np. tekst, liczba całkowita itp.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Typ obiektu" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Typ obiektu (dla pól obiektu lub wielu obiektów)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Zestaw do wyboru" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Zestaw wyboru (dla pól wyboru)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Czy pole niestandardowe jest wyświetlane w interfejsie użytkownika" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Czy pole niestandardowe można edytować w interfejsie użytkownika" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "Podstawowy zestaw predefiniowanych opcji do użycia (jeśli istnieje)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7309,205 +7707,201 @@ msgstr "" "Cytowany ciąg opcji pól oddzielonych przecinkami z opcjonalnymi etykietami " "oddzielonymi dwukropkiem: „Choice1:First Choice, Choice2:Second Choice”" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "klasa przycisków" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "Klasa pierwszego łącza w grupie zostanie użyta dla rozwijanego przycisku" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Typy zdarzeń, które wyzwalają tę regułę" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Obiekt akcji" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Nazwa lub skrypt Webhook jako ścieżka kropkowana module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Hook internetowy {name} nie znaleziono" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Skrypt {name} nie znaleziono" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Przypisany typ obiektu" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "Klasyfikacja wpisu" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Użytkownicy" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "" +"Nazwy użytkowników oddzielone przecinkami, otoczone podwójnymi cudzysłowami" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Grupy" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Nazwy grup oddzielone przecinkami, otoczone podwójnymi cudzysłowami" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Powiązany typ obiektu" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Typ pola" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Wybory" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Dane" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Plik danych" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Typy treści" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "Typ zawartości HTTP" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Wydarzenia" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "Typ zdarzenia" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "Rodzaj akcji" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Tworzenie obiektów" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Aktualizacje obiektów" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Usuwanie obiektów" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Praca zaczyna się" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Wypowiedzenie pracy" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Typ obiektu oznaczonego" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Dozwolony typ obiektu" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Regiony" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Grupy witryn" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Lokalizacje" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Rodzaje urządzeń" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Role" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Typy klastrów" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Grupy klastrów" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Klastry" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Grupy najemców" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Po" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Wcześniej" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Czas" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Typ (y) obiektu, który ma to pole niestandardowe" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Działanie" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Wartość domyślna" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "Typ powiązanego obiektu (tylko dla pól obiektu/wielu obiektów)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Powiązany filtr obiektów" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Określ parametry zapytania jako obiekt JSON." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Pole niestandardowe" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Zachowanie" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Wartości" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7515,7 +7909,7 @@ msgstr "" "Rodzaj danych przechowywanych w tym polu. W przypadku pól obiektu/wielu " "obiektów wybierz powiązany typ obiektu poniżej." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7523,7 +7917,11 @@ msgstr "" "Zostanie wyświetlony jako tekst pomocy dla pola formularza. Markdown jest " "obsługiwany." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Powiązany obiekt" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7531,16 +7929,16 @@ msgstr "" "Wprowadź jeden wybór na linię. Opcjonalną etykietę można określić dla " "każdego wyboru, dodając ją dwukropkiem. Przykład:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Niestandardowe łącze" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Szablony" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7549,62 +7947,66 @@ msgstr "" "Kod szablonu Jinja2 dla tekstu łącza. Odwołaj obiekt jako {example}. Linki " "renderowane jako pusty tekst nie będą wyświetlane." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "" "Kod szablonu Jinja2 dla adresu URL linku. Odwołaj obiekt jako {example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Kod szablonu" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Szablon eksportu" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Renderowanie" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "Zawartość szablonu jest wypełniana ze zdalnego źródła wybranego poniżej." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Musi określić zawartość lokalną lub plik danych" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Zapisany filtr" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "Grupa powiadomień określa co najmniej jednego użytkownika lub grupę." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "Żądanie HTTP" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Wybór działania" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Wprowadź warunki w JSON format." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7612,55 +8014,33 @@ msgstr "" "Wprowadź parametry, które mają zostać przekazane do akcji w JSON format." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Reguła zdarzenia" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Warunki" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Kreacje" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Aktualizacje" - -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Usunięcia" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Wyzwalacze" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Egzekucje zadań" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Grupa powiadomień" -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Najemcy" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Zlecenie" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "Dane są wypełniane ze zdalnego źródła wybranego poniżej." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Musi określić dane lokalne lub plik danych" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Zawartość" @@ -7707,48 +8087,25 @@ msgstr "Zaplanuj wykonanie skryptu na określony czas" msgid "Interval at which this script is re-run (in minutes)" msgstr "Interwał, w którym ten skrypt jest ponownie uruchamiany (w minutach)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Nie znaleziono indeksatorów!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "czas" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "nazwa użytkownika" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "Identyfikator żądania" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "działanie" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "dane wstępnej zmiany" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Zmiany w bazie danych zostały wycofane automatycznie." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "dane po zmianie" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Skrypt przerwany z błędem: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "zmiana obiektu" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Wystąpił wyjątek: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "zmiany obiektu" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Zmiany bazy danych zostały cofnięte z powodu błędu." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "" -"Rejestracja zmian nie jest obsługiwana dla tego typu obiektu ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Nie znaleziono indeksatorów!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7800,32 +8157,32 @@ msgstr "szablon konfiguracji" msgid "config templates" msgstr "szablony konfiguracji" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Obiekt (-y), do którego dotyczy to pole." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Typ danych przechowywanych w tym polu niestandardowym" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "Typ obiektu NetBox, do którego mapuje to pole (dla pól obiektowych)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Nazwa pola wewnętrznego" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Dozwolone są tylko znaki alfanumeryczne i podkreślenia." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "Podwójne podkreślenia nie są dozwolone w niestandardowych nazwach pól." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7833,31 +8190,39 @@ msgstr "" "Nazwa pola wyświetlana użytkownikom (jeśli nie zostanie podana, zostanie " "użyta nazwa pola)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "nazwa grupy" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Pola niestandardowe w tej samej grupie będą wyświetlane razem" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "wymagane" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Jeśli jest to prawda, to pole jest wymagane podczas tworzenia nowych " -"obiektów lub edycji istniejącego obiektu." +"To pole jest wymagane podczas tworzenia nowych obiektów lub edycji " +"istniejącego obiektu." + +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "musi być wyjątkowy" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "Wartość tego pola musi być niepowtarzalna dla przypisanego obiektu" -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "waga wyszukiwania" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7865,11 +8230,11 @@ msgstr "" "Ważenie do wyszukiwania. Niższe wartości są uważane za ważniejsze. Pola o " "wadze wyszukiwania równej zero zostaną zignorowane." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "logika filtra" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7877,11 +8242,11 @@ msgstr "" "Luźna pasuje do dowolnego wystąpienia danego ciągu; dokładnie pasuje do " "całego pola." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "domyślny" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7889,35 +8254,44 @@ msgstr "" "Wartość domyślna dla pola (musi być wartością JSON). Enkapsuluj ciągi z " "podwójnymi cudzysłowami (np. „Foo”)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filtruj opcje wyboru obiektów za pomocą polecenia query_params (musi być " +"wartością JSON). Enkapsuluj ciągi znaków z podwójnymi cudzysłowami (np. " +"„Foo”)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "waga wyświetlacza" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "Pola o większej wadze wydają się niższe w formularzu." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "wartość minimalna" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Minimalna dopuszczalna wartość (dla pól numerycznych)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "maksymalna wartość" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Maksymalna dopuszczalna wartość (dla pól numerycznych)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "walidacja regex" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7928,278 +8302,247 @@ msgstr "" "wymusić dopasowanie całego ciągu. Na przykład, ^ [A-Z]{3}$ " "ograniczy wartości do dokładnie trzech wielkich liter." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "zestaw wyboru" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Określa, czy pole niestandardowe jest wyświetlane w interfejsie użytkownika" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Określa, czy wartość pola niestandardowego może być edytowana w interfejsie " "użytkownika" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "jest klonowalny" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Powtórz tę wartość podczas klonowania obiektów" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "pole niestandardowe" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "pola niestandardowe" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Nieprawidłowa wartość domyślna”{value}„: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "Wartość minimalna może być ustawiona tylko dla pól numerycznych" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "Maksymalna wartość może być ustawiona tylko dla pól liczbowych" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Walidacja wyrażeń regularnych jest obsługiwana tylko dla pól tekstowych i " "URL" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "Unikalność nie może być egzekwowana dla pól logicznych" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Pola wyboru muszą określać zestaw opcji." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Opcje można ustawić tylko w polach wyboru." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Pola obiektu muszą definiować typ obiektu." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} pola mogą nie definiować typu obiektu." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "Powiązany filtr obiektów można zdefiniować tylko dla pól obiektu." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Filtr musi być zdefiniowany jako słownik mapowania atrybutów do wartości." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Prawda" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Fałszywe" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "Wartości muszą być zgodne z tym regex: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "Wartość musi być ciągiem." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "Wartość musi być zgodna z regex '{regex}”" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "Wartość musi być liczbą całkowitą." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "Wartość musi być co najmniej {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "Wartość nie może przekraczać {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "Wartość musi być dziesiętna." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "Wartość musi być prawdziwa lub fałszywa." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Wartości dat muszą być w formacie ISO 8601 (RRRR-MM-DD)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Wartości daty i godziny muszą być zgodne z normą ISO 8601 (RRRR-MM-DD " "HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Nieprawidłowy wybór ({value}) do wyboru zestawu {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Nieprawidłowy wybór (y) ({value}) do wyboru zestawu {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "Wartość musi być identyfikatorem obiektu, a nie {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "Wartość musi być listą identyfikatorów obiektów, a nie {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Znaleziono nieprawidłowy identyfikator obiektu: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Pole wymagane nie może być puste." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Podstawowy zestaw predefiniowanych opcji (opcjonalnie)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Wybory są automatycznie uporządkowane alfabetycznie" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "niestandardowy zestaw wyboru pola" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "niestandardowe zestawy wyboru pól" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Musi zdefiniować opcje bazowe lub dodatkowe." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "układ" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "konfiguruj" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "deska rozdzielcza" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "pulpity nawigacyjne" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "typy obiektów" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Obiekt (-y), do którego ma zastosowanie ta reguła." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "na tworzenie" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Wyzwala się, gdy tworzony jest pasujący obiekt." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "na aktualizacji" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Wyzwala się, gdy pasujący obiekt jest aktualizowany." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "przy usuwaniu" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Wyzwala się, gdy pasujący obiekt zostanie usunięty." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "na początku pracy" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Wyzwala się po uruchomieniu zadania dla pasującego obiektu." - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "na koniec pracy" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Wyzwala się, gdy zadanie dla pasującego obiektu zostaje zakończone." +msgid "The types of event which will trigger this rule." +msgstr "Rodzaje zdarzeń, które wyzwalają tę regułę." -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "warunki" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "" "Zestaw warunków decydujących o tym, czy zdarzenie zostanie wygenerowane." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "typ działania" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Dodatkowe dane do przekazania do obiektu akcji" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "reguła zdarzenia" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "zasady zdarzeń" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Należy wybrać co najmniej jeden typ zdarzenia: tworzenie, aktualizowanie, " -"usuwanie, rozpoczęcie zadania i/lub zakończenie zadania." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8209,7 +8552,7 @@ msgstr "" "podczas wywołania webhook. Przetwarzanie szablonu Jinja2 jest obsługiwane w " "tym samym kontekście co treść żądania." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available tutaj." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "dodatkowe nagłówki" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8235,11 +8578,11 @@ msgstr "" "formacie Nazwa: Value. Przetwarzanie szablonu Jinja2 jest " "obsługiwane w tym samym kontekście co treść żądania (poniżej)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "szablon ciała" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8252,11 +8595,11 @@ msgstr "" "znacznik czasu, nazwa użytkownika, " "Identyfikator żądania, i dane." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "tajemnica" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8266,15 +8609,15 @@ msgstr "" "zawierający podsumowanie heksadecymalne HMAC korpusu ładunku użytkowego " "używającego sekretu jako klucza. Tajemnica nie jest przekazywana w żądaniu." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "Włącz weryfikację certyfikatu SSL. Wyłącz ostrożnie!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "Ścieżka pliku CA" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8282,64 +8625,64 @@ msgstr "" "Określony plik certyfikatu CA, który ma być używany do weryfikacji SSL. " "Pozostaw puste miejsce, aby użyć ustawień domyślnych systemu." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "haczyk internetowy" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "haczyki internetowe" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "Nie określaj pliku certyfikatu CA, jeśli weryfikacja SSL jest wyłączona." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Typ obiektu (-y), do którego dotyczy to łącze." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "tekst linku" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Kod szablonu Jinja2 dla tekstu linku" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL linku" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Kod szablonu Jinja2 dla adresu URL linku" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Linki z tą samą grupą pojawią się jako menu rozwijane" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "nowe okno" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Wymuś otwarcie łącza w nowym oknie" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "niestandardowy link" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "niestandardowe linki" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Typ obiektu, do którego ma zastosowanie ten szablon." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8347,113 +8690,160 @@ msgstr "" "Kod szablonu Jinja2. Lista eksportowanych obiektów jest przekazywana jako " "zmienna kontekstowa o nazwie zestaw zapytań." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "Domyślnie tekst/zwykły; charset = utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "rozszerzenie pliku" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Rozszerzenie do dołączenia do renderowanej nazwy pliku" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "jako załącznik" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Pobierz plik jako załącznik" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "szablon eksportu" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "szablony eksportu" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "„{name}„jest zastrzeżoną nazwą. Proszę wybrać inną nazwę." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Typ obiektu (-y), do którego ma zastosowanie ten filtr." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "wspólne" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "zapisany filtr" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "zapisane filtry" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Parametry filtra muszą być przechowywane jako słownik argumentów słów " "kluczowych." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "wysokość obrazu" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "szerokość obrazu" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "załącznik do obrazu" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "załączniki do obrazów" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" "Załączniki obrazów nie mogą być przypisane do tego typu obiektu ({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "rodzaj" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "wpis do dziennika" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "wpisy do dziennika" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Rejestracja nie jest obsługiwana dla tego typu obiektu ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "zakładka" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "zakładki" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "Zakładki nie mogą być przypisane do tego typu obiektu ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "przeczytać" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "zdarzenie" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "powiadomienie" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "powiadomienia" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Obiekty tego typu ({type}) nie obsługują powiadomień." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "grupy" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "użytkownicy" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "grupa powiadomień" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "grupy powiadomień" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "subskrypcja" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "subskrypcje" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "jest wykonywalny" @@ -8494,19 +8884,19 @@ msgstr "wartość buforowana" msgid "cached values" msgstr "wartości buforowane" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "oddział" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "oddziałów" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "zmiana etapowa" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "zmiany etapowe" @@ -8530,85 +8920,87 @@ msgstr "przedmiot oznaczony" msgid "tagged items" msgstr "przedmioty oznaczone" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Dane skryptu" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Parametry wykonywania skryptów" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Zmiany w bazie danych zostały wycofane automatycznie." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Skrypt przerwany z błędem: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Wystąpił wyjątek: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Zmiany bazy danych zostały cofnięte z powodu błędu." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "Usuwanie jest zapobiegane przez regułę ochrony: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Odrzucić" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Typy obiektów" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Potwierdź wyjątkowość" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Widoczne" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Edytowalny" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Powiązany typ obiektu" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Zestaw wyboru" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Jest klonowalny" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Minimalna wartość" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Maksymalna wartość" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Walidacja Regex" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Policz" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Uporządkuj alfabetycznie" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Nowe okno" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Jako załącznik" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8618,63 +9010,54 @@ msgstr "Jako załącznik" msgid "Data File" msgstr "Plik danych" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Zsynchronizowane" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Obraz" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Rozmiar (bajty)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Przeczytaj" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "Walidacja SSL" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Rozpoczęcie pracy" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Zakończenie pracy" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Rodzaje zdarzeń" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Role urządzenia" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Pełne imię i nazwisko" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "Identyfikator żądania" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Komentarze (krótkie)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Linia" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Poziom" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Wiadomość" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Metoda" @@ -8705,37 +9088,37 @@ msgstr "Reguły walidacji muszą być przekazane jako słownik" msgid "Custom validation failed for {attribute}: {exception}" msgstr "Niestandardowa walidacja nie powiodła się {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Nieprawidłowy atrybut”{name}„na żądanie" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Nieprawidłowy atrybut”{name}„dla {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Twój pulpit nawigacyjny został zresetowany." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Dodano widżet: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Zaktualizowano widżet: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Usunięty widget: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Błąd usuwania widżetu: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "Nie można uruchomić skryptu: proces roboczy RQ nie działa." @@ -8780,10 +9163,6 @@ msgstr "SLACK" msgid "Loopback" msgstr "Pętla zwrotna" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Wtórny" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8809,19 +9188,19 @@ msgstr "Zwykły tekst" msgid "Invalid IP address format: {address}" msgstr "Nieprawidłowy format adresu IP: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Importuj cel" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Import docelowy (nazwa)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Cel eksportu" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Eksportuj cel (nazwa)" @@ -8886,16 +9265,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Prefiksy zawierające ten prefiks lub adres IP" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Długość maski" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "Numer VLAN (1-4094)" @@ -8915,23 +9294,23 @@ msgid "Parent prefix" msgstr "Prefiks nadrzędny" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Maszyna wirtualna (nazwa)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Maszyna wirtualna (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Interfejs (nazwa)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "Interfejs maszyny wirtualnej (nazwa)" @@ -8959,19 +9338,19 @@ msgstr "Usługa (ID)" msgid "NAT inside IP address (ID)" msgstr "NAT wewnątrz adresu IP (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "Adres IP (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "Adres IP" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "Podstawowy IPv4 (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "Podstawowy protokół IPv6 (ID)" @@ -9004,17 +9383,17 @@ msgstr "Wymagana jest maska CIDR (np. /24)." msgid "Address pattern" msgstr "Wzór adresu" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Wymuszaj unikalną przestrzeń" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Jest prywatny" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9027,20 +9406,20 @@ msgstr "Jest prywatny" msgid "RIR" msgstr "WRZUCIĆ" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Data dodania" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupa VLAN" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9049,49 +9428,49 @@ msgstr "Grupa VLAN" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Długość przedrostka" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Jest basenem" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Traktuj jako w pełni wykorzystany" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "Przypisanie sieci VLAN" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "Nazwa DNS" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokół" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Identyfikator grupy" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9103,156 +9482,142 @@ msgstr "Identyfikator grupy" msgid "Authentication type" msgstr "Typ uwierzytelniania" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "klucz uwierzytelniania" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Uwierzytelnienie" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "Minimalna macierzysta VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Maksymalna liczba dzieci VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Rodzaj zakresu" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "Zakresy identyfikatorów VLAN" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Zakres" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Strona & Grupa" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Porty" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Importuj cele trasy" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Cele trasy eksportu" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "Przypisany RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "Grupa sieci VLAN (jeśli istnieje)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Urządzenie nadrzędne przypisanego interfejsu (jeśli istnieje)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Maszyna wirtualna" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "Nadrzędna maszyna wirtualna przypisanego interfejsu (jeśli istnieje)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Przypisany interfejs" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Jest podstawowy" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Ustaw to podstawowy adres IP przypisanego urządzenia" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Nie określono urządzenia ani maszyny wirtualnej; nie można ustawić jako " "podstawowego adresu IP" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" "Nie określono interfejsu; nie można ustawić jako podstawowego adresu IP" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Rodzaj auth" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Typ zakresu (aplikacja i model)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Minimalna macierzysta VLAN VID (domyślnie: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Maksymalna macierzysta macierzysta VLAN VID (domyślnie: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Przypisana grupa VLAN" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "protokół IP" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Wymagane, jeśli nie jest przypisane do maszyny wirtualnej" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Wymagane, jeśli nie jest przypisane do urządzenia" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} nie jest przypisany do tego urządzenia/maszyny wirtualnej." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Cele trasy" @@ -9328,31 +9693,34 @@ msgstr "Przypisany do interfejsu" msgid "DNS Name" msgstr "Nazwa DNS" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "IDENTYFIKATOR VLAN" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "sieci VLAN" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Minimalny VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Zawiera identyfikator VLAN" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Maksymalny VID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "IDENTYFIKATOR VLAN" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9423,11 +9791,16 @@ msgstr "Wirtualny adres IP" msgid "Assignment already exists" msgstr "Przydział już istnieje" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "Identyfikatory sieci VLAN" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "Dziecięce sieci VLAN" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9435,33 +9808,33 @@ msgstr "" "Oddzielona przecinkami lista jednego lub więcej numerów portów. Zakres można" " określić za pomocą myślnika." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Szablon usługi" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Port (y)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Serwis" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Szablon usługi" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Z szablonu" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Niestandardowe" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9502,7 +9875,7 @@ msgstr "ID grupy" msgid "protocol" msgstr "protokół" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "typ uwierzytelniania" @@ -9518,10 +9891,6 @@ msgstr "Grupa FHRP" msgid "FHRP groups" msgstr "Grupy FHRP" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "priorytet" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "Przydział grupy FHRP" @@ -9538,7 +9907,7 @@ msgstr "prywatny" msgid "IP space managed by this RIR is considered private" msgstr "Przestrzeń IP zarządzana przez ten RIR jest uważana za prywatną" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR" @@ -9790,22 +10159,6 @@ msgid "" "A service must be associated with either a device or a virtual machine." msgstr "Usługa musi być powiązana z urządzeniem lub maszyną wirtualną." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "minimalny identyfikator VLAN" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Najniższy dopuszczalny identyfikator macierzystej sieci VLAN" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "maksymalny identyfikator sieci VLAN" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Najwyższy dopuszczalny identyfikator macierzystej sieci VLAN" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "Grupy VLAN" @@ -9818,40 +10171,41 @@ msgstr "Nie można ustawić typu skope_bez identyfikatora scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Nie można ustawić scope_id bez scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Zakresy nie mogą się nakładać." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" -"Maksymalna wartość VID dziecka musi być większa lub równa minimalnej " -"wartości VID dziecka" +"Maksymalny VID dziecka musi być większy lub równy minimalnej wartości VID " +"dziecka ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "" "Określona strona, do której przypisana jest ta sieć VLAN (jeśli istnieje)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "Grupa VLAN (opcjonalnie)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "Numeryczny identyfikator sieci VLAN (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Stan operacyjny tej sieci VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "Podstawowa funkcja tej sieci VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "sieci VLAN" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9860,11 +10214,10 @@ msgstr "" "VLAN jest przypisana do grupy {group} (zakres: {scope}); nie można również " "przypisać do witryny {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "" -"VID musi być pomiędzy {minimum} a {maximum} dla sieci VLAN w grupie {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "VID musi być w zakresach {ranges} dla sieci VLAN w grupie {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9882,8 +10235,8 @@ msgstr "egzekwuj unikalną przestrzeń" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Zapobiegaj zduplikowaniu prefiks/adresów IP w tym VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF" @@ -9911,8 +10264,8 @@ msgstr "Liczba witryn" msgid "Provider Count" msgstr "Liczba dostawców" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Agregaty" @@ -9921,21 +10274,21 @@ msgid "Added" msgstr "Dodano" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Prefiksy" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Wykorzystanie" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "Zakresy IP" @@ -9980,7 +10333,11 @@ msgstr "Przypisany obiekt" msgid "Scope Type" msgstr "Rodzaj zakresu" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "Zakresy VID" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VIDEO" @@ -10045,11 +10402,11 @@ msgstr "Interfejsy urządzeń" msgid "VM Interfaces" msgstr "Interfejsy VM" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "To pole może nie być puste." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10057,23 +10414,36 @@ msgstr "" "Wartość musi być przekazana bezpośrednio (np. „foo”: 123); nie używaj " "słownika ani listy." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} Nie jest ważnym wyborem." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Nieprawidłowy typ zawartości: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Nieprawidłowa wartość. Określ typ zawartości jako " "'.”." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "Zakresy muszą być określone w formularzu (dolny, górny)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Granice zakresu muszą być zdefiniowane jako liczby całkowite." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} musi zaimplementować get_view_name ()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Nieprawidłowe uprawnienia {permission} dla modelu {model}" @@ -10402,46 +10772,51 @@ msgstr "Usuń tagi" msgid "{class_name} must specify a model class." msgstr "{class_name} musi określić klasę modelu." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Nieznana nazwa pola '{name}'w danych pola niestandardowego." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Nieprawidłowa wartość pola niestandardowego '{name}”: {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Pole niestandardowe '{name}„musi mieć unikalną wartość." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Brakujące wymagane pole niestandardowe '{name}”." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Zdalne źródło danych" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "ścieżka danych" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Ścieżka do pliku zdalnego (względem katalogu głównego źródła danych)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "włączona automatyczna synchronizacja" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "Włącz automatyczną synchronizację danych po aktualizacji pliku danych" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "data zsynchronizowana" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} musi wdrożyć metodę sync_data ()." @@ -10455,217 +10830,230 @@ msgid "Site Groups" msgstr "Grupy witryn" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Role w szafie" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Elewacje" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Grupy najemców" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Grupy kontaktowe" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Role kontaktowe" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Zadania kontaktowe" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Role w szafie" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Elewacje" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Rodzaje regałów" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Moduły" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Konteksty urządzeń wirtualnych" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Producenci" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Komponenty urządzenia" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Role pozycji zapasów" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Połączenia" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Kable" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Linki bezprzewodowe" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Połączenia interfejsu" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Połączenia konsoli" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Połączenia zasilania" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Grupy sieci bezprzewodowej sieci LAN" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Role prefiksów i sieci VLAN" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "Zakresy ASN" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "Grupy VLAN" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Szablony usług" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Usługi" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Tunele" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Grupy tuneli" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Zakończenia tunelu" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPN" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Zakończenia" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "Propozycje IKE" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "IKE Zasady działalności" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "Propozycje IPsec" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "Zasady IPsec" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "Profile IPsec" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Wirtualizacja" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Wirtualne dyski" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Typy klastrów" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Grupy klastrów" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Typy obwodów" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Grupy obwodów" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Zadania grupowe" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Zakończenia obwodów" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Dostawcy" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Konta dostawców" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Sieci dostawców" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Panele zasilające" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Konfiguracje" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Konteksty konfiguracji" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Szablony konfiguracji" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Dostosowywanie" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10678,114 +11066,108 @@ msgstr "Dostosowywanie" msgid "Custom Fields" msgstr "Pola niestandardowe" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Niestandardowe opcje pól" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Linki niestandardowe" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Szablony eksportu" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Zapisane filtry" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Załączniki do obrazów" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operacje" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Integracje" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Źródła danych" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Zasady zdarzeń" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Haczyki internetowe" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Oferty pracy" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Rejestracja" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Grupy powiadomień" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Wpisy do czasopism" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Dziennik zmian" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "Administrator" -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Użytkownicy" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Grupy" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "Tokeny API" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Uprawnienia" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "System" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Wtyczki" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Historia konfiguracji" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Zadania w tle" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Wtyczki" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10817,33 +11199,24 @@ msgstr "" "{template_extension} nie jest podklasą " "Netbox.Plugins.Plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"PluginTemplateExtension class {template_extension} nie definiuje " -"prawidłowego modelu!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} musi być wystąpieniem Netbox.Plugins.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "" "{menu_link} musi być wystąpieniem Netbox.Plugins.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "" "{button} musi być wystąpieniem Netbox.Plugins.Plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context musi być słownikiem" @@ -10922,75 +11295,79 @@ msgstr "Nie można dodać sklepów do rejestru po zainicjowaniu" msgid "Cannot delete stores from registry" msgstr "Nie można usunąć sklepów z rejestru" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "czeski" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "duński" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "niemiecki" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "angielski" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "hiszpański" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "francuski" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "włoski" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "japoński" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "holenderski" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "polski" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "portugalski" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "rosyjski" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "turecki" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "ukraiński" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "chiński" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Zaznacz wszystko" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Przełącz wszystko" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Przełącz menu rozwijane" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Błąd" @@ -11042,24 +11419,24 @@ msgstr "Zmiana nazwy {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Usunięte {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Dziennik zmian" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "Dziennik" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "Nie można zsynchronizować danych: Brak zestawu plików danych." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Zsynchronizowane dane dla {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Zsynchronizowane {count} {object_type}" @@ -11069,7 +11446,7 @@ msgstr "Zsynchronizowane {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} musi zaimplementować get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11105,11 +11482,11 @@ msgstr "Wystąpił problem z twoją prośbą. Skontaktuj się z administratorem" msgid "The complete exception is provided below" msgstr "Pełny wyjątek znajduje się poniżej" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Wersja Pythona" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "Wersja NetBox" @@ -11133,14 +11510,26 @@ msgstr "na GitHub" msgid "Home Page" msgstr "Strona główna" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Profil" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Powiadomienia" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Subskrypcje" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Preferencje" @@ -11148,7 +11537,7 @@ msgstr "Preferencje" msgid "Change Password" msgstr "Zmień hasło" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11173,7 +11562,7 @@ msgstr "Zmień hasło" msgid "Cancel" msgstr "Anuluj" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11247,7 +11636,7 @@ msgid "Superuser" msgstr "Superuser" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Personel" @@ -11262,19 +11651,19 @@ msgstr "Przydzielone grupy" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11295,7 +11684,7 @@ msgstr "Moje tokeny API" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Token" @@ -11316,32 +11705,41 @@ msgstr "Dodaj token" msgid "Home" msgstr "Strona główna" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "Motyw NetBox" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "Logo NetBox" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Dokumenty" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "Dokumentacja REST API" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "Interfejs API GraphQL" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Wsparcie NetBox Labs" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Kod źródłowy" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Społeczność" @@ -11353,6 +11751,11 @@ msgstr "Data instalacji" msgid "Termination Date" msgstr "Data wypowiedzenia" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Przypisz grupę" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Zamknięcia obwodu zamiennego" @@ -11370,6 +11773,14 @@ msgstr "Strona A" msgid "Z side" msgstr "Strona Z" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Przypisz obwód" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Przypisanie grupy obwodów" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Dodaj obwód" @@ -11394,7 +11805,7 @@ msgstr "Dodaj" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11515,13 +11926,10 @@ msgstr "Nowa wartość" msgid "Changed" msgstr "Zmieniono" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Ostatnia aktualizacja" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Rozmiar" @@ -11603,25 +12011,119 @@ msgstr "Preferencje użytkownika" msgid "Job retention" msgstr "Zatrzymanie pracy" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Praca" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Stworzony przez" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Planowanie" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "co %(interval)s minut(ę/y)" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Zmień" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Różnica" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Poprzednie" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Kolejny" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Utworzony obiekt" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Obiekt usunięty" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Brak zmian" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Wstępna zmiana danych" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Ostrzeżenie: Porównywanie zmian nieatomowych z poprzednim rekordem zmian" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Dane po zmianie" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Zobacz wszystko %(count)s Zmiany" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Zmień przechowywanie dziennika" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "dni" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Nieokreślony" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Nie zainstalowany" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Przegląd" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Zainstaluj" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Szczegóły wtyczki" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Podsumowanie" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Licencja" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Historia wersji" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Lokalne instrukcje instalacji" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11633,8 +12135,8 @@ msgstr "Kolejki tła" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11693,7 +12195,7 @@ msgid "Queued Jobs" msgstr "Zlecenia w kolejce" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11753,39 +12255,43 @@ msgstr "Eksportuj" msgid "System Status" msgstr "Status systemu" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "Wydanie NetBox" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Wersja Django" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "Wersja PostgreSQL" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Nazwa bazy danych" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Wielkość bazy danych" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Niedostępne" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "Pracownicy RQ" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "domyślna kolejka" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Czas systemu" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Bieżąca konfiguracja" @@ -11882,14 +12388,15 @@ msgstr "Nie zgarnięty" msgid "GPS Coordinates" msgstr "Współrzędne GPS" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Zmapuj to" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Mapa" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Etykietka zasobów" @@ -11909,19 +12416,19 @@ msgstr "Zarządzanie" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT dla" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NAT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Wykorzystanie mocy" @@ -11949,7 +12456,7 @@ msgid "Leg" msgstr "Noga" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Dodawanie usługi" @@ -12210,6 +12717,22 @@ msgstr "Wyczyść" msgid "Clear All" msgstr "Wyczyść wszystko" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Głębokość montażu" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Jednostka startowa" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Jednostki malejące" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Elewacja stojaka" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Dodaj interfejs podrzędny" @@ -12272,8 +12795,8 @@ msgstr "Szerokość kanału" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12363,49 +12886,33 @@ msgstr "Maksymalne losowanie" msgid "Allocated Draw" msgstr "Przydzielone losowanie" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Wykorzystanie przestrzeni" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "malejący" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "rosnąco" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Jednostka startowa" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Głębokość montażu" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Waga stojaka" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Maksymalna waga" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Całkowita waga" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Obrazy i etykiety" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Tylko obrazy" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Tylko etykiety" @@ -12418,6 +12925,10 @@ msgstr "Dodaj rezerwację" msgid "View List" msgstr "Wyświetl listę" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Wybierz widok stelaża" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Sortuj wg" @@ -12471,10 +12982,6 @@ msgstr "Czas na stronie" msgid "Physical Address" msgstr "Adres fizyczny" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Mapa" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Adres wysyłki" @@ -12515,7 +13022,7 @@ msgstr "Dodaj nowego członka" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Działania" @@ -12685,46 +13192,42 @@ msgid "Group Name" msgstr "Nazwa grupy" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Musi być wyjątkowy" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Klonowalne" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Wartość domyślna" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Szukaj wagi" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Filtruj logikę" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Waga wyświetlacza" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Widoczny interfejs użytkownika" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Edytowalny interfejs użytkownika" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Reguły walidacji" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Minimalna wartość" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Maksymalna wartość" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Wyrażenie regularne" @@ -12738,11 +13241,11 @@ msgstr "Klasa przycisków" msgid "Assigned Models" msgstr "Przypisane modele" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Tekst linku" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "Adres URL łącza" @@ -12767,6 +13270,14 @@ msgstr "" "Ta zmiana dotyczy tylko twój pulpit nawigacyjny i nie wpłynie na " "innych użytkowników." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "konfiguracja widżetu" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Zamknij widżet" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Dodawanie widżetu" @@ -12799,13 +13310,9 @@ msgstr "Wystąpił problem z pobieraniem kanału RSS" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Rozpoczęcie pracy" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Zakończenie pracy" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Warunki" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12847,20 +13354,15 @@ msgstr "Wyniki oczekujące" msgid "Journal Entry" msgstr "Wpis do dziennika" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Zmień przechowywanie dziennika" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "dni" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Grupa powiadomień" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Nieokreślony" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Brak przypisanych" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12874,53 +13376,6 @@ msgstr "Konteksty źródłowe" msgid "New Journal Entry" msgstr "Nowy wpis do dziennika" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Zmień" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Różnica" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Poprzednie" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Kolejny" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Utworzony obiekt" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Obiekt usunięty" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Brak zmian" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Wstępna zmiana danych" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Ostrzeżenie: Porównywanie zmian nieatomowych z poprzednim rekordem zmian" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Dane po zmianie" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Zobacz wszystko %(count)s Zmiany" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Zgłoś" @@ -12931,7 +13386,7 @@ msgstr "Nie masz uprawnień do uruchamiania skryptów" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Uruchom skrypt" @@ -12944,27 +13399,27 @@ msgstr "Błąd ładowania skryptu" msgid "Script no longer exists in the source file." msgstr "Skrypt nie istnieje już w pliku źródłowym." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Ostatni bieg" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Skrypt nie jest już obecny w pliku źródłowym" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Nigdy" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Uruchom ponownie" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Nie znaleziono skryptów" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -12979,6 +13434,14 @@ msgstr "" msgid "Results" msgstr "Wyniki" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Próg dziennika" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Wszystko" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Oznaczone przedmioty" @@ -13011,11 +13474,11 @@ msgstr "Typ zawartości HTTP" msgid "SSL Verification" msgstr "Weryfikacja SSL" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Dodatkowe nagłówki" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Szablon ciała" @@ -13092,6 +13555,10 @@ msgstr "Opcje pola" msgid "Accessor" msgstr "Akcesoria" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "wyborów" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Wartość importu" @@ -13258,6 +13725,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Następujące obiekty zostaną usunięte w wyniku tej akcji." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "temu" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Brak nieprzeczytanych powiadomień" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Wszystkie powiadomienia" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Wybierz" @@ -13325,15 +13804,23 @@ msgstr "Szybkie wyszukiwanie" msgid "Saved filter" msgstr "Zapisany filtr" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Wyraźne zamawianie" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Centrum pomocy" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Administrator Django" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Wyloguj się" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Zaloguj się" @@ -13381,10 +13868,6 @@ msgstr "Tworzenie zbiorcze" msgid "Create Group" msgstr "Utwórz grupę" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Przypisz grupę" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "Wirtualne adresy IP" @@ -13518,10 +14001,6 @@ msgstr "Dodawanie prefiksu" msgid "Add VLAN" msgstr "Dodaj VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "Dozwolone filmy" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Rozróżniacz trasy" @@ -13530,20 +14009,16 @@ msgstr "Rozróżniacz trasy" msgid "Unique IP Space" msgstr "Unikalna przestrzeń IP" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "Logo NetBox" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Błędy" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Zaloguj się" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Lub" @@ -13621,11 +14096,6 @@ msgstr "Tytuł" msgid "Phone" msgstr "Telefon" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Zadania" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13665,7 +14135,7 @@ msgstr "Przypisane uprawnienia" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Pozwolenie" @@ -13687,23 +14157,21 @@ msgid "Allocated Resources" msgstr "Przydzielone zasoby" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Wirtualne procesory" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Pamięć" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Miejsce na dysku" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13744,7 +14212,7 @@ msgid "Cluster Group" msgstr "Grupa klastrów" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Typ klastra" @@ -13753,13 +14221,13 @@ msgstr "Typ klastra" msgid "Virtual Disk" msgstr "Wirtualny dysk" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Zasoby" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Dodaj dysk wirtualny" @@ -13941,13 +14409,12 @@ msgstr "Dodaj grupę sieci bezprzewodowej sieci LAN" msgid "Link Properties" msgstr "Właściwości łącza" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Trzeciorzędowy" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Nieaktywny" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Dystans" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14112,13 +14579,13 @@ msgstr "Link do kontaktu" msgid "Contact Description" msgstr "Opis kontaktu" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Zezwolenie (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Grupa (nazwa)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Grupa powiadomień (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14140,27 +14607,27 @@ msgstr "Status superużytkownika" msgid "If no key is provided, one will be generated automatically." msgstr "Jeśli klucz nie zostanie podany, zostanie wygenerowany automatycznie." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Jest personelem" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Jest superużytkownikiem" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Można wyświetlić" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Można dodać" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Może się zmienić" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Można usunąć" @@ -14253,48 +14720,48 @@ msgstr "pozwolenie" msgid "permissions" msgstr "zezwolenia" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "preferencje użytkownika" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Klucz '{path}'jest węzłem liścia; nie można przypisać nowych kluczy" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Klucz '{path}'jest słownikiem; nie może przypisać wartości innej niż słownik" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "wygasa" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "ostatnio używane" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "przycisk" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "włączony zapis" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" "Zezwalaj na operacje tworzenia/aktualizowania/usuwania przy użyciu tego " "klucza" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "dozwolone adresy IP" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14303,11 +14770,11 @@ msgstr "" " ograniczeń. Na przykład: „10.1.1.0/24, 192.168.10.16/32, 2001: DB 8:1: " ":/64”" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "żeton" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "tokeny" @@ -14315,18 +14782,10 @@ msgstr "tokeny" msgid "group" msgstr "grupa" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "grupy" - #: netbox/users/models/users.py:92 msgid "user" msgstr "użytkownika" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "użytkownicy" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Użytkownik z tą nazwą użytkownika już istnieje." @@ -14466,7 +14925,7 @@ msgstr "" "Nieprawidłowe dane YAML. Dane muszą mieć formę wielu dokumentów lub jednego " "dokumentu zawierającego listę słowników." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14475,6 +14934,22 @@ msgstr "" "Nieprawidłowa lista ({value}). Musi być numeryczny, a zakresy muszą być w " "kolejności rosnącej." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Określ jeden lub więcej zakresów liczbowych oddzielonych przecinkami. " +"Przykład: 1-5.20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Nieprawidłowe zakresy ({value}). Musi być zakresem liczb całkowitych w " +"kolejności rosnącej." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14642,6 +15117,26 @@ msgstr "" "Brak wymaganej wartości dla parametru zapytania statycznego: " "'{static_params}”" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Hasło musi zawierać co najmniej jedną cyfrę." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Hasło musi mieć co najmniej jedną wielką literę." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Hasło musi zawierać co najmniej jedną małą literę." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Twoje hasło musi zawierać co najmniej jedną cyfrę, jedną wielką literę i " +"jedną małą literę." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14698,6 +15193,14 @@ msgstr "Dodaj szablon eksportu" msgid "Import" msgstr "Import" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Anuluj subskrypcję" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Subskrybuj" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Kopiuj do schowka" @@ -14738,15 +15241,11 @@ msgstr "Szukaj NetBox" msgid "Open selector" msgstr "Otwórz selektor" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Brak przypisanych" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Napisz" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Test musi zdefiniować csv_update_data." @@ -14755,17 +15254,17 @@ msgstr "Test musi zdefiniować csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} nie jest prawidłowym wyrażeniem regularnym." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "{self.__class__.__name__} musi zaimplementować get_required_permit ()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} musi zaimplementować get_required_permit ()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14789,7 +15288,7 @@ msgid "Cluster type (ID)" msgstr "Typ klastra (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Klaster (ID)" @@ -14807,7 +15306,7 @@ msgid "Disk (GB)" msgstr "Dysk (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Rozmiar (GB)" @@ -14827,6 +15326,10 @@ msgstr "Przypisany klaster" msgid "Assigned device within cluster" msgstr "Przypisane urządzenie w klastrze" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Numer seryjny" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14850,6 +15353,7 @@ msgid "Disk size is managed via the attachment of virtual disks." msgstr "Rozmiar dysku jest zarządzany poprzez załączenie dysków wirtualnych." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Dysk" @@ -14891,37 +15395,37 @@ msgid "memory (MB)" msgstr "pamięć (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "dysk (GB)" +msgid "disk (MB)" +msgstr "dysk (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Nazwa maszyny wirtualnej musi być unikatowa dla każdego klastra." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "maszyna wirtualna" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "maszyny wirtualne" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "Maszyna wirtualna musi być przypisana do witryny i/lub klastra." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" "Wybrany klaster ({cluster}) nie jest przypisany do tej witryny ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "Musi określić klaster podczas przypisywania urządzenia hosta." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." @@ -14929,7 +15433,7 @@ msgstr "" "Wybrane urządzenie ({device}) nie jest przypisany do tego klastra " "({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -14938,17 +15442,17 @@ msgstr "" "Określony rozmiar dysku ({size}) musi odpowiadać zagregowanemu rozmiarowi " "przypisanych dysków wirtualnych ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "Musi być IPV{family} adres. ({ip} jest IPV{version} adres.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "Podany adres IP ({ip}) nie jest przypisany do tej maszyny wirtualnej." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -14957,7 +15461,7 @@ msgstr "" "Wybrany interfejs nadrzędny ({parent}) należy do innej maszyny wirtualnej " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -14966,7 +15470,7 @@ msgstr "" "Wybrany interfejs mostu ({bridge}) należy do innej maszyny wirtualnej " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -14975,24 +15479,24 @@ msgstr "" "Nieoznaczona sieć VLAN ({untagged_vlan}) musi należeć do tej samej witryny " "co macierzysta maszyna wirtualna interfejsu lub musi być globalna." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "rozmiar (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "rozmiar (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "dysk wirtualny" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "dyski wirtualne" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Dodano {count} urządzenia do klastrowania {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Usunięto {count} urządzenia z klastra {cluster}" @@ -15106,32 +15610,32 @@ msgid "Outside IP (ID)" msgstr "Zewnętrzny adres IP (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "Polityka IKE (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "Polityka IKE (nazwa)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "Polityka IPsec (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "Polityka IPsec (nazwa)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (ślimak)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "Interfejs maszyny wirtualnej (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (nazwa)" @@ -15305,7 +15809,7 @@ msgstr "wersji" msgid "proposals" msgstr "oferty" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "klucz wstępnie udostępniony" @@ -15487,17 +15991,24 @@ msgstr "WPA Przedsiębiorstwo" msgid "Authentication cipher" msgstr "Szyfr uwierzytelniania" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Jednostka odległości" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "Zmostkowana sieć VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Interfejs A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Interfejs B" @@ -15505,39 +16016,52 @@ msgstr "Interfejs B" msgid "Side B" msgstr "Strona B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "szyfr uwierzytelniania" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "grupa sieci bezprzewodowej LAN" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "grupy sieci bezprzewodowej LAN" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "bezprzewodowa sieć LAN" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "interfejs A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "interfejs B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "odstęp" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "jednostka odległości" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "łącze bezprzewodowe" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "łącza bezprzewodowe" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "" +"Należy określić jednostkę podczas ustawiania odległości bezprzewodowej" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} nie jest interfejsem bezprzewodowym." diff --git a/netbox/translations/pt/LC_MESSAGES/django.mo b/netbox/translations/pt/LC_MESSAGES/django.mo index ed56b0c81aa..b961d51f0e8 100644 Binary files a/netbox/translations/pt/LC_MESSAGES/django.mo and b/netbox/translations/pt/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/pt/LC_MESSAGES/django.po b/netbox/translations/pt/LC_MESSAGES/django.po index df99ee978d6..62f9cb04ef2 100644 --- a/netbox/translations/pt/LC_MESSAGES/django.po +++ b/netbox/translations/pt/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Fabricio Maciel, 2024\n" "Language-Team: Portuguese (https://app.transifex.com/netbox-community/teams/178115/pt/)\n" @@ -30,16 +30,17 @@ msgstr "" msgid "Key" msgstr "Chave" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Permissão de Escrita" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -51,11 +52,11 @@ msgstr "Criado" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Expira" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Usado pela Última Vez" @@ -65,47 +66,47 @@ msgstr "Usado pela Última Vez" msgid "Allowed IPs" msgstr "IPs Permitidos" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Logado como {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Você se desconectou." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Suas preferências foram atualizadas." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "As credenciais de usuário autenticadas pelo LDAP não podem ser alteradas no " "NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Sua senha foi alterada com sucesso." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Planejado" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Provisionamento" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -114,9 +115,9 @@ msgstr "Provisionamento" msgid "Active" msgstr "Ativo" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Offline" @@ -129,98 +130,116 @@ msgstr "Em Desprovisionamento" msgid "Decommissioned" msgstr "Descomissionado" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Primário" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Secundário" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Terciário" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inativo" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Região (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Região (slug)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Grupo de sites (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Grupo de sites (slug)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -232,172 +251,197 @@ msgstr "Grupo de sites (slug)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Site" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Site (slug)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Provedor (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Provedor (slug)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Conta do provedor (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Conta do provedor (conta)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Rede do provedor (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Tipo de circuito (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Tipo de circuito (slug)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Site (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Terminação A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Busca" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Circuito" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Rede do provedor (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Circuito (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Circuito (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Grupo de circuitos (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Grupo de circuitos (slug)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASNs" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -410,16 +454,17 @@ msgstr "ASNs" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -429,8 +474,9 @@ msgstr "ASNs" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -483,26 +529,28 @@ msgstr "ASNs" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Descrição" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -514,22 +562,22 @@ msgstr "Descrição" msgid "Provider" msgstr "Provedor" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "ID do serviço" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -540,33 +588,33 @@ msgstr "ID do serviço" msgid "Color" msgstr "Cor" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -579,9 +627,9 @@ msgstr "Cor" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -597,52 +645,52 @@ msgstr "Cor" msgid "Type" msgstr "Tipo" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Conta do provedor" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -651,7 +699,7 @@ msgstr "Conta do provedor" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -659,7 +707,7 @@ msgstr "Conta do provedor" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -669,45 +717,49 @@ msgstr "Conta do provedor" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Status" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -719,7 +771,7 @@ msgstr "Status" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -742,36 +794,37 @@ msgstr "Status" msgid "Tenant" msgstr "Inquilino" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Data de ativação" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Data de desativação" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Taxa garantida (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Parâmetros do serviço" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -781,37 +834,37 @@ msgstr "Parâmetros do serviço" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Locação" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Rede do Provedor" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Velocidade da porta (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Velocidade de upstream (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Marcar como conectado" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -819,46 +872,60 @@ msgstr "Marcar como conectado" msgid "Circuit Termination" msgstr "Terminação do Circuito" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Detalhes da Terminação" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Prioridade" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Provedor designado" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Conta de provedor designada" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Tipo de circuito" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Status operacional" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -866,7 +933,7 @@ msgstr "Status operacional" msgid "Assigned tenant" msgstr "Inquilino designado" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -874,44 +941,44 @@ msgstr "Inquilino designado" msgid "Termination" msgstr "Terminação" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Rede do provedor" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -920,13 +987,13 @@ msgstr "Rede do provedor" msgid "Location" msgstr "Localização" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -935,22 +1002,22 @@ msgstr "Localização" msgid "Contacts" msgstr "Contatos" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -963,17 +1030,17 @@ msgstr "Contatos" msgid "Region" msgstr "Região" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -981,180 +1048,263 @@ msgstr "Região" msgid "Site group" msgstr "Grupo de sites" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Atributos" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Conta" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Lado da Terminação" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Atribuição" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Grupo" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Grupo de Circuitos" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "cor" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "tipo de circuito" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "tipos de circuitos" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "ID do circuito" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "ID única do circuito" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "status" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "instalado" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "encerramento" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "taxa garantida (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Taxa garantida" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "circuito" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "circuitos" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "grupo de circuitos" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "grupos de circuitos" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "prioridade" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Atribuição do grupo de circuitos" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Atribuições do grupo de circuitos" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "terminação" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "velocidade da porta (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Velocidade do circuito físico" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "velocidade de upstream (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Velocidade de upstream, se diferente da velocidade da porta" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "ID da conexão cruzada" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID da conexão cruzada local" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "patch panel/porta(s)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "ID do patch panel e número da(s) porta(s)" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "descrição" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "terminação do circuito" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "terminações dos circuitos" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Uma terminação de circuito deve ser conectada a um site ou a uma rede do " "provedor." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1163,33 +1313,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "nome" @@ -1198,11 +1349,12 @@ msgid "Full name of the provider" msgstr "Nome completo do provedor" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "slug" @@ -1238,40 +1390,45 @@ msgstr "rede do provedor" msgid "provider networks" msgstr "redes dos provedores" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1286,7 +1443,7 @@ msgstr "redes dos provedores" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1300,8 +1457,9 @@ msgstr "redes dos provedores" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1341,9 +1499,9 @@ msgstr "redes dos provedores" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1353,56 +1511,57 @@ msgstr "redes dos provedores" msgid "Name" msgstr "Nome" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Circuitos" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "ID do Circuito" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Lado A" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Lado Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Taxa Garantida" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1411,6 +1570,12 @@ msgstr "Taxa Garantida" msgid "Comments" msgstr "Comentários" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Atribuições" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Contas" @@ -1433,7 +1598,7 @@ msgstr "Nenhuma terminação foi definida para o circuito {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Terminações trocadas para o circuito {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "Este usuário não tem permissão para sincronizar esta origem de dados." @@ -1451,21 +1616,19 @@ msgid "Syncing" msgstr "Sincronizando" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Concluído" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Falhou" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1477,30 +1640,39 @@ msgstr "Scripts" msgid "Reports" msgstr "Relatórios" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "Pendente" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Agendado" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Em Execução" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Falhou" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Atualizado" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Excluído" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Concluído" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Iniciado" @@ -1517,11 +1689,13 @@ msgstr "Parado" msgid "Cancelled" msgstr "Cancelado" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Local" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1531,8 +1705,8 @@ msgstr "Nome de Usuário" msgid "Only used for cloning with HTTP(S)" msgstr "Usado apenas para clonagem com HTTP(S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Senha" @@ -1554,24 +1728,63 @@ msgstr "ID da chave de acesso da AWS" msgid "AWS secret access key" msgstr "Chave de acesso secreta da AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Objeto criado" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Objeto atualizado" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Objeto excluído" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Tarefa iniciada" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Tarefa completada" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Tarefa com falha" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Tarefa com erro" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Origem de dados (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Origem de dados (nome)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Usuário (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Nome de usuário" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1579,14 +1792,14 @@ msgstr "Origem de dados (nome)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Habilitado" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1599,11 +1812,11 @@ msgstr "Parâmetros" msgid "Ignore rules" msgstr "Ignorar regras" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1613,76 +1826,99 @@ msgstr "Ignorar regras" msgid "Data Source" msgstr "Origem de dados" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Arquivo" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Origem de dados" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Criação" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Tipo de Objeto" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Criado após" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Criado antes" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Programado após" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Programado antes" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Iniciado após" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Iniciado antes" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Concluído após" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Concluído antes" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Usuário" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Tempo" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Depois" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Antes" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Ação" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1713,21 +1949,21 @@ msgstr "" #: netbox/core/forms/model_forms.py:153 #: netbox/templates/dcim/rack_elevation_list.html:6 msgid "Rack Elevations" -msgstr "Rack Elevations" +msgstr "Elevações de Rack" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Alimentação Elétrica" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1744,7 +1980,9 @@ msgstr "Banners" msgid "Pagination" msgstr "Paginação" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Validação" @@ -1754,7 +1992,7 @@ msgstr "Validação" msgid "User Preferences" msgstr "Preferências de Usuário" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1777,10 +2015,48 @@ msgstr "Valor atual: {value}" msgid " (default)" msgstr " (padrão)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "horas" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "nome de usuário" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "ID da solicitação" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "ação" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "dados pré-alteração" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "dados pós-alteração" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "mudança no objeto" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "mudanças no objeto" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "Changelog não é suportado para este tipo de objeto ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "criado" @@ -1813,14 +2089,14 @@ msgstr "Configuração atual" msgid "Config revision #{id}" msgstr "Revisão da configuração #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1828,64 +2104,65 @@ msgstr "Revisão da configuração #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "tipo" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "ativado" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ignorar regras" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Padrões (um por linha) de correspondencia de arquivos a serem ignorados ao " "sincronizar" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "parâmetros" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "última sincronização" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "origem de dados" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "origens de dados" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Tipo de backend desconhecido: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "" "Não é possível iniciar a sincronização; a sincronização já está em " "andamento." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1893,48 +2170,48 @@ msgstr "" "Houve um erro ao inicializar o backend. Uma dependência precisa ser " "instalada: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "última atualização" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "caminho" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Caminho de arquivo relativo à raiz da origem de dados" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "tamanho" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "hash" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "O comprimento deve ser de 64 caracteres hexadecimais." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "Hash SHA256 do arquivo de dados" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "arquivo de dados" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "arquivos de dados" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "registro de sincronização automática" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "registros de sincronização automática" @@ -1958,58 +2235,94 @@ msgstr "arquivo gerenciado" msgid "managed files" msgstr "arquivos gerenciados" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "agendado" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "intervalo" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Intervalo de recorrência (em minutos)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "iniciado" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "concluído" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "dados" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "erro" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "ID da tarefa" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "tarefa" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "tarefas" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "Tarefas não podem ser atribuídas a este tipo de objeto ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "Status inválido para encerramento da tarefa. As opções são: {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"enqueue() não pode ser chamado com valores para ambos schedule_at e " +"immediate." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "A exclusão é impedida por uma regra de proteção: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Nome Completo" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objeto" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "ID da Solicitação" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Está Ativo" @@ -2024,51 +2337,63 @@ msgid "Last updated" msgstr "Última atualização" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Objeto" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Intervalo" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Versão" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Pacote" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Última Atualização" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Versão Mínima do Netbox" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Versão Máxima do Netbox" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Nenhum dado do plugin encontrado" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Autor" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "E-mail do Autor" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Instalado" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Certificado" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Nenhum plug-in encontrado" +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Publicado" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Versão Instalada" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Última Versão" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2082,7 +2407,7 @@ msgstr "Agentes" msgid "Host" msgstr "Host" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Porta" @@ -2130,62 +2455,72 @@ msgstr "PID" msgid "No workers found" msgstr "Nenhum agente encontrado" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Tarefa {id} enfileirada para sincronizar {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Revisão da configuração nº {id} restaurada" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "Tarefa {job_id} não encontrada" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Tarefa {id} foi excluída." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Erro ao excluir a tarefa {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Tarefa {id} não encontrada." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "Tarefa {id} foi reenfileirada." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Tarefa {id} foi enfileirada." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Tarefa {id} foi interrompida." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Falha ao interromper a tarefa {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Catálogo de plugins não pode ser carregado" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Plugin {name} não encontrado" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Posição (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "ID do Facility" @@ -2193,8 +2528,8 @@ msgstr "ID do Facility" msgid "Staging" msgstr "Em Preparação" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Em Descomissionamento" @@ -2253,27 +2588,39 @@ msgstr "Disponível" msgid "Deprecated" msgstr "Obsoleto" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Milímetros" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Polegadas" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Frente para trás" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Trás para frente" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2289,278 +2636,273 @@ msgstr "Polegadas" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Pai" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Filho" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Frente" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Traseira" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Preparado" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Inventário" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Frente para trás" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Trás para frente" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Esquerda para direita" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Direita para esquerda" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Lado para trás" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Passivo" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Misto" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (sem trava)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (twist-lock)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "California Standard" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "Internacional/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Proprietário" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Outros" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/Internacional" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Físico" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Virtual" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Wireless" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Interfaces virtuais" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Bridge" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Link Aggregation (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (fixa)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modular)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (backplane)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Celular" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Serial" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Coaxial" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Empilhamento" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Half" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Full" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Automático" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Acesso" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Tagueada" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Tagueada (Todos)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "Padrão IEEE" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "24V passivo (2 pares)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "24V passivo (4 pares)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "48V passivo (2 pares)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "48V passivo (4 pares)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Cabo Metálico" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Fibra Óptica" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Fibra" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Conectado" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Quilômetros" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Metros" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Centímetros" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Milhas" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Pés" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Quilogramas" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Gramas" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Libras" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Onças" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Primário" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Redundante" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Monofásico" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Trifásico" @@ -2574,330 +2916,335 @@ msgstr "Formato de endereço MAC inválido: {value}" msgid "Invalid WWN format: {value}" msgstr "Formato WWN inválido: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Região principal (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Região principal (slug)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Grupo de sites principais (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Grupo de sites principais (slug)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Grupo (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Grupo (slug)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "AS (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Localização principal (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Localização principal (slug)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Localização (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Localização (slug)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Fabricante (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Fabricante (slug)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Tipo de rack (slug)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Tipo de rack (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Função (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Função (slug)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Rack (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Usuário (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Usuário (nome)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Fabricante (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Fabricante (slug)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Plataforma padrão (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Plataforma padrão (slug)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Possui imagem frontal" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Possui imagem traseira" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Possui portas de console" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Possui portas de servidor de console" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Possui portas de alimentação" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Possui tomadas elétricas" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Possui interfaces" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Possui portas passthrough" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Possui compartimentos de módulos" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Possui compartimentos de dispositivos" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Possui itens de inventário" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Tipo de dispositivo (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Tipo de módulo (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Porta de alimentação (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Item principal do inventário (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Modelo de configuração (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Tipo de dispositivo (slug)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Dispositivo Pai (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Plataforma (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Plataforma (slug)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Nome do site (slug)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Compartimento Pai (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "Cluster de VMs (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Grupo de clusters (slug)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Grupo de clusters (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Modelo do dispositivo (slug)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "É full-depth" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "Endereço MAC" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Possui IP primário" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Possui IP fora de banda" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Chassi virtual (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "É membro do chassi virtual" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "IP Fora de Banda (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Possui contexto de dispositivo virtual" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "Contexto de Dispositivo Virtual (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Modelo de dispositivo" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Interface (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Tipo de módulo (modelo)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Compartimento do Módulo (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Compartimento de módulo (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Dispositivo (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Rack (nome)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Dispositivo (nome)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Tipo de dispositivo (modelo)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Função do dispositivo (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Função do dispositivo (slug)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Chassi Virtual (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2906,33 +3253,33 @@ msgstr "Chassi Virtual (ID)" msgid "Virtual Chassis" msgstr "Chassi Virtual" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Módulo (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Cabo (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "VLAN Designada" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "VLAN ID Designada " -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2949,121 +3296,125 @@ msgstr "VLAN ID Designada " #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Interfaces de Chassi Virtual para Dispositivo" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Interfaces de Chassi Virtual para Dispositivo (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Tipo de interface" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Interface pai (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Interface bridged (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "Interface LAG (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Contexto de Dispositivo Virtual" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Contexto de Dispositivo Virtual (ID)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Rede Wireless" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Link Wireless" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Compartimento de módulo pai (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Módulo instalado (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Dispositivo instalado (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Dispositivo instalado (nome)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Mestre (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Mestre (nome)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Inquilino (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Inquilino (slug)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Não terminado" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Quadro de alimentação (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3071,13 +3422,13 @@ msgstr "Quadro de alimentação (ID)" msgid "Tags" msgstr "Etiquetas" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3091,168 +3442,114 @@ msgstr "" "Intervalos alfanuméricos são suportados. (Devem corresponder ao número de " "nomes que estão sendo criados.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Grupo" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Contato" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Telefone de Contato" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "E-mail de Contato" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Fuso horário" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Função" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Número de Série" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Etiqueta de patrimônio" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Fabricante" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Formato físico" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Largura" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Altura (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Unidades descendentes" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Largura externa" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Profundidade externa" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Unidade externa" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Profundidade de montagem" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3260,31 +3557,127 @@ msgstr "Profundidade de montagem" msgid "Weight" msgstr "Peso" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Peso máximo" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Unidade de peso" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Tipo de Rack" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Dimensões externas" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Dimensões" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Numeração" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Função" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Número de Série" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Etiqueta de patrimônio" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Fluxo de Ar" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3294,158 +3687,132 @@ msgstr "Unidade de peso" msgid "Rack" msgstr "Rack" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Hardware" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Fabricante" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Plataforma padrão" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Part number" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Altura em U" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Excluir da utilização" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Fluxo de Ar" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Tipo de Dispositivo" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Tipo de Módulo" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Chassi" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "Função da VM" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Modelo de configuração" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Tipo de dispositivo" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Função do dispositivo" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Plataforma" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3456,7 +3823,7 @@ msgstr "Plataforma" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3464,7 +3831,7 @@ msgstr "Plataforma" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3472,7 +3839,7 @@ msgstr "Plataforma" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3482,23 +3849,23 @@ msgstr "Plataforma" msgid "Device" msgstr "Dispositivo" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Configuração" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Tipo de módulo" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3507,7 +3874,7 @@ msgstr "Tipo de módulo" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3516,141 +3883,142 @@ msgstr "Tipo de módulo" msgid "Label" msgstr "Rótulo" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Comprimento" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Unidade de comprimento" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Domínio" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Quadro de alimentação" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Tipo de Alimentação" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Fase" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Tensão" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Corrente" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Utilização máxima" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Consumo máximo" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Consumo máximo de energia (Watts)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Consumo alocado" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Consumo de energia alocado (Watts)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Porta de alimentação" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Ramal de alimentação" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Somente gerenciamento" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "Modo de Operação" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "Tipo de PoE" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Função do Wireless" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Módulo" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Contextos de dispositivos virtuais" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Velocidade" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3664,292 +4032,297 @@ msgstr "Velocidade" msgid "Mode" msgstr "Modo" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Grupo de VLANs" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN Não Tagueada" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLANs Tagueadas" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Grupo da Rede Wireless" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Redes Wireless" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Endereçamento" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Operação" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Interfaces Relacionadas" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "Comutação 802.1Q" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "O modo de interface deve ser especificado para atribuir VLANs" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "Uma interface de acesso não pode ter VLANs tagueadas." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Nome da região principal" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Nome do grupo de sites principais" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Região designada" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Grupo designado" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "opções disponíveis" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Site designado" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Localização principal" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Localização não encontrada." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Nome do inquilino designado" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Nome da função designada" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Fabricante deste tipo de rack" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Tipo de rack" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "A numeração de posição mais baixa no rack" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Largura de trilho a trilho (em polegadas)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Unidade para dimensões externas" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Unidade de peso do rack" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Nome do inquilino designado" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Nome da função designada" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Direção do fluxo de ar" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Site principal" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Localização do rack (se houver)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Unidades" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Lista separada por vírgula de unidades individuais" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Fabricante que produz este tipo de dispositivo" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "A plataforma padrão para dispositivos deste tipo (opcional)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Peso do dispositivo" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Unidade de peso do dispositivo" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Peso do módulo" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Unidade de peso do módulo" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Limitar as atribuições de plataforma a este fabricante" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Função designada" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Fabricante do tipo de dispositivo" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Modelo do tipo de dispositivo" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Plataforma designada" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Chassi virtual" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Cluster" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Cluster de virtualização" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Local designado (se houver)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Rack designado (se houver)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Face" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Face do rack em que está montado" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Dispositivo pai (para dispositivos filhos)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Compartimento de dispositivos" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Compartimento de dispositivos no qual este dispositivo está instalado (para " "dispositivos filhos)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Direção do fluxo de ar" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "O dispositivo no qual este módulo está instalado" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Compartimento de módulo" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "O compartimento no qual este módulo está instalado" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "O tipo de módulo" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Replicar componentes" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3957,240 +4330,240 @@ msgstr "" "Popular automaticamente os componentes associados a este tipo de módulo " "(ativado por padrão)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Adotar componentes" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Adotar componentes já existentes" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Tipo de porta" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Velocidade da porta em bps" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Tipo de tomada" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Porta de alimentação local que alimenta esta tomada" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Fase (para circuitos trifásicos)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Interface pai" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Interface bridged" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "LAG" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Interface LAG pai" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Contextos de Dispositivos Virtuais" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "Nomes de contextos de dispositivos virtuais separados por vírgulas, entre " "aspas duplas. Exemplo:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Meio físico" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Duplex" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Modo de operação do PoE" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Tipo de PoE" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "Modo de operação do IEEE 802.1Q (para interfaces L2)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "VRF designado" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Função RF" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Função do Wireless (AP/Station)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "" "Contexto de dispositivo virtual {vdc} não está associado ao dispositivo " "{device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Porta traseira" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Porta traseira correspondente" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Tipo de conexão do meio físico" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Dispositivo instalado" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Dispositivo filho instalado neste compartimento" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Dispositivo filho não encontrado." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Item pai do inventário" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Tipo de componente" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Tipo de Componente" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Nome do componente" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Nome do Componente" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Componente não encontrado: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Dispositivo no lado A" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Nome do dispositivo" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Tipo de terminação no lado A" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Tipo de terminação" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Nome da terminação no lado A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Nome da terminação" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Dispositivo no lado B" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Tipo de terminação no lado B" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Nome da terminação no lado B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Status da conexão" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Lado {side_upper}: {device} {termination_object} já está conectado" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr " Terminação {side_upper} não encontrada: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Mestre" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Dispositivo mestre" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Nome do site principal" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Quadro de alimentação" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Primário ou redundante" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Tipo de alimentação (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Monofásico ou trifásico" @@ -4210,7 +4583,7 @@ msgstr "" "As VLANs tagueadas ({vlans}) devem pertencer ao mesmo site do dispositivo/VM" " pai da interface ou devem ser globais." -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4218,17 +4591,27 @@ msgstr "" "Não é possível instalar o módulo com valores de espaço reservado em um " "compartimento de módulo sem a sua posição definida." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Não é possível instalar o módulo com valores de espaço reservado no " +"compartimento de módulos {level} na árvore, pois foram fornecidos {tokens} " +"espaços reservados" + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "Não é possível adotar {model} {name} pois já pertence a outro módulo." -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "Um {model} com nome {name} já existe." -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4237,7 +4620,7 @@ msgstr "Um {model} com nome {name} já existe." msgid "Power Panel" msgstr "Quadro de Alimentação" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4247,15 +4630,15 @@ msgstr "Fontes de Alimentação" msgid "Side" msgstr "Lado" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Status do Dispositivo" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Região principal" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4263,62 +4646,67 @@ msgstr "Região principal" msgid "Parent group" msgstr "Grupo principal" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Facility" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Tipo de rack" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Função" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Imagens" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Componentes" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Função do subdispositivo" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Modelo" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Possui um IP fora de banda" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Membro do chassi virtual" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Possui contextos de dispositivos virtuais" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Grupo de clusters" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Cabeado" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Ocupado" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4330,43 +4718,43 @@ msgstr "Ocupado" msgid "Connection" msgstr "Conexão" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Tipo" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Somente gerenciamento" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Canal do Wireless" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Frequência do canal (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Largura do canal (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Potência de transmissão (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4376,7 +4764,7 @@ msgstr "Potência de transmissão (dBm)" msgid "Cable" msgstr "Cabo" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Descoberto" @@ -4385,28 +4773,30 @@ msgstr "Descoberto" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Já existe um membro no chassi virtual na posição {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Informações de Contato" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Função do Rack" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Controle de Inventário" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Slug" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Dimensões externas" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Selecione um tipo pré-definido de rack, ou ajuste as características abaixo." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Dimensões" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Controle de Inventário" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4414,93 +4804,70 @@ msgstr "" "Lista separada por vírgulas de números de IDs. Um intervalo pode ser " "especificado usando hífen." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Reserva" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Slug" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Chassi" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Função do Dispositivo" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "A unidade mais baixa ocupada pelo dispositivo" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "A posição no chassi virtual pela qual este dispositivo é identificado" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Prioridade" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "A prioridade do dispositivo no chassi virtual" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "" "Popular automaticamente os componentes associados a este tipo de módulo" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "O comprimento máximo é de 32767 (qualquer unidade)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Características" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Modelo da porta de console" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Modelo da porta do servidor de console" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Modelo da porta frontal" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Modelo da interface" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Modelo da tomada elétrica" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Modelo da porta de alimentação" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Modelo da porta traseira" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4511,7 +4878,7 @@ msgstr "Modelo da porta traseira" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4520,7 +4887,7 @@ msgstr "Modelo da porta traseira" msgid "Interface" msgstr "Interface" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4528,14 +4895,14 @@ msgstr "Interface" msgid "Console Port" msgstr "Porta de Console" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Porta do Servidor de Console" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4546,8 +4913,8 @@ msgstr "Porta do Servidor de Console" msgid "Front Port" msgstr "Porta Frontal" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4559,36 +4926,36 @@ msgstr "Porta Frontal" msgid "Rear Port" msgstr "Porta Traseira" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Porta de Alimentação" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Tomada Elétrica" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Atribuição de Componentes" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "Um item de inventário só pode ser associado a um único componente." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "Interface LAG" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Dispositivo Filho" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4596,41 +4963,41 @@ msgstr "" "Os dispositivos filhos devem primeiro ser criados e atribuídos ao site e ao " "rack do dispositivo pai." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Porta de console" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Porta do servidor de console" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Porta frontal" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Tomada elétrica" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Item de Inventário" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Função do Item de Inventário" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "IPv4 Primário" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "IPv6 Primário" @@ -4694,7 +5061,7 @@ msgstr "" "corresponder ao número selecionado de posições de portas traseiras " "({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4721,7 +5088,7 @@ msgstr "" #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "rótulo" @@ -4852,138 +5219,138 @@ msgstr "" "Um modelo de componente deve estar associado a um tipo de dispositivo ou a " "um tipo de módulo." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "modelo de porta de console" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "modelos de porta de console" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "modelo de porta de servidor de console" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "modelos de porta de servidor de console" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "consumo máximo" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "consumo alocado" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "modelo de porta de alimentação" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "modelos de porta de alimentação" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" "O consumo alocado não pode exceder o consumo máximo ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "ramal de alimentação" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Fase (para alimentação trifásica)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "modelo de tomada elétrica" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "modelos de tomadas elétricas" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Porta de alimentação principal ({power_port}) deve pertencer ao mesmo tipo " "de dispositivo" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Porta de alimentação principal ({power_port}) deve pertencer ao mesmo tipo " "de módulo" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "somente gerenciamento" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "interface bridge" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "função do wireless" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "modelo de interface" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "modelos de interface" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Uma interface não pode ser conectada a si mesma." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Interface bridge ({bridge}) deve pertencer ao mesmo tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Interface bridge ({bridge}) deve pertencer ao mesmo tipo de módulo" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "posição da porta traseira" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "modelo de porta frontal" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "modelos de porta frontal" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Porta traseira ({name}) deve pertencer ao mesmo tipo de dispositivo" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4992,46 +5359,46 @@ msgstr "" "Posição inválida da porta traseira ({position}); porta traseira {name} tem " "apenas {count} posições" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "posições" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "modelo de porta traseira" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "modelos de porta traseira" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "posição" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "Identificador a ser referenciado ao renomear componentes instalados" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "modelo de compartimento de módulo" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "modelos de compartimento de módulos" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "modelo de compartimento de dispositivos" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "modelos de compartimentos de dispositivos" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5040,21 +5407,21 @@ msgstr "" "Função do subdispositivo do tipo {device_type} deve ser definido como “pai” " "para permitir compartimentos de dispositivos." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "ID da peça" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Identificador da peça, designado pelo fabricante" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "modelo de item de inventário" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "modelos de itens de inventário" @@ -5197,27 +5564,27 @@ msgstr "Preenchido pelo canal selecionado (se definido)" msgid "transmit power (dBm)" msgstr "potência de transmissão (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "redes wireless" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "VLAN não tagueada" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "VLANs tagueadas" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "interface" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "interfaces" @@ -5232,7 +5599,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr " As interfaces {display_type}não podem ser marcadas como conectadas." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Uma interface não pode ser pai de si mesma." @@ -5398,34 +5765,41 @@ msgstr "" "O número de posições não pode ser menor que o número de portas frontais " "mapeadas ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "compartimento de módulos" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "compartimentos de módulos" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "" +"Um compartimento de módulo não pode pertencer a um módulo instalado dentro " +"dele." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "compartimento de dispositivos" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "compartimentos de dispositivos" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" "Este tipo de dispositivo ({device_type}) não suporta compartimentos de " "dispositivos." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Não é possível instalar um dispositivo em si mesmo." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5433,60 +5807,61 @@ msgstr "" "Não é possível instalar o dispositivo especificado; o dispositivo já está " "instalado em {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "função do item de inventário" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "funções dos itens de inventário" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "número de série" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "etiqueta de patrimônio" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Uma etiqueta exclusiva usada para identificar este item" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "descoberto" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Este item foi descoberto automaticamente" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "item de inventário" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "itens de inventário" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Não é possível designar a si mesmo como pai." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "O item pai do inventário não pertence ao mesmo dispositivo." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "" "Não é possível mover um item de inventário com itens filhos dependentes" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "" "Não é possível atribuir um item de inventário ao componente em outro " @@ -5501,6 +5876,7 @@ msgid "manufacturers" msgstr "fabricantes" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "modelo" @@ -5516,7 +5892,7 @@ msgstr "part number" msgid "Discrete part number (optional)" msgstr "Part number discreto (opcional)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "altura (U)" @@ -5550,7 +5926,8 @@ msgstr "" "dispositivos. Deixe em branco se este tipo de dispositivo não for nem pai " "nem filho." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "fluxo de ar" @@ -5598,147 +5975,147 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Dispositivo filho deve ser 0U." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "tipo de módulo" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "tipos de módulos" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Máquinas virtuais podem ser atribuídas a esta função" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "função de dispositivo" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "funções de dispositivos" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Opcionalmente, limite esta plataforma a dispositivos de um determinado " "fabricante" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "plataforma" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "plataformas" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "A função que este dispositivo desempenha" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Número de série do chassi, designado pelo fabricante" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Uma etiqueta exclusiva usada para identificar este dispositivo" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "posição (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "face do rack" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "IPv4 primário" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "IPv6 primário" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "IP fora de banda" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "Posição no Chassi Virtual" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Posição no chassi virtual" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "Prioridade no Chassi Virtual" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Prioridade de eleição do mestre no chassi virtual" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "latitude" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Coordenada GPS em formato decimal (xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "longitude" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "O nome do dispositivo deve ser exclusivo por site." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "dispositivo" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "dispositivos" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Rack {rack} não pertence ao site {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Localização {location} não pertence ao site {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Rack {rack} não pertence à localização {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "Não é possível selecionar uma face de rack sem atribuir um rack." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "Não é possível selecionar uma posição de rack sem atribuir um rack." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "A posição deve estar em incrementos de 0,5U." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "Deve especificar a face do rack ao definir a posição do rack." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -5746,7 +6123,7 @@ msgstr "" "Um tipo de dispositivo 0U ({device_type}) não pode ser alocado em uma " "posição de rack." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5754,7 +6131,7 @@ msgstr "" "Dispositivo filho não pode ser alocado em uma face do rack. Este é um " "atributo do dispositivo pai." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5762,7 +6139,7 @@ msgstr "" "Dispositivo filho não pode ser alocado em uma posição de rack. Este é um " "atributo do dispositivo pai." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5771,23 +6148,23 @@ msgstr "" "U{position} já está ocupado ou não tem espaço suficiente para acomodar este " "tipo de dispositivo: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} não é um endereço IPv4." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "" "O endereço IP especificado ({ip}) não está alocado a este dispositivo." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} não é um endereço IPv6." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5797,25 +6174,25 @@ msgstr "" "{platform_manufacturer}, mas este pertence ao fabricante " "{devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "O cluster definido pertence a um site diferente ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Um dispositivo associado a um chassi virtual deve ter sua posição definida." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "módulo" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "módulos" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5824,22 +6201,22 @@ msgstr "" "O módulo deve ser instalado dentro de um compartimento pertencente ao " "dispositivo ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "domínio" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "chassi virtual" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "" "O mestre selecionado ({master}) não está associado a este chassi virtual." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5848,41 +6225,41 @@ msgstr "" "Não foi possível excluir o chassi virtual {self}. Existem interfaces membro " "que formam interfaces LAG entre chassis." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "identificador" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Identificador numérico exclusivo para o dispositivo principal" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "comentários" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "contexto de dispositivo virtual" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "contextos de dispositivos virtuais" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} não é um endereço IPv{family}." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "O endereço IP primário deve pertencer a uma interface no dispositivo " "associado." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "peso" @@ -5959,94 +6336,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "A tensão não pode ser negativa para alimentação do tipo CA" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "função do rack" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "funções de rack" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "ID do facility" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Identificador atribuído localmente" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Papel funcional" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Uma etiqueta exclusiva usada para identificar este rack" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "largura" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Largura de trilho a trilho" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Altura em U" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "unidade inicial" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Unidade inicial do rack" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "unidades descendentes" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "As unidades são numeradas de cima para baixo" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "largura externa" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Dimensão externa do rack (largura)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "profundidade externa" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Dimensão externa do rack (profundidade)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "unidade externa" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "peso máximo" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Capacidade máxima de carga do rack" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "profundidade de montagem" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6055,29 +6397,76 @@ msgstr "" "abertos de 4 colunas, esta é a distância entre os trilhos dianteiro e " "traseiro." -#: netbox/dcim/models/racks.py:221 -msgid "rack" -msgstr "rack" +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "peso máximo" -#: netbox/dcim/models/racks.py:222 -msgid "racks" -msgstr "racks" +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Capacidade máxima de carga do rack" -#: netbox/dcim/models/racks.py:237 -#, python-brace-format -msgid "Assigned location must belong to parent site ({site})." -msgstr "A localização definida deve pertencer ao site principal ({site})." +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "formato físico" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "tipo de rack" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "tipos de rack" -#: netbox/dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" "Deve especificar uma unidade ao definir a largura/profundidade externa" -#: netbox/dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "Deve especificar uma unidade ao definir um peso máximo" -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "função do rack" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "funções de rack" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "ID do facility" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Identificador atribuído localmente" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Papel funcional" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Uma etiqueta exclusiva usada para identificar este rack" + +#: netbox/dcim/models/racks.py:359 +msgid "rack" +msgstr "rack" + +#: netbox/dcim/models/racks.py:360 +msgid "racks" +msgstr "racks" + +#: netbox/dcim/models/racks.py:375 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "A localização definida deve pertencer ao site principal ({site})." + +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6086,7 +6475,7 @@ msgstr "" "O rack deve ter pelo menos {min_height}U de altura para abrigar os " "dispositivos instalados." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6095,29 +6484,29 @@ msgstr "" "A numeração do rack deve começar em {position} ou menos para abrigar " "dispositivos atualmente instalados." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "A localização deve ser do mesmo site, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "unidades" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "reserva em rack" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "reservas em rack" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Unidade(s) inválida(s) para rack {height}U: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "As seguintes unidades já foram reservadas: {unit_list}" @@ -6220,11 +6609,11 @@ msgstr "Terminação A" msgid "Termination B" msgstr "Terminação B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Dispositivo A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Dispositivo B" @@ -6259,13 +6648,13 @@ msgid "Reachable" msgstr "Acessível" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Dispositivos" @@ -6275,17 +6664,17 @@ msgid "VMs" msgstr "VMs" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Modelo de Configuração" @@ -6293,22 +6682,22 @@ msgstr "Modelo de Configuração" msgid "Site Group" msgstr "Grupo de Sites" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "Endereço IP" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "Endereço IPv4" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "Endereço IPv6" @@ -6345,10 +6734,10 @@ msgstr "Portas de alimentação" msgid "Power outlets" msgstr "Tomadas elétricas" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6358,8 +6747,8 @@ msgstr "Tomadas elétricas" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Interfaces" @@ -6385,8 +6774,8 @@ msgid "Module Bay" msgstr "Compartimento de módulo" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6395,30 +6784,30 @@ msgstr "Compartimento de módulo" msgid "Inventory Items" msgstr "Itens de Inventário" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Cor do Cabo" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Pares Vinculados" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Marcar Conectado" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Consumo máximo (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Consumo alocado (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6427,12 +6816,12 @@ msgstr "Consumo alocado (W)" msgid "IP Addresses" msgstr "Endereços IP" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Grupos FHRP" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6443,52 +6832,52 @@ msgstr "Grupos FHRP" msgid "Tunnel" msgstr "Túnel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Somente Gerenciamento" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "Contextos de Dispositivos Virtuais" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Módulo Instalado" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Serial do Módulo" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Etiqueta de Patrimônio do Módulo" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Status do Módulo" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Componente" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Itens" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Tipos de Dispositivos" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Tipos de Módulos" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Plataformas" @@ -6507,12 +6896,13 @@ msgid "U Height" msgstr "Altura em U" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Instâncias" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6521,9 +6911,9 @@ msgstr "Instâncias" msgid "Console Ports" msgstr "Portas de Console" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6532,9 +6922,9 @@ msgstr "Portas de Console" msgid "Console Server Ports" msgstr "Portas de Servidor de Console" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6543,9 +6933,9 @@ msgstr "Portas de Servidor de Console" msgid "Power Ports" msgstr "Portas de Alimentação" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6554,9 +6944,9 @@ msgstr "Portas de Alimentação" msgid "Power Outlets" msgstr "Tomadas Elétricas" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6564,9 +6954,9 @@ msgstr "Tomadas Elétricas" msgid "Front Ports" msgstr "Portas Frontais" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6575,23 +6965,26 @@ msgstr "Portas Frontais" msgid "Rear Ports" msgstr "Portas Traseiras" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Compartimentos de Dispositivos" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Compartimentos de Módulos" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Fontes de Alimentação" @@ -6604,41 +6997,45 @@ msgstr "Utilização Máxima" msgid "Available Power (VA)" msgstr "Potência Disponível (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Racks" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Altura" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Espaço" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Largura Externa" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Profundidade Externa" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Peso Máximo" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Espaço" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Sites" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "O caso de teste deve definir peer_termination_type" @@ -6647,78 +7044,78 @@ msgstr "O caso de teste deve definir peer_termination_type" msgid "Disconnected {count} {type}" msgstr "Desconectado {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Reservas" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Dispositivos Não Montados em Rack" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Contexto de Configuração" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Renderização de Configuração" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Ocorreu um erro ao renderizar o modelo: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Máquinas Virtuais" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Dispositivo instalado {device} no compartimento {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Dispositivo {device} removido do compartimento {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Filhos" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Membro {device} adicionado" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "" "Não é possível remover o dispositivo principal {device} do chassi virtual." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Removido {device} do chassi virtual {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Objeto(s) relacionado(s) desconhecido(s): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "Alteração do tipo do campo customizado não é suportado." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "O agendamento não está habilitado para este script." @@ -6767,7 +7164,7 @@ msgid "Multiple objects" msgstr "Múltiplos objetos" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Desativado" @@ -6802,7 +7199,7 @@ msgstr "Não" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Link" @@ -6822,65 +7219,56 @@ msgstr "Ordem Alfabética (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Ordem Alfabética (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Atualizado" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Excluído" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Informações" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Sucesso" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Aviso" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Perigo" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Debug" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Padrão" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Falha" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "A cada hora" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 horas" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Diariamente" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Semanalmente" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 dias" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6888,18 +7276,16 @@ msgstr "30 dias" msgid "Create" msgstr "Criar" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Atualizar" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6910,81 +7296,85 @@ msgstr "Atualizar" msgid "Delete" msgstr "Excluir" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Azul" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Índigo" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Roxo" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Rosa" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Vermelho" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "Laranja" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Amarelo" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Verde" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Azul petróleo" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Ciano" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Cinza" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Preto" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Branco" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Script" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Notificação" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7060,62 +7450,62 @@ msgstr "" "Formato inválido. Os filtros de objetos devem ser passados como um " "dicionário." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Lista de Objetos" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Exibe uma lista arbitrária de objetos." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "O número padrão de objetos a serem exibidos" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" "Formato inválido. Os parâmetros de URL devem ser passados como um " "dicionário." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "Feed RSS" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Incorpore um feed RSS de um site externo." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "URL do feed" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "O número máximo de objetos a serem exibidos" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "" "Por quanto tempo o conteúdo em cache deve ser armazenado (em segundos)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Favoritos" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Exibe seus favoritos pessoais" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Tipo de ação desconhecido para uma regra de evento: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Não é possível importar o pipeline de eventos {name}: {error}" @@ -7124,210 +7514,219 @@ msgstr "Não é possível importar o pipeline de eventos {name}: {error}" msgid "Script module (ID)" msgstr "Módulo script (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Arquivo de dados (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Grupo (nome)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Tipo de cluster" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Tipo de cluster (slug)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Grupo de inquilinos" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Grupo de inquilinos (slug)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Etiqueta" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Etiqueta (slug)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Possui dados de contexto de configuração local" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Nome de usuário" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Nome do grupo" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Obrigatório" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Deve ser único" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "UI visível" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "UI editável" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "É clonável" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Valor mínimo" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Valor máximo" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Expressão regular de validação" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Comportamento" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Nova janela" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Classe de botão" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "Tipo MIME" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Extensão de arquivo" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Como anexo" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Compartilhado" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "Método HTTP" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "URL do payload" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "Verificação SSL" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Senha" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "Caminho do arquivo CA" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Ao criar" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Tipos de evento" -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "Ao atualizar" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Ao excluir" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "Ao iniciar tarefa" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "Ao finalizar tarefa" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Está ativo" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Tipos de objetos" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Um ou mais tipos de objetos associados" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Tipo de campo de dados (por exemplo, texto, número inteiro etc.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Tipo de objeto" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Tipo de objeto (para campos de objeto ou de multiobjetos)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Conjunto de opções" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Conjunto de opções (para campos de seleção)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Se o campo personalizado é exibido na interface do usuário" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Se o campo personalizado é editável na interface do usuário" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "O conjunto básico de opções predefinidas a serem usadas (se houver)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7336,206 +7735,201 @@ msgstr "" "com rótulos opcionais separados por dois pontos: “Choice1:First Choice, " "Choice2:Second Choice”" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "classe de botão" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "A classe do primeiro link em um grupo será usada para o botão suspenso" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "O(s) tipo(s) de evento que acionará(ão) esta regra." + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Objeto de ação" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Nome do webhook ou script como caminho pontilhado module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Webhook {name} não encontrado" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Script {name} não encontrado" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Tipo de objeto associado" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "A classificação da entrada" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Usuários" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "Nomes de usuários separados por vírgulas, envoltos por aspas duplas." + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Grupos" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Nomes de grupo separados por vírgulas, envoltos por aspas duplas." + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Tipo de objeto relacionado" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Tipo de campo" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Escolhas" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Dados" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Arquivo de dados" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Tipos de conteúdo" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "Tipo de conteúdo HTTP" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Eventos" - -#: netbox/extras/forms/filtersets.py:265 -msgid "Action type" -msgstr "Tipo de ação" - -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Criação de objetos" - #: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Atualização de objetos" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Exclusão de objetos" +msgid "Event type" +msgstr "Tipo de evento" -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Início de tarefas" +#: netbox/extras/forms/filtersets.py:291 +msgid "Action type" +msgstr "Tipo de ação" #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Encerramento de tarefas" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Tipo de objeto etiquetado" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Tipo de objeto permitido" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Regiões" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Grupos de sites" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Localizações" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Tipos de dispositivos" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Funções" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Tipos de cluster" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Grupos de clusters" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Clusters" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Grupos de inquilinos" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Depois" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Antes" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Tempo" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "O(s) tipo(s) de objeto que possuem este campo customizado." -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Ação" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Valor padrão" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "" "Tipo do objeto relacionado (somente para campos de objeto/vários objetos)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Filtro de objeto relacionado" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Especifique os parâmetros da consulta como um objeto JSON." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Campo personalizado" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Comportamento" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Valores" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7543,7 +7937,7 @@ msgstr "" "O tipo de dados armazenados neste campo. Para campos de objeto/multiobjeto, " "selecione o tipo de objeto relacionado abaixo." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7551,7 +7945,11 @@ msgstr "" "Isso será exibido como texto de ajuda para o campo do formulário. Markdown é" " suportado." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Objeto Relacionado" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7559,16 +7957,16 @@ msgstr "" "Insira uma opção por linha. Um rótulo opcional pode ser especificado para " "cada opção anexando-o com dois pontos. Exemplo:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Link Personalizado" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Modelos" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7577,7 +7975,7 @@ msgstr "" "Modelo de código Jinja2 para o texto do link. Faça referência ao objeto como" " {example}. Links renderizados como texto vazio não serão exibidos." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." @@ -7585,56 +7983,61 @@ msgstr "" "Modelo de código Jinja2 para a URL do link. Faça referência ao objeto como " "{example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Modelo de código" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Modelo de Exportação" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Renderizando" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "O conteúdo do modelo é preenchido a partir da fonte remota selecionada " "abaixo." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Deve especificar o conteúdo local ou um arquivo de dados" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Filtro Salvo" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "" +"Um grupo de notificações deve especificar pelo menos um usuário ou grupo." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "Solicitação HTTP" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Escolha da ação" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Insira as condições em formato JSON." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7642,55 +8045,33 @@ msgstr "" "Insira os parâmetros a serem passados para a ação em formato JSON." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Regra de Evento" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Condições" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Criações" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Atualizações" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Triggers" -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Exclusões" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Grupo de notificação" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Execução de tarefas" - -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Inquilinos" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Atribuição" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "Os dados são preenchidos a partir da fonte remota selecionada abaixo." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Deve especificar dados locais ou um arquivo de dados" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Conteúdo" @@ -7736,47 +8117,25 @@ msgstr "Programe a execução do script para um horário definido" msgid "Interval at which this script is re-run (in minutes)" msgstr "Intervalo no qual este script é executado novamente (em minutos)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Nenhum indexador encontrado!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "horas" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "nome de usuário" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "ID da solicitação" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "ação" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "dados pré-alteração" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "As alterações no banco de dados foram revertidas automaticamente." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "dados pós-alteração" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Script abortado com erro: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "mudança no objeto" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Ocorreu uma exceção: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "mudanças no objeto" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "As alterações do banco de dados foram revertidas devido a um erro." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "Changelog não é suportado para este tipo de objeto ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Nenhum indexador encontrado!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7828,34 +8187,34 @@ msgstr "modelo de configuração" msgid "config templates" msgstr "modelos de configuração" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Objetos aos quais este campo se aplica." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "O tipo de dados que este campo personalizado contém" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "O tipo de objeto do NetBox para o qual este campo é mapeado (para campos de " "objeto)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Nome interno do campo" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Somente caracteres alfanuméricos e sublinhados são permitidos." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "Sublinhados duplos não são permitidos em nomes de campos personalizados." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7863,31 +8222,39 @@ msgstr "" "Nome do campo exibido aos usuários (se não for fornecido, o nome do campo " "será usado)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "nome do grupo" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Os campos personalizados dentro do mesmo grupo serão exibidos juntos" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "requeridos" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Se verdadeiro, este campo é obrigatório ao criar novos objetos ou editar um " -"objeto existente." +"Este campo é necessário ao criar novos objetos ou editar um objeto " +"existente." -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "deve ser único" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "O valor deste campo deve ser único para o objeto atribuído" + +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "peso da pesquisa" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7895,11 +8262,11 @@ msgstr "" "Peso durante uma pesquisa. Valores mais baixos são considerados mais " "importantes. Campos com peso de pesquisa zero serão ignorados." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "lógica do filtro" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7907,11 +8274,11 @@ msgstr "" "Flexível corresponde a qualquer instância de uma determinada string; exata " "corresponde a todo o campo." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "padrão" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7919,35 +8286,44 @@ msgstr "" "Valor padrão para o campo (deve ser um valor JSON). Encapsule strings usando" " aspas duplas (por exemplo, “Foo”)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Filtre as opções de seleção de objeto usando um dicionário query_params " +"(deve ser um valor JSON). Encapsule strings com aspas duplas (por exemplo, " +"'Foo')." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "peso de exibição" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "Os campos com pesos maiores aparecem mais abaixo em um formulário." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "valor mínimo" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Valor mínimo permitido (para campos numéricos)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "valor máximo" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Valor máximo permitido (para campos numéricos)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "expressão regular de validação" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7958,276 +8334,248 @@ msgstr "" "forçar a correspondência de toda a string. Por exemplo, ^ " "[A-Z]{3}$ limitará os valores a exatamente três letras maiúsculas." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "conjunto de opções" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "Especifica se o campo personalizado é exibido na interface do usuário" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Especifica se o valor do campo personalizado pode ser editado na interface " "do usuário" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "é clonável" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Replique este valor ao clonar objetos" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "campo personalizado" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "campos personalizados" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Valor padrão inválido”{value}“: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "Um valor mínimo pode ser definido somente para campos numéricos" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "Um valor máximo pode ser definido somente para campos numéricos" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Expressões regulares são suportadas somente para campos de texto e URLs" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "A unicidade não pode ser aplicada para campos booleanos." + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Os campos de seleção devem especificar um conjunto de opções." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "As opções podem ser definidas somente nos campos de seleção." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Os campos de objeto devem definir um tipo de objeto." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "Campos {type} não podem definir um tipo de objeto." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "" +"Um filtro de objeto relacionado pode ser definido apenas para campos de " +"objeto." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"O filtro deve ser definido como um dicionário que mapeia atributos para " +"valores." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Verdadeiro" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Falso" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" "Os valores devem corresponder a esta expressão regular: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "O valor deve ser uma string." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "O valor deve corresponder à expressão regular '{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "O valor deve ser um número inteiro." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "O valor deve ser pelo menos {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "O valor não deve exceder {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "O valor deve ser decimal." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "O valor deve ser verdadeiro ou falso." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Os valores de data devem estar no formato ISO 8601 (AAAA-MM-DD)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Os valores de data e hora devem estar no formato ISO 8601 (AAAA-MM-DD " "HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Escolha {value} é inválida para o conjunto de escolhas {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Escolha {value} é inválida para o conjunto de escolhas {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "O valor deve ser um ID de objeto, não {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "O valor deve ser uma lista de IDs de objetos, não {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "ID de objeto inválida encontrada: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "O campo obrigatório não pode estar vazio." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Conjunto básico de opções predefinidas (opcional)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "As opções são ordenadas automaticamente em ordem alfabética" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "conjunto de opções de campo personalizado" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "conjuntos de opções de campos personalizados" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Deve definir opções básicas ou extras." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "layout" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "configuração" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "dashboard" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "dashboards" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "tipos de objetos" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Objeto(s) aos quais esta regra se aplica." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "ao criar" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Triggers quando um objeto correspondente é criado." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "ao atualizar" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Triggers quando uma tarefa para o objeto correspondente é atualizado." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "ao excluir" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Triggers quando uma tarefa para o objeto correspondente é excluído." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "ao iniciar tarefa" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Triggers quando uma tarefa para o objeto correspondente é iniciada." +msgid "The types of event which will trigger this rule." +msgstr "Os tipos de eventos que irão acionar esta regra." -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "ao finalizar tarefa" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Triggers quando uma tarefa para o objeto correspondente é terminada." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "condições" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Um conjunto de condições que determinam se o evento será gerado." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "tipo de ação" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Dados adicionais para passar ao objeto da ação" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "regra de evento" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "regras dos eventos" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Pelo menos um tipo de evento deve ser selecionado: criar, atualizar, " -"excluir, início e/ou fim da tarefa" - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8237,7 +8585,7 @@ msgstr "" "chamado. O processamento do modelo Jinja2 é suportado com o mesmo contexto " "do corpo da solicitação." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available aqui." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "cabeçalhos adicionais" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8263,11 +8611,11 @@ msgstr "" "Name:Value. O processamento do modelo Jinja2 é suportado com o " "mesmo contexto do corpo da solicitação (abaixo)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "corpo modelo" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8280,11 +8628,11 @@ msgstr "" "timestamp, username, request_id, e " "data." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "senha" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8294,15 +8642,15 @@ msgstr "" "Signature contendo um HMAC hex digest do corpo do payload usando a " "senha como chave. A senha não é transmitido na solicitação." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "Ative a verificação do certificado SSL. Desative com cuidado!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "Caminho do arquivo CA" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8310,65 +8658,65 @@ msgstr "" "O arquivo de certificado CA específico a ser usado para verificação SSL. " "Deixe em branco para usar os padrões do sistema." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "webhook" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "webhooks" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "Não especifique um arquivo de certificado CA se a verificação SSL estiver " "desativada." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "O(s) tipo(s) de objeto aos quais este link se aplica." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "texto do link" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Modelo de código Jinja2 para texto do link" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL do link" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Modelo de código Jinja2 para URL do link" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Links com o mesmo grupo aparecerão como um menu suspenso" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "nova janela" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Forçar o link a abrir em uma nova janela" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "link personalizado" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "links personalizados" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "O (s) tipo (s) de objeto aos quais este modelo se aplica." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8376,114 +8724,161 @@ msgstr "" "Modelo de código Jinja2. A lista de objetos que estão sendo exportados é " "passada como uma variável de contexto chamada queryset." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "O padrão é text/plain; charset=utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "extensão do arquivo" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Extensão para anexar ao nome do arquivo renderizado" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "como anexo" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Baixar arquivo como anexo" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "modelo de exportação" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "modelos de exportação" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "“{name}“é um nome reservado. Escolha um nome diferente." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "O (s) tipo (s) de objeto aos quais este filtro se aplica." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "compartilhado" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "filtro salvo" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "filtros salvos" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Os parâmetros de filtro devem ser armazenados como um dicionário de " "palavras-chave." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "altura da imagem" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "largura da imagem" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "anexo de imagem" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "anexos de imagens" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" "Os anexos de imagens não podem ser associados a este tipo de objeto " "({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "tipo" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "registro de evento" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "registros de eventos" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Registro de eventos não é suportado para o tipo de objeto ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "favorito" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "favoritos" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "O tipo de objeto ({type}) não pode ser favoritado." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "leitura" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "evento" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "notificação" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "notificações" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Objetos deste tipo ({type}) não suportam notificações." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "grupos" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "usuários" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "grupo de notificação" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "grupos de notificação" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "subscrição" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "subscrições" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "é executável" @@ -8524,19 +8919,19 @@ msgstr "valor em cache" msgid "cached values" msgstr "valores em cache" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "filial" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "filiais" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "mudança preparada" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "mudanças preparadas" @@ -8560,85 +8955,87 @@ msgstr "item etiquetado" msgid "tagged items" msgstr "itens etiquetados" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Dados do Script" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Parâmetros de Execução do Script" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "As alterações no banco de dados foram revertidas automaticamente." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Script abortado com erro: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Ocorreu uma exceção: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "As alterações do banco de dados foram revertidas devido a um erro." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "A exclusão é impedida por uma regra de proteção: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Descartar" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Tipos de Objetos" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Validar Unicidade" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Visível" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Editável" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Tipo de Objeto Relacionado" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Conjunto de Opções" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "É Clonável" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Valor Mínimo" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Valor Máximo" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Expressão Regular de Validação" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Contar" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Ordenar Alfabeticamente" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Nova Janela" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Como Anexo" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8648,63 +9045,54 @@ msgstr "Como Anexo" msgid "Data File" msgstr "Arquivo de Dados" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Sincronizado" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Imagem" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Tamanho (Bytes)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Leitura" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "Validação SSL" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Início de Tarefa" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Fim de Tarefa" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Tipos de Evento" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Funções de Dispositivos" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Nome Completo" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "ID da Solicitação" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Comentários (curto)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Linha" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Nível" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Mensagem" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Método" @@ -8735,37 +9123,37 @@ msgstr "As regras de validação devem ser passadas como um dicionário" msgid "Custom validation failed for {attribute}: {exception}" msgstr "Falha na validação personalizada para {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Atributo \"{name}\" é inválido para a requisição" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Atributo \"{name}\" é inválido para {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Seu dashboard foi redefinido." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Widget adicionado: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Widget atualizado: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Widget excluído: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Erro ao excluir o widget: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "" "Não é possível executar o script: o processo do agente RQ não está em " @@ -8811,10 +9199,6 @@ msgstr "SLAAC" msgid "Loopback" msgstr "Loopback" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Secundário" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8840,19 +9224,19 @@ msgstr "Texto sem formatação" msgid "Invalid IP address format: {address}" msgstr "Formato de endereço IP inválido: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Import target" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Import target (nome)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Export target" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Export target (nome)" @@ -8917,16 +9301,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Prefixos que contêm este prefixo ou IP" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Tamanho da máscara" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "Número da VLAN (1-4094)" @@ -8946,23 +9330,23 @@ msgid "Parent prefix" msgstr "Prefixo pai" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Máquina virtual (nome)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Máquina virtual (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Interface (nome)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "Interface da VM (nome)" @@ -8990,19 +9374,19 @@ msgstr "Serviço (ID)" msgid "NAT inside IP address (ID)" msgstr "NAT dentro do endereço IP (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "Endereço IP (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "Endereço IP" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "IPv4 Primário (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "IPv6 Primário (ID)" @@ -9035,17 +9419,17 @@ msgstr "A máscara CIDR (por exemplo, /24) é obrigatória." msgid "Address pattern" msgstr "Padrão de endereço" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Imponha um espaço exclusivo" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "É privado" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9058,20 +9442,20 @@ msgstr "É privado" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Data da adição" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Grupo de VLANs" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9080,49 +9464,49 @@ msgstr "Grupo de VLANs" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Comprimento do prefixo" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "É um pool" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Trate como totalmente utilizado" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "Atribuição de VLAN" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "Nome DNS" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protocolo" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "ID do Grupo" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9134,156 +9518,142 @@ msgstr "ID do Grupo" msgid "Authentication type" msgstr "Tipo de autenticação" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Chave de autenticação" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Autenticação" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "VLAN ID mínima para VLAN filha" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "VLAN ID máxima para VLAN filha" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Tipo de escopo" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "Faixas para ID de VLAN." + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Escopo" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Site e Grupo" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Portas" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Import route targets" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Export route targets" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "RIR associado" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "Grupo de VLANs (se houver)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Dispositivo pai da interface associada (se houver)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Máquina virtual" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "VM pai da interface associada (se houver)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Interface associada" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "É primário" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Tornar este o IP primário do dispositivo associado" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Nenhum dispositivo ou máquina virtual especificado; não pode ser definido " "como IP primário" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" "Nenhuma interface especificada; não é possível definir como IP primário" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Tipo de autenticação" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Tipo de escopo (aplicativo e modelo)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "VLAN ID mínima para VLAN filha (padrão: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "VLAN ID máxima para VLAN filha (padrão: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Grupo de VLANs associado" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "Protocolo IP" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Obrigatório se não estiver atribuído a uma VM" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Obrigatório se não estiver atribuído a um dispositivo" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} não está associado a este dispositivo/VM." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Route Targets" @@ -9359,31 +9729,34 @@ msgstr "Associado a uma interface" msgid "DNS Name" msgstr "Nome DNS" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "ID da VLAN" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLANs" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Menor VLAN ID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Contém ID de VLAN" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Maior VLAN ID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "ID da VLAN" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9454,11 +9827,16 @@ msgstr "Endereço IP Virtual" msgid "Assignment already exists" msgstr "A atribuição já existe" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "IDs de VLAN" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "VLANs filhas" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9466,33 +9844,33 @@ msgstr "" "Lista separada por vírgula de um ou mais números de portas. Um intervalo " "pode ser especificado usando hífen." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Modelo de Serviço" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Porta(s)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Serviço" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Modelo de serviço" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Do Modelo" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Personalizado" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9532,7 +9910,7 @@ msgstr "ID do grupo" msgid "protocol" msgstr "protocolo" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "tipo de autenticação" @@ -9548,10 +9926,6 @@ msgstr "Grupo FHRP" msgid "FHRP groups" msgstr "Grupos FHRP" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "prioridade" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "Associação a um grupo de FHRP" @@ -9568,7 +9942,7 @@ msgstr "privado" msgid "IP space managed by this RIR is considered private" msgstr "O espaço IP gerenciado por este RIR é considerado privado" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIRs" @@ -9822,22 +10196,6 @@ msgid "" msgstr "" "Um serviço deve estar associado a um dispositivo ou a uma máquina virtual." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "VLAN ID mínima" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Menor VLAN ID permitida para uma VLAN filha" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "VLAN ID máxima" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Maior VLAN ID permitida para uma VLAN filha" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "Grupos de VLANs" @@ -9850,37 +10208,40 @@ msgstr "Não é possível definir scope_type sem scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Não é possível definir scope_id sem scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" -msgstr "A VLAN ID máxima deve ser maior ou igual à VLAN ID mínima." +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Os intervalos não podem se sobrepor." -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" +msgstr "" +"A VLAN ID máxima do filho deve ser maior ou igual a VLAN ID mínima do filho." +" ({value})" + +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "O site específico ao qual esta VLAN está associada (se houver)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "Grupo de VLANs (opcional)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "ID numérica da VLAN (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Status operacional desta VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "Função principal desta VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLANs" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9889,12 +10250,10 @@ msgstr "" "A VLAN está atribuída ao grupo {group} (escopo: {scope}); não pode ser " "associada ao site {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "" -"A ID da VLAN deve estar entre {minimum} e {maximum} para VLANs no grupo " -"{group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "VLAN ID devem estar nas faixas {ranges} para VLANs no grupo {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9912,8 +10271,8 @@ msgstr "imponha um espaço exclusivo" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Prevenir prefixos/endereços IP duplicados dentro deste VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRFs" @@ -9941,8 +10300,8 @@ msgstr "Total de Sites" msgid "Provider Count" msgstr "Total de Provedores" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Agregados" @@ -9951,21 +10310,21 @@ msgid "Added" msgstr "Adicionado" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Prefixos" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Utilização" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "Faixas de IP" @@ -10010,7 +10369,11 @@ msgstr "Objeto Associado" msgid "Scope Type" msgstr "Tipo de Escopo" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "Faixas de ID de VLAN" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VLAN ID" @@ -10074,11 +10437,11 @@ msgstr "Interfaces de dispositivos" msgid "VM Interfaces" msgstr "Interfaces de Máquina Virtual" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Este campo pode não estar em branco." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10086,23 +10449,36 @@ msgstr "" "O valor deve ser passado diretamente (por exemplo, “foo”: 123); não use um " "dicionário ou uma lista." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} não é uma escolha válida." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Tipo de conteúdo inválido: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Valor inválido. Especifique um tipo de conteúdo como " "'.'." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "Intervalos devem ser especificados no formato (inferior,superior)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Fronteiras do intervalo devem ser definidas como inteiros." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} deve implementar get_view_name()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Permissão {permission} é inválida para o modelo {model}" @@ -10255,7 +10631,7 @@ msgstr "Altura do rack" #: netbox/netbox/config/parameters.py:86 msgid "Default unit height for rendered rack elevations" -msgstr "Altura padrão para rack elevations renderizados" +msgstr "Altura padrão para elevações de rack renderizados" #: netbox/netbox/config/parameters.py:91 msgid "Rack unit width" @@ -10263,7 +10639,7 @@ msgstr "Largura do rack" #: netbox/netbox/config/parameters.py:93 msgid "Default unit width for rendered rack elevations" -msgstr "Largura padrão para rack elevations renderizados" +msgstr "Largura padrão para elevações de rack renderizados" #: netbox/netbox/config/parameters.py:100 msgid "Powerfeed voltage" @@ -10429,48 +10805,53 @@ msgstr "Remover etiquetas" msgid "{class_name} must specify a model class." msgstr "{class_name} deve especificar um modelo de classe." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Nome de campo desconhecido '{name}' nos dados do campo personalizado." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Valor inválido para o campo personalizado '{name}': {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Campo customizado '{name}' deve ser um valor único." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Campo personalizado obrigatório '{name}' ausente." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Fonte de dados remota" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "caminho dos dados" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Caminho para o arquivo remoto (em relação à raiz da fonte de dados)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "sincronização automática ativada" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Habilita a sincronização automática de dados quando o arquivo de dados for " "atualizado" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "data sincronizada" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} deve implementar um método sync_data ()." @@ -10484,217 +10865,230 @@ msgid "Site Groups" msgstr "Grupos de Sites" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Funções de Rack" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Elevations" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Grupos de Inquilinos" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Grupos de Contatos" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Funções dos Contatos" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Atribuições dos Contatos" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Funções de Rack" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Elevações" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Tipos de Racks" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Módulos" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Contextos de Dispositivos Virtuais" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Fabricantes" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Componentes de Dispositivos" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Funções dos Itens de Inventário" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Conexões" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Cabos" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Links Wireless" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Conexões de Interface" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Conexões de Console" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Conexões de Alimentação" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Grupos de Redes Wireless" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Funções de Prefixo e VLAN" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "Intervalos de ASNs" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "Grupos de VLANs" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Modelos de Serviço" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Serviços" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Túneis" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Grupos de Túneis" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Terminações de Túneis" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPNs" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Terminações" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "Propostas de IKE" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "Políticas de IKE" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "Propostas de IPsec" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "Políticas de IPsec" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "Perfis de IPsec" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Virtualização" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Discos Virtuais" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Tipos de Clusters" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Grupos de Clusters" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Tipos de Circuitos" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Grupos de Circuitos" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Atribuições do Grupo" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Terminações de Circuitos" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Provedores" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Contas de Provedores" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Redes dos Provedores" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Quadros de Alimentação" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Configurações" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Contexto de Configuração" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Modelos de Configuração" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Personalização" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10707,114 +11101,108 @@ msgstr "Personalização" msgid "Custom Fields" msgstr "Campos Personalizados" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Opções de Campo Personalizadas" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Links Personalizados" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Modelos de Exportação" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Filtros Salvos" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Anexos de Imagens" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operações" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Integrações" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Fontes de dados" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Regras dos eventos" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhooks" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Tarefas" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Rastreamento" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Grupos de Notificação" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Registros de Eventos" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Changelog" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "Administrador" -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Usuários" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Grupos" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "Tokens de API" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Permissões" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Sistema" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Plugins" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Histórico de Configuração" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Tarefas em Background" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Plugins" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10846,31 +11234,22 @@ msgstr "" "{template_extension} não é uma subclasse de " "netbox.plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"Classe PluginTemplateExtension {template_extension} não define um modelo " -"válido!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} deve ser uma instância de netbox.plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} deve ser uma instância de netbox.plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} deve ser uma instância de netbox.plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context deve ser um dicionário" @@ -10948,75 +11327,79 @@ msgstr "Não é possível adicionar stores ao registro após a inicialização" msgid "Cannot delete stores from registry" msgstr "Não é possível excluir stores do registro" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "Tcheco" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "Dinamarquês" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Alemão" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Inglês" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "Espanhol" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "Francês" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "Italiano" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Japonês" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Holandês" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Polonês" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "Português" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Russo" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Turco" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "Ucraniano" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "Chinês" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Selecionar todos" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Alternar todos" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Alternar Lista Suspensa" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Erro" @@ -11068,25 +11451,25 @@ msgstr "Renomeado(s) {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Excluído(s) {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Changelog" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "Registro" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "" "Não é possível sincronizar os dados: Nenhum arquivo de dados definido." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Dados sincronizados para {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Sincronizado(s) {count} {object_type}" @@ -11096,7 +11479,7 @@ msgstr "Sincronizado(s) {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} deve implementar get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11133,11 +11516,11 @@ msgstr "" msgid "The complete exception is provided below" msgstr "A exceção completa é fornecida abaixo" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Versão do Python" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "Versão do NetBox" @@ -11161,14 +11544,26 @@ msgstr "no GitHub" msgid "Home Page" msgstr "Página Inicial" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Perfil" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Notificações" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Subscrições" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Preferências" @@ -11176,7 +11571,7 @@ msgstr "Preferências" msgid "Change Password" msgstr "Alterar senha" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11201,7 +11596,7 @@ msgstr "Alterar senha" msgid "Cancel" msgstr "Cancelar" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11275,7 +11670,7 @@ msgid "Superuser" msgstr "Superusuário" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Staff" @@ -11290,19 +11685,19 @@ msgstr "Grupos Associados" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11323,7 +11718,7 @@ msgstr "Meus Tokens de API" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Token" @@ -11344,32 +11739,41 @@ msgstr "Adicionar um Token" msgid "Home" msgstr "Início" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "Tema do NetBox" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "Logotipo do NetBox" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Documentos" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "API REST" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "Documentação da API REST" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "API do GraphQL" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Suporte NetBox Labs " + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Código-Fonte" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Comunidade" @@ -11381,6 +11785,11 @@ msgstr "Data de Ativação" msgid "Termination Date" msgstr "Data de Desativação" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Atribuir Grupo" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Troca das Terminações dos Circuitos" @@ -11398,6 +11807,14 @@ msgstr "Lado A" msgid "Z side" msgstr "Lado Z" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Atribuir Circuito" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Atribuição do Grupo de Circuitos" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Adicionar Circuito" @@ -11422,7 +11839,7 @@ msgstr "Adicionar" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11543,13 +11960,10 @@ msgstr "Novo Valor" msgid "Changed" msgstr "Alterado" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Última Atualização" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Tamanho" @@ -11585,7 +11999,7 @@ msgstr "Arquivos" #: netbox/templates/core/inc/config_data.html:7 msgid "Rack elevations" -msgstr "Rack elevations" +msgstr "Elevações de rack" #: netbox/templates/core/inc/config_data.html:10 msgid "Default unit height" @@ -11631,25 +12045,119 @@ msgstr "Preferências do usuário" msgid "Job retention" msgstr "Retenção da tarefa" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "Tarefa" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Criado Por" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Agendamento" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "a cada %(interval)s minuto(s)" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Alteração" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Diferença" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Anterior" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Próximo" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Objeto Criado" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Objeto Excluído" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Sem Alterações" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Dados Pré-Alteração" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Aviso: Comparando alteração não atômica com o registro de alteração anterior" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Dados Pós-Alteração" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Visualizar %(count)s Alterações" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Retenção do changelog" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "dias" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Indefinido" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Não instalado" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Visão Geral" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Instalar" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Detalhes do Plugin" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Sumário" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Licença" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Histórico da Versão" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Instruções para Instalação Local" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11661,8 +12169,8 @@ msgstr "Filas em Segundo Plano" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11721,7 +12229,7 @@ msgid "Queued Jobs" msgstr "Trabalhos em Fila" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11781,39 +12289,43 @@ msgstr "Exportar" msgid "System Status" msgstr "Status do Sistema" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "Versão do NetBox" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Versão do Django" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "Versão do PostgreSQL" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Nome do banco de dados" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Tamanho do banco de dados" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Indisponível" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "Agentes RQ" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "fila padrão" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Hora do sistema" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Configuração Atual" @@ -11911,14 +12423,15 @@ msgstr "Não montado em rack" msgid "GPS Coordinates" msgstr "Coordenadas GPS" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Mapear" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Mapa" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Etiqueta de Patrimônio" @@ -11938,19 +12451,19 @@ msgstr "Gestão" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT para" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NAT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Utilização de Energia" @@ -11978,7 +12491,7 @@ msgid "Leg" msgstr "Ramal" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Adicionar um serviço" @@ -12239,6 +12752,22 @@ msgstr "Limpar" msgid "Clear All" msgstr "Limpar Tudo" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Profundidade de Montagem" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Unidade Inicial" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Unidades Descendentes" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Elevação de rack" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Adicionar Interface Filha" @@ -12301,8 +12830,8 @@ msgstr "Largura do Canal" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12392,49 +12921,33 @@ msgstr "Consumo Máximo" msgid "Allocated Draw" msgstr "Consumo Alocado" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Espaço Utilizado" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "descedente" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "ascendente" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Unidade Inicial" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Profundidade de Montagem" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Peso do Rack" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Peso Máximo" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Peso Total" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Imagens e Rótulos" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Somente imagens" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Somente rótulos" @@ -12447,6 +12960,10 @@ msgstr "Adicionar reserva" msgid "View List" msgstr "Exibir Lista" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Selecione visão do rack" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Ordenar Por" @@ -12457,7 +12974,7 @@ msgstr "Nenhum Rack Localizado" #: netbox/templates/dcim/rack_list.html:8 msgid "View Elevations" -msgstr "Exibir Elevations" +msgstr "Exibir Elevações" #: netbox/templates/dcim/rackreservation.html:42 msgid "Reservation Details" @@ -12500,10 +13017,6 @@ msgstr "Horário local" msgid "Physical Address" msgstr "Endereço Físico" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Mapa" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Endereço de Entrega" @@ -12544,7 +13057,7 @@ msgstr "Adicionar Novo Membro" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Ações" @@ -12714,46 +13227,42 @@ msgid "Group Name" msgstr "Nome do Grupo" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Deve ser Único" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Clonável" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Valor Padrão" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Peso na Pesquisa" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Lógica do Filtro" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Peso de Exibição" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Interface de Usuário Visível" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Interface de Usuário Editável" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Regras de Validação" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Valor Mínimo" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Valor Máximo" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Expressão Regular" @@ -12767,11 +13276,11 @@ msgstr "Classe do Botão" msgid "Assigned Models" msgstr "Modelos Associados" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Texto do Link" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "URL do link" @@ -12796,6 +13305,14 @@ msgstr "" "Esta mudança afetará apenas seu dashboard e não impactará os outros " "usuários." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "configuração do widget" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Fechar widget" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Adicionar um Widget" @@ -12828,13 +13345,9 @@ msgstr "Houve um problema ao obter o feed RSS" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Início de tarefa" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Fim de tarefa" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Condições" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12876,20 +13389,15 @@ msgstr "Resultados pendentes" msgid "Journal Entry" msgstr "Registro de Evento" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Retenção do changelog" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "dias" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Grupo de Notificação" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Indefinido" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Nenhum atribuído" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12904,53 +13412,6 @@ msgstr "Contextos de Origem" msgid "New Journal Entry" msgstr "Novo Registro de Evento" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Alteração" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Diferença" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Anterior" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Próximo" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Objeto Criado" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Objeto Excluído" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Sem Alterações" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Dados Pré-Alteração" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Aviso: Comparando alteração não atômica com o registro de alteração anterior" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Dados Pós-Alteração" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Visualizar %(count)s Alterações" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Relatório" @@ -12961,7 +13422,7 @@ msgstr "Você não tem permissão para executar scripts" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Executar Script" @@ -12974,27 +13435,27 @@ msgstr "Erro ao carregar o script" msgid "Script no longer exists in the source file." msgstr "O script não existe mais no arquivo de origem." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Última Execução" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "O script não está mais presente no arquivo de origem" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Nunca" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Execute Novamente" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Nenhum Script Encontrado" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -13009,6 +13470,14 @@ msgstr "" msgid "Results" msgstr "Resultados" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Limite do log" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Todos" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Itens Etiquetados" @@ -13041,11 +13510,11 @@ msgstr "Tipo de Conteúdo HTTP" msgid "SSL Verification" msgstr "Verificação SSL" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Cabeçalhos Adicionais" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Modelo de Corpo" @@ -13121,6 +13590,10 @@ msgstr "Opções de Campos" msgid "Accessor" msgstr "Acessador" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "escolhas" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Importar Valor" @@ -13288,6 +13761,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Os objetos a seguir serão excluídos como resultado desta ação." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "atrás" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Nenhuma notificação não lida" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Todas as notificações" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Selecionar" @@ -13355,15 +13840,23 @@ msgstr "Busca rápida" msgid "Saved filter" msgstr "Filtro salvo" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Limpar ordenação" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Centro de ajuda" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Administrador do Django" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Logout" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Login" @@ -13411,10 +13904,6 @@ msgstr "Criar em Massa" msgid "Create Group" msgstr "Criar Grupo" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Atribuir Grupo" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "IPs Virtuais" @@ -13548,10 +14037,6 @@ msgstr "Adicionar um Prefixo" msgid "Add VLAN" msgstr "Adicionar VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "VIDs Permitidos" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Route Distinguisher" @@ -13560,20 +14045,16 @@ msgstr "Route Distinguisher" msgid "Unique IP Space" msgstr "Espaço de IP exclusivo" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "Logotipo do NetBox" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Erros" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Entrar" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Ou" @@ -13650,11 +14131,6 @@ msgstr "Título" msgid "Phone" msgstr "Telefone" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Atribuições" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13694,7 +14170,7 @@ msgstr "Permissões Atribuídas" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Permissão" @@ -13716,23 +14192,21 @@ msgid "Allocated Resources" msgstr "Recursos Alocados" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "CPUs Virtuais" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Memória" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Espaço em Disco" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13773,7 +14247,7 @@ msgid "Cluster Group" msgstr "Grupo de Clusters" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Tipo de Cluster" @@ -13782,13 +14256,13 @@ msgstr "Tipo de Cluster" msgid "Virtual Disk" msgstr "Disco Virtual" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Recursos" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Adicionar Disco Virtual" @@ -13970,13 +14444,12 @@ msgstr "Adicionar Grupo de Redes Wireless" msgid "Link Properties" msgstr "Propriedades do Link" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Terciário" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Inativo" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Distância" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14141,13 +14614,13 @@ msgstr "Link de Contato" msgid "Contact Description" msgstr "Descrição do Contato" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Permissão (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Grupo (nome)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Grupo de notificação (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14169,27 +14642,27 @@ msgstr "Superusuário" msgid "If no key is provided, one will be generated automatically." msgstr "Se nenhuma chave for fornecida, uma será gerada automaticamente." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Staff" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "É Superusuário" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Pode Visualizar" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Pode Adicionar" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Pode Alterar" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Pode Excluir" @@ -14283,47 +14756,47 @@ msgstr "permissão" msgid "permissions" msgstr "permissões" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "preferências do usuário" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Chave '{path}'é um nó folha; não é possível atribuir novas chaves" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Chave '{path}'é um dicionário; não pode atribuir um valor que não seja do " "dicionário" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "expira" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "usado pela última vez" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "chave" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "escrita habilitada" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "Permitir operações de criação/atualização/exclusão usando esta chave" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "IPs permitidos" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14332,11 +14805,11 @@ msgstr "" "para nenhuma restrição. Ex: “10.1.1.0/24, 192.168.10.16/32, 2001:DB 8:1: " ":/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "token" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "tokens" @@ -14344,18 +14817,10 @@ msgstr "tokens" msgid "group" msgstr "grupo" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "grupos" - #: netbox/users/models/users.py:92 msgid "user" msgstr "usuário" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "usuários" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Nome de usuário já existente." @@ -14494,7 +14959,7 @@ msgstr "" "Dados YAML inválidos. Os dados devem estar na forma de vários documentos ou " "de um único documento contendo uma lista de dicionários." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14503,6 +14968,22 @@ msgstr "" "Lista inválida ({value}). Deve ser numérica e os intervalos devem estar em " "ordem crescente." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Especifique um ou mais intervalos numéricos separados por vírgulas. Exemplo:" +" 1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Intervalos inválidos ({value}). Deve ser um intervalo de inteiros em ordem " +"ascendente." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14670,6 +15151,26 @@ msgstr "" "Valor necessário ausente para o parâmetro de consulta estática: " "'{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Senha deve possuir ao menos um número." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Senha deve possuir ao menos uma letra maiúscula." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Senha deve possuir ao menos uma letra minúscula." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Sua senha deve possuir ao menos um número, uma letra maíuscula e uma letra " +"minúscula." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14726,6 +15227,14 @@ msgstr "Adicionar modelo de exportação" msgid "Import" msgstr "Importar" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Cancelar inscrição" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Inscrever" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Copiar para área de transferência" @@ -14766,15 +15275,11 @@ msgstr "Buscar no Netbox" msgid "Open selector" msgstr "Abrir seletor" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Nenhum atribuído" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Escrita" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "O teste deve definir csv_update_data." @@ -14783,17 +15288,17 @@ msgstr "O teste deve definir csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} não é uma expressão regular válida." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "{self.__class__.__name__} deve implementar get_required_permission ()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} deve implementar get_required_permission ()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14816,7 +15321,7 @@ msgid "Cluster type (ID)" msgstr "Tipo de cluster (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Cluster (ID)" @@ -14834,7 +15339,7 @@ msgid "Disk (GB)" msgstr "Disco (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Tamanho (GB)" @@ -14854,6 +15359,10 @@ msgstr "Cluster atribuído" msgid "Assigned device within cluster" msgstr "Dispositivo atribuído dentro do cluster" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Número de série" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14877,6 +15386,7 @@ msgstr "" "O tamanho do disco é gerenciado por meio da conexão de discos virtuais." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Disco" @@ -14918,37 +15428,37 @@ msgid "memory (MB)" msgstr "memória (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "disco (GB)" +msgid "disk (MB)" +msgstr "disco (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "O nome da máquina virtual deve ser exclusivo por cluster." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "máquina virtual" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "máquinas virtuais" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "Uma máquina virtual deve ser associada a um site e/ou cluster." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" "O cluster selecionado ({cluster}) não está atribuído a este site ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "É necessário especificar um cluster ao atribuir um host." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." @@ -14956,7 +15466,7 @@ msgstr "" "O dispositivo selecionado ({device}) não está associado a este cluster " "({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -14965,17 +15475,17 @@ msgstr "" "O tamanho do disco especificado ({size}) deve corresponder ao tamanho " "agregado dos discos virtuais associados ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "Deve ser um endereço IPv{family}. ({ip} é um endereço IPv{version}.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "O endereço IP especificado ({ip}) não está associado a esta VM." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -14984,7 +15494,7 @@ msgstr "" "A interface pai selecionada ({parent}) pertence a uma máquina virtual " "diferente ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -14993,7 +15503,7 @@ msgstr "" "A interface bridge selecionada ({bridge}) pertence a uma máquina virtual " "diferente ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -15002,24 +15512,24 @@ msgstr "" "A VLAN não tagueada ({untagged_vlan}) deve pertencer ao mesmo site da " "máquina virtual pai da interface ou deve ser global." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "tamanho (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "tamanho (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "disco virtual" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "discos virtuais" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Adicionado(s) {count} dispositivo(s) para agrupar {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Removido(s) {count} dispositivo(s) do cluster {cluster}" @@ -15133,32 +15643,32 @@ msgid "Outside IP (ID)" msgstr "IP Externo (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "Política da IKE (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "Política da IKE (nome)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "Política de IPsec (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "Política de IPsec (nome)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (slug)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "Interface da VM (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (nome)" @@ -15332,7 +15842,7 @@ msgstr "versão" msgid "proposals" msgstr "propostas" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "chave pré-compartilhada" @@ -15514,17 +16024,24 @@ msgstr "WPA Enterprise" msgid "Authentication cipher" msgstr "Cifra de autenticação" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Unidade de distância" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "VLAN Bridged" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Interface A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Interface B" @@ -15532,39 +16049,52 @@ msgstr "Interface B" msgid "Side B" msgstr "Lado B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "cifra de autenticação" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "grupo de redes wireless" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "grupos de redes wireless" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "rede wireless" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "interface A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "interface B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "distância" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "unidade de distância" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "link wireless" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "links wireless" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "" +"É necessário especificar uma unidade ao definir uma distância sem fio." + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} não é uma interface wireless." diff --git a/netbox/translations/ru/LC_MESSAGES/django.mo b/netbox/translations/ru/LC_MESSAGES/django.mo index 6e773afc1f7..0d1053c22c0 100644 Binary files a/netbox/translations/ru/LC_MESSAGES/django.mo and b/netbox/translations/ru/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/ru/LC_MESSAGES/django.po b/netbox/translations/ru/LC_MESSAGES/django.po index fe5fe38e50b..9de84297568 100644 --- a/netbox/translations/ru/LC_MESSAGES/django.po +++ b/netbox/translations/ru/LC_MESSAGES/django.po @@ -12,17 +12,17 @@ # Madi Tuleu, 2024 # stavr666, 2024 # Alexander Ryazanov (alryaz) , 2024 -# Jeremy Stretch, 2024 # Artem Kotik, 2024 +# Jeremy Stretch, 2024 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" -"Last-Translator: Artem Kotik, 2024\n" +"Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Russian (https://app.transifex.com/netbox-community/teams/178115/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -36,16 +36,17 @@ msgstr "" msgid "Key" msgstr "Ключ" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Запись включена" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -57,11 +58,11 @@ msgstr "Создан" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Истекает" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Последнее использование" @@ -71,45 +72,45 @@ msgstr "Последнее использование" msgid "Allowed IPs" msgstr "Разрешенные IP-адреса" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Вошел(-ла) в систему как {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Вы вышли из системы." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Ваши настройки были обновлены." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "Учетные данные доменных пользователей нельзя изменить в NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Ваш пароль успешно изменен." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Запланировано" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Ввод в эксплутацию" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -118,9 +119,9 @@ msgstr "Ввод в эксплутацию" msgid "Active" msgstr "Активный" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Оффлайн" @@ -133,98 +134,116 @@ msgstr "Вывод из эксплуатации" msgid "Decommissioned" msgstr "Списан" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Основной" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Вторичный" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Третичный" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Неактивный" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Регион (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Регион (подстрока)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Группа сайтов (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Группа сайтов (подстрока)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -236,172 +255,197 @@ msgstr "Группа сайтов (подстрока)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Сайт" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Сайт (подстрока)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Провайдер (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Провайдер (подстрока)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Аккаунт провайдера (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Учетная запись провайдера" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Сеть провайдера (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Тип канала связи (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Тип канала связи (подстрока)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Сайт (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Точка подключения A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Поиск" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Канал связи" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Сеть провайдера (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Канал связи (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Канал связи (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Группа каналов связи (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Группа каналов связи (подстрока)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -414,16 +458,17 @@ msgstr "ASN" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -433,8 +478,9 @@ msgstr "ASN" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -487,26 +533,28 @@ msgstr "ASN" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Описание" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -518,22 +566,22 @@ msgstr "Описание" msgid "Provider" msgstr "Провайдер" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Идентификатор Службы" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -544,33 +592,33 @@ msgstr "Идентификатор Службы" msgid "Color" msgstr "Цвет" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -583,9 +631,9 @@ msgstr "Цвет" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -601,52 +649,52 @@ msgstr "Цвет" msgid "Type" msgstr "Тип" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Аккаунт провайдера" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -655,7 +703,7 @@ msgstr "Аккаунт провайдера" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -663,7 +711,7 @@ msgstr "Аккаунт провайдера" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -673,45 +721,49 @@ msgstr "Аккаунт провайдера" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Статус" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -723,7 +775,7 @@ msgstr "Статус" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -746,36 +798,37 @@ msgstr "Статус" msgid "Tenant" msgstr "Арендатор" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Дата установки" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Дата отключения" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Гарантированная скорость (Кбит/с)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Параметры Службы" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -785,37 +838,37 @@ msgstr "Параметры Службы" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Аренда" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Сеть провайдера" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Скорость порта (Кбит/с)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Скорость восходящего потока (Кбит/с)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Пометить подключенным" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -823,46 +876,60 @@ msgstr "Пометить подключенным" msgid "Circuit Termination" msgstr "Точка подключения канала связи" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Сведения об точке подключения" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Приоритет" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Назначенный провайдер" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Назначенный аккаунт провайдера" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Тип канала связи" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Операционный статус" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -870,7 +937,7 @@ msgstr "Операционный статус" msgid "Assigned tenant" msgstr "Назначенный арендатор" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -878,44 +945,44 @@ msgstr "Назначенный арендатор" msgid "Termination" msgstr "Прекращение" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Сеть провайдера" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -924,13 +991,13 @@ msgstr "Сеть провайдера" msgid "Location" msgstr "Локация" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -939,22 +1006,22 @@ msgstr "Локация" msgid "Contacts" msgstr "Контакты" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -967,17 +1034,17 @@ msgstr "Контакты" msgid "Region" msgstr "Регион" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -985,180 +1052,263 @@ msgstr "Регион" msgid "Site group" msgstr "Группа сайтов" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Атрибуты" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Аккаунт" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Терминология" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Задание" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Группа" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Группа каналов связи" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "цвет" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "тип канала связи" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "типы каналов связи" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "Идентификатор канала связи" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "Уникальный ID канала связи" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "статус" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "установлен" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "разобран" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "гарантированная скорость (Кбит/с)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Гарантированная скорость" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "канал связи" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "каналы связи" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "группа каналов связи" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "группы каналов связи" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "приоритет" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Назначение группы каналов связи" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Назначения групп каналов связи" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "завершение" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "скорость порта (Кбит/с)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Физическая скорость канала связи" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "скорость отдачи (Кбит/с)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Скорость отдачи, если она отличается от скорости порта" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "ID кросс-соединения" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "ID локального кросс-соединения" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "патч-панель или порт(ы)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "ID патч-панели и номера порта(-ов)" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "описание" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "точка подключения канала связи" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "точки подключения канала связи" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Оконечное устройство канала должно быть подключено либо к узлу, либо к сети " "провайдера." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" @@ -1167,33 +1317,34 @@ msgstr "" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "имя" @@ -1202,11 +1353,12 @@ msgid "Full name of the provider" msgstr "Полное имя провайдера" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "подстрока" @@ -1242,40 +1394,45 @@ msgstr "сеть провайдера" msgid "provider networks" msgstr "сети провайдера" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1290,7 +1447,7 @@ msgstr "сети провайдера" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1304,8 +1461,9 @@ msgstr "сети провайдера" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1345,9 +1503,9 @@ msgstr "сети провайдера" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1357,56 +1515,57 @@ msgstr "сети провайдера" msgid "Name" msgstr "Имя" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Каналы связи" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Идентификатор канала связи" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Сторона А" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Сторона Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Гарантированная скорость" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1415,6 +1574,12 @@ msgstr "Гарантированная скорость" msgid "Comments" msgstr "Комментарии" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Задания" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Аккаунты" @@ -1437,7 +1602,7 @@ msgstr "Не определены точки подключения для ка msgid "Swapped terminations for circuit {circuit}." msgstr "Поменены местами точки подключения для канала связи {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "" "У этого пользователя нет разрешения на синхронизацию этого источника данных." @@ -1456,21 +1621,19 @@ msgid "Syncing" msgstr "Синхронизируется" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Завершено" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Неисправно" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1482,30 +1645,39 @@ msgstr "Скрипты" msgid "Reports" msgstr "Отчеты" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "В ожидании" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Запланировано" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Исполняется" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Ошибка" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Обновлено" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Удалено" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Закончено" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Запущено" @@ -1522,11 +1694,13 @@ msgstr "Остановлен" msgid "Cancelled" msgstr "Отменено" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Локальный" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1536,8 +1710,8 @@ msgstr "Имя пользователя" msgid "Only used for cloning with HTTP(S)" msgstr "Используется только для клонирования по HTTP (S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Пароль" @@ -1559,24 +1733,63 @@ msgstr "ID ключа доступа AWS" msgid "AWS secret access key" msgstr "Секретный ключ доступа AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Объект создан" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Объект обновлен" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Объект удален" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Задача начата" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Задача выполнена" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Задача не выполнена" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Задача выполнена с ошибкой" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Источник данных (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Источник данных (имя)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Пользователь (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Имя пользователя" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1584,14 +1797,14 @@ msgstr "Источник данных (имя)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Включено" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1604,11 +1817,11 @@ msgstr "Параметры" msgid "Ignore rules" msgstr "Правила исключения" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1618,76 +1831,99 @@ msgstr "Правила исключения" msgid "Data Source" msgstr "Источник данных" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Файл" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Источник данных" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Создание" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Тип объекта" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Создано после" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Создано до" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Запланировано после" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Запланировано до" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Запустилось после" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Запустилось до" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Завершено после" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Завершено до" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Пользователь" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Время" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "После" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "До" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Действие" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1717,19 +1953,19 @@ msgstr "Необходимо загрузить файл или выбрать msgid "Rack Elevations" msgstr "Фасады стоек" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Мощность" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1746,7 +1982,9 @@ msgstr "Баннеры" msgid "Pagination" msgstr "Разбивка на страницы" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Валидация" @@ -1756,7 +1994,7 @@ msgstr "Валидация" msgid "User Preferences" msgstr "Пользовательские настройки" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1779,10 +2017,50 @@ msgstr "Текущее значение: {value}" msgid " (default)" msgstr " (по умолчанию)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "время" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "имя пользователя" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "идентификатор запроса" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "действие" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "данные перед изменением" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "данные после изменений" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "изменение объекта" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "изменения объекта" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"Ведение журнала изменений не поддерживается для этого типа объектов " +"({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "создан(а)" @@ -1815,14 +2093,14 @@ msgstr "Текущая конфигурация" msgid "Config revision #{id}" msgstr "Ревизия конфигурации #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1830,62 +2108,63 @@ msgstr "Ревизия конфигурации #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "тип" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "включен" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "правила исключения" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Шаблоны (по одному в строке), соответствующие файлам, которые следует " "игнорировать при синхронизации" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "параметры" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "время последней синхронизации" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "источник данных" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "источники данных" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Неизвестный тип backend: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "Невозможно запустить синхронизацию; синхронизация уже выполняется." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1893,48 +2172,48 @@ msgstr "" "Произошла ошибка при инициализации бэкэнда. Необходимо установить " "зависимость: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "последнее обновление" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "путь" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Путь к файлу относительно корня источника данных" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "размер" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "хэш" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "Длина должна быть 64 шестнадцатеричных символа." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "SHA256 хэш данных файла" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "файл данных" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "файлы данных" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "автоматическая синхронизация записи" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "автоматическая синхронизация записей" @@ -1958,60 +2237,94 @@ msgstr "Настраиваемый файл" msgid "managed files" msgstr "Настраиваемые файлы" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "по расписанию" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "интервал" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Интервал повторения (в минутах)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "начало" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "завершено" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "данные" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "ошибка" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "идентификатор задачи" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "задача" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr " задачи" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "Нельзя присвоить задачи этому типу объектов ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" "Неверный статус для завершения задачи. Возможны следующие варианты: " "{choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "Невозможно вызвать enqueue() со значениями schedule_at и immediate." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Удаление предотвращается правилом защиты: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Полное имя" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Объект" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "Идентификатор запроса" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Активен" @@ -2026,51 +2339,63 @@ msgid "Last updated" msgstr "Последнее обновление" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Объект" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Интервал" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Версия" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Пакет" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Последнее обновление" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Минимальная версия NetBox" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Максимальная версия NetBox" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Данные плагина не найдены" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Автор" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Почта" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Установлен" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Сертифицирован" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Плагины не найдены" +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Опубликовано" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Установленная версия" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Последняя версия" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2084,7 +2409,7 @@ msgstr "Рабочие процессы" msgid "Host" msgstr "Хост" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Порт" @@ -2132,62 +2457,72 @@ msgstr "ПІД" msgid "No workers found" msgstr "Рабочие процессы не найдены" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Задача #{id} для синхронизации {datasource} добавлена в очередь" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Ревизия конфигурации #{id} восстановлена" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" -msgstr "Задание {job_id} не найдено" +msgstr "Задача {job_id} не найдена" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "Задача {id} была удалена." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Ошибка при удалении задачи {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "Задача {id} не найдена." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "вЗадача {id} была повторно добавлена в очередь." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "Задача {id} добавлена в очередь." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "Задача {id} остановлена." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Не удалось остановить задачу {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Не удалось загрузить каталог плагинов" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Плагин {name} не найден" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Позиция (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "Идентификатор объекта" @@ -2195,8 +2530,8 @@ msgstr "Идентификатор объекта" msgid "Staging" msgstr "Подготовка к развертыванию" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Вывод из эксплуатации" @@ -2255,27 +2590,39 @@ msgstr "Доступно" msgid "Deprecated" msgstr "Выведенный(-ая) из использования" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Миллиметры" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Дюймы" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Спереди назад" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Сзади вперед" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2291,278 +2638,273 @@ msgstr "Дюймы" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Родитель" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Потомок" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Вид спереди" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Вид сзади" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Подготовлен" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Инвентарь" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Спереди назад" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Сзади вперед" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Слева направо" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Справа налево" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Бок назад" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Пассивный" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Смешанный" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (не блокирующий)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (блокирующий)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Калифорнийский стиль" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "ITA/Международный" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Проприетарный" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Другой" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/Международный" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Физический" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Виртуальный" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Беспроводной" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Виртуальные интерфейсы" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Мост" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Группа агрегации линков (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (фиксированный)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (модульный)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (объединительная плата)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Сотовая связь" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Серийный" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Коаксиальный" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Стекирование" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Полу" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Полный" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Авто" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Доступ" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Тегированный" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Тегированный (все)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "Стандарт IEEE" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Пассивный режим 24 В (2 пары)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Пассивное напряжение 24 В (4 пары)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Пассивное напряжение 48 В (2 пары)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Пассивное напряжение 48 В (4 пары)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Медь" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Оптоволоконное" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Волокно" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Подключено" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Километры" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Метры" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Сантиметры" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Мили" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Футы" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Килограммы" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Граммы" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Фунты" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Унции" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Основной" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Резервный" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Однофазный" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Трехфазный" @@ -2576,330 +2918,335 @@ msgstr "Неверный формат MAC-адреса: {value}" msgid "Invalid WWN format: {value}" msgstr "Неверный формат WWN: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Родительский регион (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Регион родителя (подстрока)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Родительская группа сайтов (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Группа сайтов родителя (подстрока)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Группа (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Группа (подстрока)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "Автономная система (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Родительская локация (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Локация родителя (подстрока)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Локация (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Локация (подстрока)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Производитель (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Производитель (подстрока)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Тип стойки (подстрока)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Тип стойки (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Роль (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Роль (подстрока)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Стойка (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Пользователь (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Пользователь (имя)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Производитель (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Производитель (подстрока)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Платформа по умолчанию (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Платформа по умолчанию (подстрока)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Имеет фронтальное изображение" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Имеет изображение сзади" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Имеет консольные порты" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Имеет серверные консольные порты" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Имеет порты питания" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Имеет розетки" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Имеет интерфейсы" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Имеет сквозные порты" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Имеет отсеки для модулей" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Имеет отсеки для устройств" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Имеет инвентарь" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Тип устройства (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Тип модуля (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Порт питания (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Родительский инвентарь (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Шаблон конфигурации (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Тип устройства (подстрока)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Родительское устройство (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Платформа (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Платформа (подстрока)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Имя сайта (подстрока)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Родительский ребенок (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "Кластер виртуальных машин (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Группа кластеров (подстрока)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Кластерная группа (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Модель устройства (подстрока)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Полная глубина" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC-адрес" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Имеет основной IP-адрес" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Имеет внеполосный IP-адрес" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Виртуальное шасси (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Является членом виртуального шасси" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "Сервисный порт (ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Имеет контекст виртуального устройства" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "модель устройства" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Интерфейс (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Тип модуля (модель)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" msgstr "Отсек для модулей (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Устройство (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Стойка (имя)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Устройство (имя)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Тип устройства (модель)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Роль устройства (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Роль устройства (подстрока)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Виртуальное шасси (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2908,33 +3255,33 @@ msgstr "Виртуальное шасси (ID)" msgid "Virtual Chassis" msgstr "Виртуальное шасси" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Модуль (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Кабель (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Назначенная VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "Назначенный VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2951,121 +3298,125 @@ msgstr "Назначенный VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Интерфейсы виртуального шасси для устройства" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Интерфейсы виртуального шасси для устройства (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Вид интерфейса" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Родительский интерфейс (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Мостовой интерфейс (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "Интерфейс LAG (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Виртуальный контекст" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Контекст виртуального устройства (идентификатор)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Беспроводная сеть" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Беспроводная связь" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Отсек для родительского модуля (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Установленный модуль (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Установленное устройство (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Установленное устройство (имя)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Мастер (удостоверение личности)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Мастер (имя)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Арендатор (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Арендатор (подстрока)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Нерасторгнутый" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Панель питания (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3073,13 +3424,13 @@ msgstr "Панель питания (ID)" msgid "Tags" msgstr "Теги" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3093,168 +3444,114 @@ msgstr "" "Поддерживаются алфавитно-цифровые диапазоны. (Должно совпадать с количеством" " создаваемых имен.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Группа" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Имя контактного лица" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Контактный телефон" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "Контактный адрес электронной почты" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Часовой пояс" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Роль" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Серийный номер" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Инвентарный номер" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Производитель" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Форм-фактор" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Ширина" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Высота (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Единицы по убыванию" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Наружная ширина" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Внешняя глубина" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Внешний блок" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Глубина крепления" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3262,31 +3559,127 @@ msgstr "Глубина крепления" msgid "Weight" msgstr "Вес" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Максимальный вес" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Единица веса" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Тип стойки" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Внешние размеры" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Габариты" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Нумерация" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Роль" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Серийный номер" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Инвентарный номер" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Воздушный поток" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3296,158 +3689,132 @@ msgstr "Единица веса" msgid "Rack" msgstr "Стойка" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" -msgstr "Аппаратное обеспечение" - -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Производитель" +msgstr "Аппаратное обеспечение" -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Платформа по умолчанию" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Номер детали" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Высота U" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Исключить из использования" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Воздушный поток" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Тип устройства" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Шасси" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "Роль виртуальной машины" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Шаблон конфигурации" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Тип устройства" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Роль устройства" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Платформа" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3458,7 +3825,7 @@ msgstr "Платформа" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3466,7 +3833,7 @@ msgstr "Платформа" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3474,7 +3841,7 @@ msgstr "Платформа" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3484,23 +3851,23 @@ msgstr "Платформа" msgid "Device" msgstr "Устройство" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Конфигурация" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3509,7 +3876,7 @@ msgstr "Тип модуля" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3518,141 +3885,142 @@ msgstr "Тип модуля" msgid "Label" msgstr "Этикетка" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Длина" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Единица длины" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Домен" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Панель питания" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Снабжение" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Фаза" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Напряжение" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Сила тока" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Максимальное использование" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Максимальное потребление" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Максимальная потребляемая мощность (Вт)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Выделенная мощность" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Распределенная потребляемая мощность (Вт)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Порт питания" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Фаза электропитания" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Только управление" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "Режим PoE" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "Тип PoE" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Роль беспроводной связи" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Модуль" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Виртуальные контексты" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Скорость" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3666,292 +4034,297 @@ msgstr "Скорость" msgid "Mode" msgstr "Режим" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Группа VLAN" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN без тегов" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLAN с тегами" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Беспроводная группа LAN" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Беспроводные LANы" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Адресация" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Операция" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Связанные интерфейсы" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "Коммутация 802.1Q" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "Для назначения VLAN необходимо указать режим интерфейса" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "Интерфейсу доступа нельзя назначать VLAN с тегами." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Название родительского региона" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Имя родительской группы сайтов" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Назначенный регион" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Назначенная группа" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "доступные опции" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Назначенное место" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Родительская локация" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Локация не найдена." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Имя назначенного арендатора" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Название назначенной роли" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Производитель этого типа стоек" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Тип стойки" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "Позиция с наименьшим юнитом в стойке" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Ширина от рельса до рельса (в дюймах)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Единица измерения внешних размеров" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Единица измерения веса стойки" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Имя назначенного арендатора" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Название назначенной роли" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Направление воздушного потока" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Родительское место" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Локация стойки (если есть)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Единицы" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Список отдельных номеров объектов, разделенных запятыми" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Производитель, выпускающий этот тип устройства" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Платформа по умолчанию для устройств этого типа (опционально)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Вес устройства" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Единица измерения веса устройства" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Вес модуля" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Единица измерения веса модуля" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Ограничьте назначение платформ этому производителю" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Назначенная роль" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Производитель типа устройства" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Модель типа устройства" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Назначенная платформа" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Виртуальное шасси" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Кластер" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Кластер виртуализации" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Назначенная локация (если есть)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Назначенная стойка (если есть)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Лицевая сторона" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Сторона монтажа в стойке" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Родительское устройство (для дочерних устройств)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Отсек для устройств" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Отсек для устройств, в котором установлено данное устройство (для детских " "устройств)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Направление воздушного потока" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Устройство, в котором установлен данный модуль" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Отсек для модулей" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "Отсек для модулей, в котором установлен данный модуль" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Репликация компонентов" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3959,236 +4332,236 @@ msgstr "" "Автоматическое заполнение компонентов, связанных с этим типом модуля " "(включено по умолчанию)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Принять компоненты" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Используйте уже существующие компоненты" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Тип порта" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Скорость порта в бит/с" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Тип розетки" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Локальный порт питания, питающий эту розетку" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Электрическая фаза (для трехфазных цепей)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Родительский интерфейс" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Мостовой интерфейс" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Lag" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Родительский интерфейс LAG" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Виртуальные контексты устройств(VDCs)" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "Имена VDC разделены запятыми и заключены в двойные кавычки. Пример:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Физическая среда" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Двухуровневый" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Режим Poe" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Тип Poe" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "Рабочий режим IEEE 802.1Q (для интерфейсов L2)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Назначенный VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Роль Rf" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Роль беспроводной сети (точка доступа/станция)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "В ПОСТОЯННОГО ТОКА {vdc} не присвоено устройству {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Задний порт" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Соответствующий задний порт" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Классификация физических сред" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Установленное устройство" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Дочернее устройство, установленное в этом отсеке" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Дочернее устройство не найдено." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Предмет родительского инвентаря" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Тип компонента" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Тип компонента" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Имя компонента" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Имя компонента" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Компонент не найден: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Устройство на стороне А" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Имя устройства" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Сторона типа А" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Тип точки подключения" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Название стороны А" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Название точки подключения" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Устройство на стороне B" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Тип стороны B" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Название стороны B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Состояние подключения" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Сторона {side_upper}: {device} {termination_object} уже подключен" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} боковое завершение не найдено: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Мастер" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Мастер-устройство" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Имя родительского сайта" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Панель питания в восходящем направлении" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Основное или резервное" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Тип питания (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Однофазный или трехфазный" @@ -4209,7 +4582,7 @@ msgstr "" "родительское устройство/виртуальная машина интерфейса, или они должны быть " "глобальными" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4217,18 +4590,27 @@ msgstr "" "Невозможно установить модуль со значениями-заполнителями в модульном отсеке " "без определенного положения." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Невозможно установить модуль с указанами значениями на уровне {level}, но " +"переданы значения {tokens}." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "" "Невозможно принять {model} {name} поскольку оно уже принадлежит модулю" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "A {model} названный {name} уже существует" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4237,7 +4619,7 @@ msgstr "A {model} названный {name} уже существует" msgid "Power Panel" msgstr "Панель питания" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4247,15 +4629,15 @@ msgstr "Подача питания" msgid "Side" msgstr "Сторона" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Статус устройства" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Родительский регион" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4263,62 +4645,67 @@ msgstr "Родительский регион" msgid "Parent group" msgstr "Родительская группа" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Объект" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Тип стойки" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Функция" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Изображения" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Компоненты" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Роль подустройства" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Модель" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Имеет IP-адрес OOB" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Элемент виртуального шасси" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Имеет контексты виртуальных устройств" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Кластерная группа" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Кабельный" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Занятый" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4330,43 +4717,43 @@ msgstr "Занятый" msgid "Connection" msgstr "Подключение" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Вид" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Только менеджмент" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "Глобальное уникальное имя" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Беспроводной канал" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Частота канала (МГц)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Ширина канала (МГц)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Мощность передачи (дБм)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4376,7 +4763,7 @@ msgstr "Мощность передачи (дБм)" msgid "Cable" msgstr "Кабель" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Обнаружено" @@ -4385,28 +4772,31 @@ msgstr "Обнаружено" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Виртуальный элемент шасси уже находится на месте {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Контактная информация" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Роль стойки" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Управление запасами" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Подстрока" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Внешние размеры" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Выберите заранее определенный тип стойки или задайте физические " +"характеристики ниже." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Габариты" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Управление запасами" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4414,92 +4804,69 @@ msgstr "" "Список числовых идентификаторов, разделенных запятыми. Диапазон можно " "указать с помощью дефиса." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Резервирование" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Подстрока" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Шасси" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Роль устройства" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "Устройство с наименьшим номером, занимаемое устройством" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "Положение в виртуальном корпусе этого устройства определяется по" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Приоритет" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "Приоритет устройства в виртуальном шасси" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "Автоматическое заполнение компонентов, связанных с этим типом модуля" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "Максимальная длина 32767 (любая единица измерения)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Характеристики" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Шаблон консольного порта" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Шаблон порта консольного сервера" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Шаблон переднего порта" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Шаблон интерфейса" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Шаблон розетки" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Шаблон порта питания" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Шаблон заднего порта" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4510,7 +4877,7 @@ msgstr "Шаблон заднего порта" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4519,7 +4886,7 @@ msgstr "Шаблон заднего порта" msgid "Interface" msgstr "Интерфейс" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4527,14 +4894,14 @@ msgstr "Интерфейс" msgid "Console Port" msgstr "Консольный порт" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Порт консольного сервера" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4545,8 +4912,8 @@ msgstr "Порт консольного сервера" msgid "Front Port" msgstr "Передний порт" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4558,36 +4925,36 @@ msgstr "Передний порт" msgid "Rear Port" msgstr "Задний порт" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Порт питания" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Розетка питания" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Назначение компонентов" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "Инвентарный номер можно присвоить только одному компоненту." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "Интерфейс LAG" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Дочернее устройство" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4595,41 +4962,41 @@ msgstr "" "Сначала необходимо создать дочерние устройства и назначить их сайту и стойке" " родительского устройства." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Консольный порт" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Порт консольного сервера" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Передний порт" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Розетка питания" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Комплектующие" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Роли комплектующих" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "Основной IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "Основной IPv6" @@ -4693,7 +5060,7 @@ msgstr "" "соответствовать выбранному количеству положений задних портов " "({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4719,7 +5086,7 @@ msgstr "Должность должна быть указана для перв #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr " Метка" @@ -4847,138 +5214,138 @@ msgid "" msgstr "" "Шаблон компонента должен быть связан с типом устройства или типом модуля." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "шаблон консольного порта" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "шаблоны консольных портов" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "шаблон порта консольного сервера" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "шаблоны портов консольного сервера" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "максимальное потребление" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "выделенное потребление" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "шаблон порта питания" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "шаблоны портов питания" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "" "Выделенная мощность не может превышать максимальную ({maximum_draw}Вт)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "фаза электропитания" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Фаза (для трехфазных)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "шаблон розетки" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "шаблоны розеток" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Родительский порт питания ({power_port}) должно принадлежать к тому же типу " "устройства" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Родительский порт питания ({power_port}) должен принадлежать к одному типу " "модулей" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "только управление" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "интерфейс моста" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "роль беспроводной сети" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "шаблон интерфейса" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "шаблоны интерфейсов" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Интерфейс не может быть подключен к самому себе." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Интерфейс моста ({bridge}) должно принадлежать к тому же типу устройства" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Интерфейс моста ({bridge}) должен принадлежать к одному типу модулей" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "положение заднего порта" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "шаблон переднего порта" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "шаблоны передних портов" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Задний порт ({name}) должно принадлежать к тому же типу устройства" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4987,48 +5354,48 @@ msgstr "" "Неверное положение заднего порта ({position}); задний порт {name} имеет " "только {count} позиции" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "позиция" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "шаблон заднего порта" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "шаблоны задних портов" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "позиция" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Идентификатор, на который следует ссылаться при переименовании установленных" " компонентов" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "шаблон модульного отсека" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "шаблоны модульных отсеков" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "шаблон отсека для устройств" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "шаблоны отсеков для устройств" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5037,21 +5404,21 @@ msgstr "" "Роль подустройства типа устройства ({device_type}) должно быть установлено " "значение «родительский», чтобы разрешить отсеки для устройств." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "номер модели" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Номер модели, присвоенный производителем" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "шаблон инвентарного товара" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "шаблоны товаров инвентаря" @@ -5194,27 +5561,27 @@ msgstr "Заполнено выбранным каналом (если зада msgid "transmit power (dBm)" msgstr "мощность передачи (дБм)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "беспроводные LANs" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "VLAN без тегов" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "VLAN без тегов" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "интерфейс" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "интерфейсы" @@ -5229,7 +5596,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type} интерфейсы нельзя пометить как подключенные." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Интерфейс не может быть собственным родителем." @@ -5395,33 +5762,38 @@ msgstr "" "Количество позиций не может быть меньше количества сопоставленных передних " "портов ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "модульный отсек" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "отсеки для модулей" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "Отсек для модулей не может принадлежать установленному в нем модулю." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "отсек для устройств" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "отсеки для устройств" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" "Этот тип устройства ({device_type}) не поддерживает отсеки для устройств." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Невозможно установить устройство в само по себе." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5429,60 +5801,61 @@ msgstr "" "Невозможно установить указанное устройство; устройство уже установлено в " "{bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "роль элемента инвентаря" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "роли элементов инвентаря" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "серийный номер" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "инвентарный номер" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Инвентарный номер, используемый для идентификации этого элемента" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "обнаружено" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Этот элемент был обнаружен автоматически" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "элемент инвентаря" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "элементы инвентаря" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Невозможно назначить себя родителем." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "" "Предмет родительского инвентаря не принадлежит одному и тому же устройству." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "Невозможно переместить инвентарь вместе с дочерней зависимостью" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "" "Невозможно присвоить инвентарный предмет компоненту на другом устройстве" @@ -5496,6 +5869,7 @@ msgid "manufacturers" msgstr "производители" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "модель" @@ -5511,7 +5885,7 @@ msgstr "номер модели" msgid "Discrete part number (optional)" msgstr "Дискретный номер детали (опционально)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "высота (U)" @@ -5545,7 +5919,8 @@ msgstr "" "устройств. Оставьте поле пустым, если этот тип устройства не относится ни к " "родительскому, ни к дочернему." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "воздушный поток" @@ -5592,153 +5967,153 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Типы дочерних устройств должны быть 0U." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "тип модуля" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "типы модулей" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Эта роль может быть назначена виртуальным машинам." -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "роль устройства" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "роли устройств" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "Опционально ограничьте эту платформу устройствами определенного " "производителя" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "платформа" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "платформы" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "Функция, которую выполняет это устройство" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Серийный номер корпуса, присвоенный производителем" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Уникальный тег, используемый для идентификации этого устройства" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "положение (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "лицевая сторона стойки" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "основной IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "основной IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "внеполосный IP-адрес" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "Позиция VC" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Положение виртуального шасси" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "Приоритет VC" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Приоритет выбора основного виртуального шасси" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "широта" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "GPS координата в десятичном формате (xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "долгота" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Имя устройства должно быть уникальным для каждого сайта." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "устройство" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "устройства" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Стойка {rack} не принадлежит сайту {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Локация {location} не принадлежит сайту {site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Стойка {rack} не принадлежит локации {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "Невозможно выбрать лицевую сторону стойки, не выбрав саму стойку." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "Невозможно выбрать позицию в стойке, не выбрав саму стойку." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "Позиция должна быть указана с шагом 0,5 единицы стойки." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "При определении лицевой стороны необходимо указать позицию в стойке." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "Тип устройства 0U ({device_type}) не может быть отнесено к стойке." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5746,7 +6121,7 @@ msgstr "" "Устройствам с указанным в типе свойством \"дочернее\" нельзя выбрать лицевую" " сторону стойки. Этот атрибут указывается для \"родительского\" устройства." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5754,7 +6129,7 @@ msgstr "" "Типы дочерних устройств нельзя отнести к позиции в стойке. Это атрибут " "родительского устройства." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5763,22 +6138,22 @@ msgstr "" "U{position} уже занят или в нем недостаточно места для размещения этого типа" " устройств: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} не является адресом IPv4." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Указанный IP-адрес ({ip}) не назначено этому устройству." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} не является адресом IPv6." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5787,26 +6162,26 @@ msgstr "" "Назначенная платформа ограничена {platform_manufacturer} типы устройств, но " "данный тип устройства относится к {devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Назначенный кластер принадлежит другому сайту ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Положение устройства, назначенного виртуальному шасси, должно быть " "определено." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "модуль" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "модули" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5815,21 +6190,21 @@ msgstr "" "Модуль должен быть установлен в модульном отсеке, принадлежащем назначенному" " устройству ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "Домен" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "виртуальное шасси" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "Выбранный мастер ({master}) не назначено этому виртуальному шасси." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5838,40 +6213,40 @@ msgstr "" "Невозможно удалить виртуальное шасси {self}. Существуют интерфейсы-члены, " "которые образуют межкорпусные интерфейсы LAG." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "идентификатор" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Цифровой идентификатор, уникальный для родительского устройства" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "комментарии" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "виртуальный контекст" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "виртуальные контексты" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} не является IPV{family} адрес." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "Основной IP-адрес должен принадлежать интерфейсу на назначенном устройстве." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "вес" @@ -5949,94 +6324,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "Напряжение питания переменного тока не может быть отрицательным" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "назначение стойки" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "назначение стоек" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "идентификатор объекта" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Локально назначенный идентификатор" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Функциональная роль" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Инвентарный номер, используемый для идентификации этой стойки" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "ширина" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Ширина от рельса до рельса" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Высота в юнитах стойки" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "начальный юнит" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Начальный юнит для стойки" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "единицы по убыванию" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Единицы нумеруются сверху вниз" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "внешняя ширина" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Наружный размер стойки (ширина)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "внешняя глубина" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Внешний размер стойки (глубина)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "внешний юнит" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "максимальный вес" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Максимальная грузоподъемность стойки" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "глубина монтажа" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6045,29 +6385,76 @@ msgstr "" "четырехстоечных стоек это расстояние между передними и задними " "направляющими." -#: netbox/dcim/models/racks.py:221 -msgid "rack" -msgstr "стойка" +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "максимальный вес" -#: netbox/dcim/models/racks.py:222 -msgid "racks" -msgstr "стойки" +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Максимальная грузоподъемность стойки" -#: netbox/dcim/models/racks.py:237 -#, python-brace-format -msgid "Assigned location must belong to parent site ({site})." -msgstr "Назначенная локация должна принадлежать родительскому сайту ({site})." +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "форм-фактор" -#: netbox/dcim/models/racks.py:241 +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "тип стойки" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "типы стоек" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 msgid "Must specify a unit when setting an outer width/depth" msgstr "" "При настройке внешней ширины/глубины необходимо указать единицу измерения" -#: netbox/dcim/models/racks.py:245 +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 msgid "Must specify a unit when setting a maximum weight" msgstr "При установке максимального веса необходимо указать единицу измерения" -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "назначение стойки" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "назначение стоек" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "идентификатор объекта" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Локально назначенный идентификатор" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Функциональная роль" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Инвентарный номер, используемый для идентификации этой стойки" + +#: netbox/dcim/models/racks.py:359 +msgid "rack" +msgstr "стойка" + +#: netbox/dcim/models/racks.py:360 +msgid "racks" +msgstr "стойки" + +#: netbox/dcim/models/racks.py:375 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "Назначенная локация должна принадлежать родительскому сайту ({site})." + +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6076,7 +6463,7 @@ msgstr "" "Стойка должна иметь высоту не менее {min_height}чтобы разместить, " "установленные в настоящее время устройства." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6085,30 +6472,30 @@ msgstr "" "Нумерация стоек должна начинаться с {position} или меньше для размещения " "установленных в настоящее время устройств." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "Локация должна располагаться в том-же сайте, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "юниты" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "Резервирование стойки" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "Резервирование стоек" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "" "Неверные единицы измерения для стоек высотой{height}U по списку: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Следующие юниты уже зарезервированы: {unit_list}" @@ -6211,11 +6598,11 @@ msgstr "Точка подключения A" msgid "Termination B" msgstr "Точка подключения Б" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Устройство A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Устройство Б" @@ -6250,13 +6637,13 @@ msgid "Reachable" msgstr "Доступен" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Устройства" @@ -6266,17 +6653,17 @@ msgid "VMs" msgstr "Виртуальные машины" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Шаблон конфигурации" @@ -6284,22 +6671,22 @@ msgstr "Шаблон конфигурации" msgid "Site Group" msgstr "Группа сайтов" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP-адрес" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "Адрес IPv4" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "Адрес IPv6" @@ -6336,10 +6723,10 @@ msgstr "Порты питания" msgid "Power outlets" msgstr "Розетки питания" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6349,8 +6736,8 @@ msgstr "Розетки питания" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Интерфейсы" @@ -6376,8 +6763,8 @@ msgid "Module Bay" msgstr "Модульный отсек" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6386,30 +6773,30 @@ msgstr "Модульный отсек" msgid "Inventory Items" msgstr "Предметы инвентаря" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Цвет кабеля" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Связать узлы" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Отметить подключение" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Максимальная потребляемая мощность (Вт)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Выделенная мощность (Вт)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6418,12 +6805,12 @@ msgstr "Выделенная мощность (Вт)" msgid "IP Addresses" msgstr "IP-адреса" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Группы FHRP" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6434,52 +6821,52 @@ msgstr "Группы FHRP" msgid "Tunnel" msgstr "Туннель" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Только управление" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "Виртуальные контексты устройств(VDCs)" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Установленный модуль" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Серийный номер модуля" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Тег активов модуля" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Состояние модуля" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Компонент" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Предметы" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Типы устройств" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Типы модулей" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Платформы" @@ -6498,12 +6885,13 @@ msgid "U Height" msgstr "Высота U" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Инстансы" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6512,9 +6900,9 @@ msgstr "Инстансы" msgid "Console Ports" msgstr "Порты консоли" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6523,9 +6911,9 @@ msgstr "Порты консоли" msgid "Console Server Ports" msgstr "Порты консольного сервера" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6534,9 +6922,9 @@ msgstr "Порты консольного сервера" msgid "Power Ports" msgstr "Порты питания" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6545,9 +6933,9 @@ msgstr "Порты питания" msgid "Power Outlets" msgstr "Розетки питания" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6555,9 +6943,9 @@ msgstr "Розетки питания" msgid "Front Ports" msgstr "Фронтальные порты" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6566,23 +6954,26 @@ msgstr "Фронтальные порты" msgid "Rear Ports" msgstr "Задние порты" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Отсеки для устройств" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Отсеки для модулей" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Источники питания" @@ -6595,41 +6986,45 @@ msgstr "Максимальное использование" msgid "Available Power (VA)" msgstr "Доступная мощность (ВА)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Стойки" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Высота" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Пространство" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Внешняя ширина" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Внешняя глубина" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Максимальный вес" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Пространство" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Сайты" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "" "В тестовом примере должно быть установлено значение peer_termination_type" @@ -6639,77 +7034,77 @@ msgstr "" msgid "Disconnected {count} {type}" msgstr "Отключен {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Резервирование" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Устройства без стоек" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Контекст конфигурации" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Конфигурация рендера" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Во время рендеринга шаблона произошла ошибка: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Виртуальные машины" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Установлено устройство {device} в отсек {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Удалено устройство {device} из отсека {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Потомки" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Добавлен участник {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Невозможно удалить главное устройство {device} из виртуального шасси." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "{device} удалено из виртуального шасси {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Неизвестный связанный объект (ы): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "Изменение типа настраиваемых полей не поддерживается." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "Для этого сценария планирование отключено." @@ -6758,7 +7153,7 @@ msgid "Multiple objects" msgstr "Несколько объектов" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Инвалид" @@ -6793,7 +7188,7 @@ msgstr "Нет" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Ссылка" @@ -6813,65 +7208,56 @@ msgstr "В алфавитном порядке (А-Я)" msgid "Alphabetical (Z-A)" msgstr "В обратном алфавитном порядке (Я-А)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Обновлено" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Удалено" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Информация" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Успех" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Предупреждение" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Опасность" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Отладка" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "По умолчанию" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Неудача" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Ежечасно" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 часов" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Ежедневно" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Еженедельно" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 дней" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6879,18 +7265,16 @@ msgstr "30 дней" msgid "Create" msgstr "Создайте" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Обновить" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6901,81 +7285,85 @@ msgstr "Обновить" msgid "Delete" msgstr "Удалить" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Синий" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Темно-синий" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Фиолетовый" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Розовый" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Красный" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "Оранжевый" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Желтый" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Зелёный" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Cине-зеленый" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Голубой" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Серый" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Черный" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Белый" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Вебхук" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Сценарий" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Уведомление" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7052,59 +7440,59 @@ msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "" "Неверный формат. Фильтры объектов необходимо передавать в виде словаря." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Список объектов" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Отобразите произвольный список объектов." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Количество отображаемых объектов по умолчанию" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "Неверный формат. Параметры URL должны быть переданы в виде словаря." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS-канал" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Вставьте RSS-канал с внешнего веб-сайта." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "URL-адрес ленты" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Максимальное количество отображаемых объектов" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Как долго хранить кэшированный контент (в секундах)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Закладки" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Покажите свои личные закладки" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Неизвестный тип действия для правила события: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Невозможно импортировать конвейер событий {name} ошибка: {error}" @@ -7113,212 +7501,221 @@ msgstr "Невозможно импортировать конвейер соб msgid "Script module (ID)" msgstr "Модуль сценария (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Файл данных (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Группа (название)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Тип кластера" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Тип кластера (подстрока)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Группы арендаторов" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Группа арендаторов (подстрока)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Тег" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Тег (подстрока)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Имеет локальные контекстные данные конфигурации" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Имя пользователя" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Название группы" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Требуется" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Должно быть уникальным" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "Видимый пользовательский интерфейс" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "Редактируемый UI" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Можно клонировать" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Минимальное значение" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Максимальное значение" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Регулярное выражение валидации" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Поведение" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Новое окно" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Класс кнопки" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "Тип MIME" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Расширение файла" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "В качестве вложения" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Общий" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "Метод HTTP" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "URL-адрес полезной нагрузки" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "Проверка SSL" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Секрет" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "Путь к файлу CA" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "При создании" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "При обновлении" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "При удалении" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "При начале работы" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "По окончании работы" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Типы событий" -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Активен" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Типы объектов" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Один или несколько назначенных типов объектов" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Тип данных поля (например, текст, целое число и т. д.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Тип объекта" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "" "Тип объекта (для полей объектов или полей, состоящих из нескольких объектов)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Набор для выбора" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Набор вариантов (для полей выбора)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Отображается ли настраиваемое поле в пользовательском интерфейсе" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "" "Доступно ли редактирование настраиваемого поля в пользовательском интерфейсе" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "Базовый набор стандартных вариантов для использования (если есть)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7327,207 +7724,203 @@ msgstr "" "дополнительными метками, разделенными двоеточием: «Choice1:First Choice, " "Choice2:Second Choice»" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "класс кнопок" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "Класс первой ссылки в группе будет использоваться для кнопки раскрывающегося" " списка" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Тип(ы) события(-ий), при котором будет запущено это правило" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Объект действия" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Имя веб-хука или скрипт в виде пунктирного пути module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Вебхук {name} не найден" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Сценарий {name} не найден" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Назначенный тип объекта" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "Классификация записей" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Пользователи" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "" +"Имена пользователей, разделенные запятыми и заключенные в двойные кавычки" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Группы" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Имена групп, разделенные запятыми и заключенные в двойные кавычки" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Тип связанного объекта" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Тип поля" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Варианты" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Данные" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Файл данных" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Типы контента" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "Тип содержимого HTTP" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "События" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "Тип события" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "Тип действия" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Создание объектов" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Обновления объектов" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Удаление объектов" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Задание начинается" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Прекращение работы" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Тип объекта с тегами" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Разрешенный тип объекта" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Регионы" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Группы сайтов" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Локации" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Типы устройств" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Роли" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Типы кластеров" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Кластерные группы" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Кластеры" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Группы арендаторов" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "После" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "До" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Время" - -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Действие" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Тип(ы) объекта(-ов), в котором есть это настраиваемое поле" + +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Значение по умолчанию" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "" "Тип связанного объекта (только для полей объектов/нескольких объектов)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Фильтр связанных объектов" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Укажите параметры запроса в виде объекта JSON." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Настраиваемое Поле" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Поведение" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Ценности" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7535,7 +7928,7 @@ msgstr "" "Тип данных, хранящихся в этом поле. Для полей объектов или полей, состоящих " "из нескольких объектов, выберите соответствующий тип объекта ниже." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7543,7 +7936,11 @@ msgstr "" "Это будет отображаться в виде справочного текста для поля формы. " "Поддерживается функция Markdown." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Связанный объект" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7551,16 +7948,16 @@ msgstr "" "Введите по одному варианту в строке. Для каждого варианта можно указать " "дополнительную метку, добавив ее двоеточием. Пример:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Настраиваемая Ссылка" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Шаблоны" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7569,62 +7966,66 @@ msgstr "" "Код Jinja2 шаблона для текста ссылки. Ссылайтесь на объект как {example}. " "Ссылки с пустым текстом отображены не будут." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "" "Код Jinja2 шаблона для URL-адреса. Ссылайтесь на объект как {example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Код шаблона" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Шаблон экспорта" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Рендеринг" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "" "Содержимое шаблона заполняется из удаленного источника, выбранного ниже." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Необходимо указать локальное содержимое или файл данных" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Сохраненный фильтр" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "В группе уведомлений укажите хотя бы одного пользователя или группу." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "HTTP-запрос" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Выбор действия" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Введите условия в JSON формат." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7632,55 +8033,33 @@ msgstr "" "Введите параметры для перехода к действию в JSON формат." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Правило мероприятия" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "условия" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Творения" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Обновления" - -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Удаления" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Триггеры" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Выполнение заданий" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Группа уведомлений" -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Арендаторы" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Задание" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "Данные заполняются из удаленного источника, выбранного ниже." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Необходимо указать локальные данные или файл данных" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Контент" @@ -7727,49 +8106,25 @@ msgstr "Запланируйте выполнение скрипта на зад msgid "Interval at which this script is re-run (in minutes)" msgstr "Интервал повторного запуска этого скрипта (в минутах)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Индексаторы не найдены!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "время" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "имя пользователя" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "идентификатор запроса" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "действие" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "данные перед изменением" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Изменения в базе данных были автоматически отменены." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "данные после изменений" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Скрипт прерван с ошибкой: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "изменение объекта" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Возникло исключение: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "изменения объекта" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Изменения в базе данных отменены из-за ошибки." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "" -"Ведение журнала изменений не поддерживается для этого типа объектов " -"({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Индексаторы не найдены!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7821,34 +8176,34 @@ msgstr "шаблон конфигурации" msgid "config templates" msgstr "шаблоны конфигураций" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Объекты, к которым относится это поле." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Тип данных, которые содержит это настраиваемое поле" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "Тип объекта NetBox, которому соответствует это поле (для полей объектов)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Имя внутреннего поля" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Допустимы только буквенно-цифровые символы и символы подчеркивания." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "" "В именах настраиваемых полей недопустимо использовать два подчеркивания " "подряд (зарезервировано)." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7856,31 +8211,39 @@ msgstr "" "Имя поля, отображаемое пользователям (если оно не указано, будет " "использовано имя поля)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "имя группы" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Настраиваемые поля в одной группе будут отображаться вместе" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "Требуется" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Если это правда, это поле обязательно для создания новых объектов или " -"редактирования существующего объекта." +"Это поле необходимо для создания новых объектов или редактирования " +"существующего объекта." + +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "должен быть уникальным" -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "Значение этого поля должно быть уникальным для назначенного объекта" + +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "вес поиска" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7888,11 +8251,11 @@ msgstr "" "Взвешивание для поиска. Более низкие значения считаются более важными. Поля " "с нулевым весом поиска будут проигнорированы." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "логика фильтрации" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7900,11 +8263,11 @@ msgstr "" "Loose соответствует любому экземпляру заданной строки; точно соответствует " "всему полю." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "по умолчанию" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7912,35 +8275,43 @@ msgstr "" "Значение по умолчанию для поля (должно быть JSON-значением). Заключайте " "строки в двойные кавычки (например, «Foo»)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Отфильтруйте варианты выбора объектов, используя dict query_params (должно " +"быть значение JSON). Заключайте строки в двойные кавычки (например, «Foo»)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "вес дисплея" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "Поля с большим весом отображаются в форме ниже." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "минимальное значение" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Минимальное допустимое значение (для числовых полей)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "максимальное значение" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Максимально допустимое значение (для числовых полей)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "регулярное выражение валидации" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7951,280 +8322,250 @@ msgstr "" " ^ и $ для принудительного сопоставления всей строки. Например, ^ " "[A-Z]{3}$ ограничит значения ровно тремя заглавными буквами." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "набор для выбора" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Указывает, отображается ли настраиваемое поле в пользовательском интерфейсе" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Указывает, можно ли редактировать значение настраиваемого поля в " "пользовательском интерфейсе" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "клонируется" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Реплицируйте это значение при клонировании объектов" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "настраиваемое поле" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "настраиваемые поля" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Неверное значение по умолчанию»{value}«: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "Минимальное значение может быть установлено только для числовых полей" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "" "Максимальное значение может быть установлено только для числовых полей" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Проверка регулярных выражений поддерживается только для текстовых полей и " "полей URL" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "Уникальность не может быть обеспечена для булевых полей" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "В полях выбора должен быть указан набор вариантов." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Варианты могут быть заданы только в полях выбора." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Поля объекта должны определять тип объекта." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} поля не могут определять тип объекта." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "Фильтр связанных объектов можно определить только для полей объектов." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Фильтр должен быть определен как словарь, сопоставляющий атрибуты со " +"значениями." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Истина" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Ложь" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "" "Значения должны соответствовать этому регулярному вырагу: " "{regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "Значение должно быть строкой." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "Значение должно совпадать с регулярным выраженностью '{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "Значение должно быть целым числом." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "Значение должно быть не менее {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "Значение не должно превышать {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "Значение должно быть десятичным." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "Значение должно быть истинным или ложным." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Значения дат должны быть в формате ISO 8601 (YYYY-MM-DD)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Значения даты и времени должны быть в формате ISO 8601 (YYYY-MM-DD " "HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Неверный выбор ({value}2) для выбора набора {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Неверный выбор (ы){value}2) для выбора набора {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "Значение должно быть идентификатором объекта, а не {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "Значение должно быть списком идентификаторов объектов, а не {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Обнаружен неправильный идентификатор объекта: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Обязательное поле не может быть пустым." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Базовый набор предопределенных вариантов (опционально)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Варианты автоматически упорядочены в алфавитном порядке" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "набор вариантов для настраиваемых полей" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "наборы вариантов для настраиваемых полей" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Должен определить базовые или дополнительные варианты." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "макет" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "конфигурация" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "панель управления" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "панели управления" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "типы объектов" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Объект (объекты), к которым применяется данное правило." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "при создании" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Срабатывает при создании совпадающего объекта." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "при обновлении" +msgid "The types of event which will trigger this rule." +msgstr "Типы событий, которые повлекут за собой действие этого правила." -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Срабатывает при обновлении совпадающего объекта." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "при удалении" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Срабатывает при удалении совпадающего объекта." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "при начале работы" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Срабатывает при запуске задания для совпадающего объекта." - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "по окончании работы" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Срабатывает, когда задание на совпадающий объект завершается." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "условия" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Набор условий, определяющих, будет ли создано событие." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "тип действия" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Дополнительные данные для передачи объекту действия" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "правило события" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "правила мероприятия" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Необходимо выбрать хотя бы один тип события: создание, обновление, удаление," -" начало задания и/или завершение задания." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8234,7 +8575,7 @@ msgstr "" "вызове веб-хука. Обработка шаблона Jinja2 поддерживается в том же контексте," " что и тело запроса." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available здесь." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "дополнительные заголовки" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8260,11 +8601,11 @@ msgstr "" "быть определены в формате Название: Значение. Обработка шаблона" " Jinja2 поддерживается в том же контексте, что и тело запроса (см. ниже)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "шаблон тела" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8276,11 +8617,11 @@ msgstr "" "event, model, timestamp, " "username, request_id, и data." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "секретный" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8291,15 +8632,15 @@ msgstr "" " нагрузки в формате HMAC, в котором в качестве ключа используется секрет. " "Секрет не передается в запросе." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "Включите проверку сертификата SSL. Отключайте с осторожностью!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "Путь к файлу CA" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8307,63 +8648,63 @@ msgstr "" "Конкретный файл сертификата CA, используемый для проверки SSL. Оставьте поле" " пустым, чтобы использовать системные настройки по умолчанию." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "вебхук" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "вебхуки" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "Не указывайте файл сертификата CA, если проверка SSL отключена." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Тип (ы) объекта, к которому относится эта ссылка." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "текст ссылки" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Код Jinja2 шаблона для текста ссылки" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL-адрес ссылки" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Код Jinja2 шаблона для URL-адреса" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Ссылки с той же группой появятся в выпадающем меню" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "новое окно" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Принудительно открыть ссылку в новом окне" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "настраиваемая ссылка" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "настраиваемые ссылки" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Тип (типы) объектов, к которым применим этот шаблон." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8371,111 +8712,158 @@ msgstr "" "Код Jinja2 шаблона. Список экспортируемых объектов передается в виде " "контекстной переменной с именем queryset." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "По умолчанию текстовый/обычный; кодировка=utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "расширение файла" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Расширение для добавления к отображаемому имени файла" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "в качестве вложения" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Загрузить файл в виде вложения" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "шаблон экспорта" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "шаблоны экспорта" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "«{name}\"— зарезервированное имя. Пожалуйста, выберите другое имя." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Тип (типы) объектов, к которым применяется этот фильтр." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "общий" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "сохраненный фильтр" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "сохраненные фильтры" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Параметры фильтра должны храниться в виде словаря аргументов ключевых слов." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "высота изображения" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "ширина изображения" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "прикрепить изображение" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "прикрепленные изображения" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "Вложенные изображения нельзя присвоить этому типу объекта ({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "добрый" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "запись в журнале" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "записи в журнале" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Ведение журнала не поддерживается для этого типа объектов ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "закладка" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "закладки" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "Закладки нельзя присвоить этому типу объекта ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "читать" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "событие" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "уведомление" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "уведомления" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Объекты этого типа ({type}) не поддерживают уведомления." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "групп" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "пользователей" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "группа уведомлений" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "группы уведомлений" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "подписка" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "подписки" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "является исполняемым" @@ -8516,19 +8904,19 @@ msgstr "кэшированное значение" msgid "cached values" msgstr "кэшированные значения" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "ветка" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "ветки" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "поэтапное изменение" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "поэтапные изменения" @@ -8552,85 +8940,87 @@ msgstr "помеченный товар" msgid "tagged items" msgstr "помеченные товары" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Данные скрипта" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Параметры выполнения сценария" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Изменения в базе данных были автоматически отменены." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Скрипт прерван с ошибкой: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Возникло исключение: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Изменения в базе данных отменены из-за ошибки." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "Удаление предотвращается правилом защиты: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Отклонить" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Типы объектов" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Подтвердите уникальность" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Видимый" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Редактируемый" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Тип связанного объекта" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Набор для выбора" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Можно ли клонировать" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Минимальное значение" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Максимальное значение" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Валидации регулярным выражением" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Количество" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Упорядочить в алфавитном порядке" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Новое окно" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "В качестве вложения" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8640,63 +9030,54 @@ msgstr "В качестве вложения" msgid "Data File" msgstr "Файл данных" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Синхронизировано" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Изображение" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Размер (байты)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Прочтите" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "Валидация SSL" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Начало работы" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Завершение задания" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Типы событий" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Роли устройств" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Полное имя" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "Идентификатор запроса" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Комментарии (короткие)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Линия" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Уровень" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Сообщение" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Метод" @@ -8727,37 +9108,37 @@ msgstr "Правила валидации должны быть переданы msgid "Custom validation failed for {attribute}: {exception}" msgstr "Пользовательская проверка не удалась для {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Неверный атрибут»{name}\"по запросу" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Недопустимый атрибут \"{name}\" для {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Панель виджетов была сброшена." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Добавлен виджет: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Обновлен виджет: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Удален виджет: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Ошибка при удалении виджета: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "Невозможно запустить скрипт: процесс RQ не запущен." @@ -8800,10 +9181,6 @@ msgstr "SLAAC" msgid "Loopback" msgstr "Обратная петля" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Вторичный" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8829,19 +9206,19 @@ msgstr "Обычный текст" msgid "Invalid IP address format: {address}" msgstr "Неверный формат IP-адреса: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Цель импорта" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Цель импорта (имя)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Цель экспорта" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Цель экспорта (имя)" @@ -8906,16 +9283,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Префиксы, содержащие этот префикс или IP-адрес" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Длина маски" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "Номер VLAN (1-4094)" @@ -8935,23 +9312,23 @@ msgid "Parent prefix" msgstr "Родительский префикс" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Виртуальная машина (имя)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Виртуальная машина (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Интерфейс (имя)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "Интерфейс виртуальной машины (имя)" @@ -8979,19 +9356,19 @@ msgstr "Сервис (ID)" msgid "NAT inside IP address (ID)" msgstr "Внутренний NAT IP-адрес (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "IP-адрес (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP-адрес" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "Основной IPv4 (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "Основной IPv6 (ID)" @@ -9024,17 +9401,17 @@ msgstr "Требуется маска CIDR (например, /24)." msgid "Address pattern" msgstr "Шаблон адреса" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Обеспечить уникальное пространство" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Является приватным" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9047,20 +9424,20 @@ msgstr "Является приватным" msgid "RIR" msgstr "RIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Дата добавления" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN группа" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9069,49 +9446,49 @@ msgstr "VLAN группа" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Длина префикса" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Является пулом" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Считать полностью использованным" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "Назначение VLAN" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS-имя" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Протокол" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Идентификатор группы" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9123,156 +9500,142 @@ msgstr "Идентификатор группы" msgid "Authentication type" msgstr "Тип аутентификации" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Ключ аутентификации" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Аутентификация" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "Минимальный ID дочерней VLAN" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Максимальный ID дочерней VLAN" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Тип прицела" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "Диапазоны идентификаторов VLAN" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Область применения" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Сайт и группа" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Порты" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Импортируйте цели маршрута" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Экспортные цели маршрута" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "Назначенный RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "Группа VLAN (если есть)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Родительское устройство назначенного интерфейса (если есть)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Виртуальная машина" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "Родительская виртуальная машина назначенного интерфейса (если есть)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Назначенный интерфейс" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Является основным" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Сделайте этот IP-адрес основным для назначенного устройства" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Не указано устройство или виртуальная машина; невозможно установить в " "качестве основного IP-адреса" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "" "Интерфейс не указан; невозможно установить в качестве основного IP-адреса" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Тип авторизации" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Тип прицела (приложение и модель)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Минимальный ID дочерней VLAN (по умолчанию: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Максимальный ID дочерней VLAN (по умолчанию: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Назначенная VLAN группа" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "протокол IP" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Требуется, если не назначено виртуальной машине" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Требуется, если не назначено устройству" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} не назначено этому устройству/виртуальной машине." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Цели маршрута" @@ -9348,31 +9711,34 @@ msgstr "Назначено интерфейсу" msgid "DNS Name" msgstr "DNS-имя" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "VLAN ID" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Минимальный VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Содержит идентификатор VLAN" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Максимальный VID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "VLAN ID" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9443,11 +9809,16 @@ msgstr "Виртуальный IP-адрес" msgid "Assignment already exists" msgstr "Задание уже существует" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "Идентификаторы VLAN" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "Дочерние VLAN" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9455,33 +9826,33 @@ msgstr "" "Список одного или нескольких номеров портов, разделенных запятыми. Диапазон " "можно указать с помощью дефиса." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Шаблон Службы" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Порт(ы)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Служба" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Шаблон службы" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Из шаблона" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Настраиваемый" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9522,7 +9893,7 @@ msgstr "идентификатор группы" msgid "protocol" msgstr "протокол" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "тип аутентификации" @@ -9538,10 +9909,6 @@ msgstr "Группа FHRP" msgid "FHRP groups" msgstr "Группы FHRP" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "приоритет" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "Групповое назначение FHRP" @@ -9558,7 +9925,7 @@ msgstr "частного" msgid "IP space managed by this RIR is considered private" msgstr "IP-пространство, управляемое этим RIR, считается частным" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR's" @@ -9807,22 +10174,6 @@ msgid "" "A service must be associated with either a device or a virtual machine." msgstr "Служба должна быть связана с устройством или виртуальной машиной." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "минимальный VLAN ID" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Наименьший допустимый ID дочерней VLAN" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "максимальный VLAN ID" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Максимально допустимый ID дочерней VLAN" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "Группы VLAN" @@ -9835,39 +10186,40 @@ msgstr "Невозможно установить scope_type без scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Невозможно установить scope_id без scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Диапазоны не могут перекрываться." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" "Максимальное количество детских VID должно быть больше или равно " -"минимальному детскому VID" +"минимальному детскому VID ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "Конкретный сайт, которому назначена эта VLAN (если есть)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "Группа VLAN (опционально)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "Цифровой VLAN ID (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Рабочее состояние этой VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "Основная функция этой VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9876,12 +10228,12 @@ msgstr "" "VLAN назначена группе {group} (область применения: {scope}); также не может " "быть присвоено сайту {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" msgstr "" -"VID должен быть между {minimum} а также {maximum} для виртуальных локальных " -"сетей в группе {group}" +"VID должен быть в диапазонах {ranges} для виртуальных локальных сетей в " +"группе {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9899,8 +10251,8 @@ msgstr "создайте уникальное пространство" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Предотвращение дублирования префиксов/IP-адресов в этом VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF" @@ -9928,8 +10280,8 @@ msgstr "Количество сайтов" msgid "Provider Count" msgstr "Количество провайдеров" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Агрегаты" @@ -9938,21 +10290,21 @@ msgid "Added" msgstr "Добавлено" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Префиксы" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Использование" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "Диапазоны IP-адресов" @@ -9997,7 +10349,11 @@ msgstr "Назначенный объект" msgid "Scope Type" msgstr "Тип прицела" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "Диапазоны VID" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VID" @@ -10062,11 +10418,11 @@ msgstr "Интерфейсы устройств" msgid "VM Interfaces" msgstr "Интерфейсы виртуальных машин" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Это поле не может быть пустым." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10074,22 +10430,35 @@ msgstr "" "Значение должно быть передано напрямую (например, «foo»: 123); не " "используйте словарь или список." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} не является правильным выбором." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Неверный тип контента: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Неверное значение. Укажите тип контента как '.'." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "В форме должны быть указаны диапазоны (нижний, верхний)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Границы диапазона должны быть определены целыми числами." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} должен реализовать функцию get_view_name ()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Неверное разрешение {permission} для модели {model}" @@ -10353,13 +10722,13 @@ msgstr "" #: netbox/netbox/config/parameters.py:202 msgid "Job result retention" -msgstr "Сохранение результатов работы" +msgstr "Сохранение результатов задач" #: netbox/netbox/config/parameters.py:204 msgid "Days to retain job result history (set to zero for unlimited)" msgstr "" -"Количество дней для хранения истории результатов работы (нулевое значение не" -" ограничено)" +"Количество дней для хранения истории результатов задач (укажите 0 для " +"неограниченного хранения)" #: netbox/netbox/config/parameters.py:209 #: netbox/templates/core/inc/config_data.html:145 @@ -10419,47 +10788,52 @@ msgstr "Удалить теги" msgid "{class_name} must specify a model class." msgstr "{class_name} необходимо указать класс модели." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Неизвестное имя поля '{name}' в данных для настраиваемых полей." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Неверное значение для настраиваемого поля '{name}': {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Настраиваемое поле '{name}'должно иметь уникальное значение." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Отсутствует обязательное настраиваемое поле '{name}'." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Удаленный источник данных" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "путь к данным" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Путь к удаленному файлу (относительно корня источника данных)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "автоматическая синхронизация включена" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Включить автоматическую синхронизацию данных при обновлении файла данных" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "дата синхронизирована" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} должен реализовать метод sync_data ()." @@ -10473,217 +10847,230 @@ msgid "Site Groups" msgstr "Группы сайтов" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Роли стоек" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Возвышения" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Группы арендаторов" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Контактные группы" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Роли контактов" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Назначения контактов" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Роли стоек" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Возвышения" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Типы стоек" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Модули" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Виртуальные контексты" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Производители" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Компоненты устройства" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Роли предметов" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Подключения" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Кабели" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Беспроводные каналы" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Интерфейсные подключения" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Консольные подключения" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Подключения кабелей питания" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Группы WLAN" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Роли префиксов и VLAN" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "Диапазоны ASN" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "Группы VLAN" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Шаблоны Служб" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Службы" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Туннели" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Группы туннелей" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Окончание туннелей" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPN" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Соединения" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "Предложения IKE" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "Политики IKE" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "Предложения IPsec" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "Политики IPsec" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "Профили IPsec" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Виртуализация" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Виртуальные диски" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Типы кластеров" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Группы кластеров" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Типы каналов связи" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Группы каналов связей" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Групповые задания" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Точка подключения канала связи" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Провайдеры" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Аккаунты провайдеров" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Сети провайдеров" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Панели питания" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Конфигурации" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Контексты конфигурации" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Шаблоны конфигурации" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Настройка" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10696,114 +11083,108 @@ msgstr "Настройка" msgid "Custom Fields" msgstr "Настраиваемые Поля" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Варианты для Настраиваемых Полей" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Настраиваемые Ссылки" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Шаблоны экспорта" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Сохраненные фильтры" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Прикрепленные Изображения" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Операции" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Интеграции" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Источники данных" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Правила мероприятия" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Вебхуки" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Задачи" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Ведение журнала" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Группы уведомлений" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Записи в журнале" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Журнал изменений" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 -msgid "Admin" -msgstr "Администратор" - -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Пользователи" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Группы" +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 +msgid "Admin" +msgstr "Администратор" -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "Токены API" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Разрешения" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "система" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Плагины" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "История конфигурации" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Фоновые задачи" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Плагины" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10835,32 +11216,23 @@ msgstr "" "{template_extension} не является подклассом расширения " "Netbox.Plugins.Plugins.PluginstemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"Класс расширения шаблонов плагинов {template_extension} не определяет " -"действительную модель!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} должен быть экземпляром Netbox.plugins.pluginmenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} должен быть экземпляром Netbox.plugins.pluginmenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "" "{button} должен быть экземпляром кнопки Netbox.plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context должен быть словарём" @@ -10940,75 +11312,79 @@ msgstr "Невозможно добавить магазины в реестр msgid "Cannot delete stores from registry" msgstr "Невозможно удалить магазины из реестра" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "Чешский" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "Датский" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Немецкий" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Английский" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "Испанский" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "Французский" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "Итальянский" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Японский" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Голландский" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Польский" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "Португальский" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Русский" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Турецкий" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "украинский" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "Китайский" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Выбрать все" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Переключить все" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Переключить выпадающий список" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Ошибка" @@ -11060,24 +11436,24 @@ msgstr "Переименован(-о) {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Удален(-о) {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Журнал изменений" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "Журнал" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "Невозможно синхронизировать данные: не указан файл данных." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Синхронизированы данные для {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Синхронизирован(-о) {count} {object_type}" @@ -11087,7 +11463,7 @@ msgstr "Синхронизирован(-о) {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} должен реализовать get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11123,11 +11499,11 @@ msgstr "С вашим запросом возникла проблема. Обр msgid "The complete exception is provided below" msgstr "Полное исключение приведено ниже" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Версия для Python" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "Версия NetBox" @@ -11151,14 +11527,26 @@ msgstr "на GitHub" msgid "Home Page" msgstr "Домашняя страница" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Профиль" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Уведомления" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Подписки" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Настройки" @@ -11166,7 +11554,7 @@ msgstr "Настройки" msgid "Change Password" msgstr "Изменить пароль" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11191,7 +11579,7 @@ msgstr "Изменить пароль" msgid "Cancel" msgstr "Отменить" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11265,7 +11653,7 @@ msgid "Superuser" msgstr "Суперпользователь" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Персонал" @@ -11280,19 +11668,19 @@ msgstr "Назначенные группы" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11313,7 +11701,7 @@ msgstr "Мои токены API" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Токен" @@ -11334,32 +11722,41 @@ msgstr "Добавить токен" msgid "Home" msgstr "Главная" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "Мотив NetBox" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "Логотип NetBox" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" -msgstr "Документы" +msgstr "Документация" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "Документация по REST API" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "API GraphQL" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Поддержка NetBox Labs" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Исходный код" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Сообщество" @@ -11371,6 +11768,11 @@ msgstr "Дата установки" msgid "Termination Date" msgstr "Дата отключения" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Назначить группу" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Прерывания цепей Swap" @@ -11389,6 +11791,14 @@ msgstr "Сторона" msgid "Z side" msgstr "Сторона Z" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Назначить цепь" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Назначение группы цепей" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Добавить канал связи" @@ -11413,7 +11823,7 @@ msgstr "Добавить" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11534,13 +11944,10 @@ msgstr "Новое значение" msgid "Changed" msgstr "Изменено" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Последнее обновление" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Размер" @@ -11622,25 +12029,120 @@ msgstr "Пользовательские предпочтения" msgid "Job retention" msgstr "Сохранение рабочих мест" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" -msgstr "Задание" +msgstr "Задача" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Создано" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Планирование" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "каждый %(interval)s протокол" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Изменить" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Разница" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Предыдущий" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Следующий" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Объект создан" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Объект удален" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Без изменений" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Данные перед изменением" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Предупреждение: сравнение неатомарного изменения с предыдущей записью " +"изменений" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Данные после изменений" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Показать все %(count)s Изменения" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Хранение журнала изменений" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "дни" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Бессрочно" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Не установлено" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Обзор" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Установить" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Сведения о плагине" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Резюме" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Лицензия" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "История версий" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Инструкции по локальной установке" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11652,8 +12154,8 @@ msgstr "Фоновые очереди" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11709,10 +12211,10 @@ msgstr "задачи в " #: netbox/templates/core/rq_task_list.html:33 msgid "Queued Jobs" -msgstr "Задания в очереди" +msgstr "Задачи в очереди" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11735,15 +12237,15 @@ msgstr "Очереди" #: netbox/templates/core/rq_worker.html:63 msgid "Curent Job" -msgstr "Текущая работа" +msgstr "Текущая задача" #: netbox/templates/core/rq_worker.html:67 msgid "Successful job count" -msgstr "Количество успешных заданий" +msgstr "Количество успешных задач" #: netbox/templates/core/rq_worker.html:71 msgid "Failed job count" -msgstr "Количество невыполненных заданий" +msgstr "Количество неуспешных задач" #: netbox/templates/core/rq_worker.html:75 msgid "Total working time" @@ -11772,39 +12274,43 @@ msgstr "Экспорт" msgid "System Status" msgstr "Состояние системы" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "Релиз NetBox" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Версия для Django" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "Версия PostgreSQL" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Имя базы данных" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Размер базы данных" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Недоступно" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "Рабочие процессы RQ" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "очередь по умолчанию" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Системное время" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Текущая конфигурация" @@ -11902,14 +12408,15 @@ msgstr "Не в стойке" msgid "GPS Coordinates" msgstr "Координаты GPS" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Нанесите на карту" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Карта" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Тег актива" @@ -11929,19 +12436,19 @@ msgstr "Управление" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT для" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "КОТ" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Использование энергии" @@ -11969,7 +12476,7 @@ msgid "Leg" msgstr "Ножка" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Добавить службу" @@ -12230,6 +12737,22 @@ msgstr "Чисто" msgid "Clear All" msgstr "Очистить все" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Глубина монтажа" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Начальный юнит" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Единицы по убыванию" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Высота стойки" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Добавить дочерний интерфейс" @@ -12292,8 +12815,8 @@ msgstr "Ширина канала" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12383,49 +12906,33 @@ msgstr "Максимальное потребление" msgid "Allocated Draw" msgstr "Выделенная мощность" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Использование пространства" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "по убыванию" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "по возрастанию" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Начальный юнит" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Глубина монтажа" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Вес стойки" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Максимальный вес" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Общий вес" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Изображения и лейблы" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Только изображения" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Только лейблы" @@ -12438,6 +12945,10 @@ msgstr "Добавить бронирование" msgid "View List" msgstr "Показать список" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Выберите вид стойки" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Сортировать по" @@ -12491,10 +13002,6 @@ msgstr "Время работы сайта" msgid "Physical Address" msgstr "Физический адрес" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Карта" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Адрес доставки" @@ -12535,7 +13042,7 @@ msgstr "Добавить нового участника" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Действия" @@ -12705,46 +13212,42 @@ msgid "Group Name" msgstr "Название группы" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Должен быть уникальным" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Клонируемый" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Значение по умолчанию" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Вес поиска" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Логика фильтрации" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Вес дисплея" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Видимый пользовательский интерфейс" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Редактируемый UI" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Правила валидации" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Минимальное значение" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Максимальное значение" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Регулярное выражение" @@ -12758,11 +13261,11 @@ msgstr "Класс кнопок" msgid "Assigned Models" msgstr "Назначенные модели" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Текст ссылки" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "URL-адрес ссылки" @@ -12787,6 +13290,14 @@ msgstr "" "Это изменение затрагивает только ваш панель управления и не повлияет " "на других пользователей." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "конфигурация виджета" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Закрыть виджет" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Добавить виджет" @@ -12819,13 +13330,9 @@ msgstr "Возникла проблема при загрузке RSS-канал msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Начало работы" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Завершение задания" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "условия" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12867,20 +13374,15 @@ msgstr "Результаты ожидаются" msgid "Journal Entry" msgstr "Запись в журнале" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Хранение журнала изменений" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "дни" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Группа уведомлений" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Бессрочно" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Ничего не назначено" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12894,54 +13396,6 @@ msgstr "Исходные контексты" msgid "New Journal Entry" msgstr "Новая запись в журнале" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Изменить" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Разница" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Предыдущий" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Следующий" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Объект создан" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Объект удален" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Без изменений" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Данные перед изменением" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Предупреждение: сравнение неатомарного изменения с предыдущей записью " -"изменений" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Данные после изменений" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Показать все %(count)s Изменения" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Отчет" @@ -12952,7 +13406,7 @@ msgstr "У вас нет разрешения на запуск скриптов #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Запустить скрипт" @@ -12965,27 +13419,27 @@ msgstr "Ошибка при загрузке скрипта" msgid "Script no longer exists in the source file." msgstr "Скрипт больше не существует в исходном файле." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Последний запуск" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Скрипт больше не присутствует в исходном файле" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Никогда" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Повторить" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Скрипты не найдены" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -13000,6 +13454,14 @@ msgstr "" msgid "Results" msgstr "Результаты" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Пороговое значение журнала" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Все" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Элементы с тэгом" @@ -13032,11 +13494,11 @@ msgstr "Тип содержимого HTTP" msgid "SSL Verification" msgstr "Проверка SSL" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Дополнительные заголовки" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Шаблон тела запроса" @@ -13113,6 +13575,10 @@ msgstr "Опции полей" msgid "Accessor" msgstr "Аксессор" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "выбор" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Стоимость импорта" @@ -13280,6 +13746,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "В результате этого действия следующие объекты будут удалены." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "тому назад" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Нет непрочитанных уведомлений" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Все уведомления" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Выберите" @@ -13347,15 +13825,23 @@ msgstr "Быстрый поиск" msgid "Saved filter" msgstr "Сохраненный фильтр" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Очистить сортировку" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Справочный центр" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Администратор Джанго" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Выйти" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Войти" @@ -13403,10 +13889,6 @@ msgstr "Массовое создание" msgid "Create Group" msgstr "Создать группу" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Назначить группу" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "Виртуальные IP-адреса" @@ -13540,10 +14022,6 @@ msgstr "Добавить префикс" msgid "Add VLAN" msgstr "Добавить VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "Разрешенные VID" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "RD" @@ -13552,20 +14030,16 @@ msgstr "RD" msgid "Unique IP Space" msgstr "Уникальное IP-пространство" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "Логотип NetBox" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Ошибки" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Войти" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Или" @@ -13603,8 +14077,8 @@ msgid "" "the STATIC_ROOT path. Refer to the " "installation documentation for further guidance." msgstr "" -"Служба HTTP (например, nginx или Apache) настроена на обслуживание файлов из STATIC_ROOT\n" -" путь. Обратитесь к документация по установке для получения дополнительных рекомендаций." +"Служба HTTP (например, nginx или Apache) настроена на обслуживание файлов из пути STATIC_ROOT\n" +" . Обратитесь к документация по установке для получения дополнительных рекомендаций." #: netbox/templates/media_failure.html:47 #, python-format @@ -13641,11 +14115,6 @@ msgstr "Заголовок" msgid "Phone" msgstr "Телефон" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Задания" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13685,7 +14154,7 @@ msgstr "Назначенные разрешения" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Разрешение" @@ -13707,23 +14176,21 @@ msgid "Allocated Resources" msgstr "Выделенные ресурсы" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Виртуальные процессоры" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Память" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Дисковое пространство" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "ГБ" @@ -13764,7 +14231,7 @@ msgid "Cluster Group" msgstr "Кластерная группа" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Тип кластера" @@ -13773,13 +14240,13 @@ msgstr "Тип кластера" msgid "Virtual Disk" msgstr "Виртуальный диск" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Ресурсы" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Добавить виртуальный диск" @@ -13961,13 +14428,12 @@ msgstr "Добавить группу беспроводной локально msgid "Link Properties" msgstr "Свойства ссылки" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Третичный" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Неактивный" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Расстояние" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14132,13 +14598,13 @@ msgstr "Контактная ссылка" msgid "Contact Description" msgstr "Описание контакта" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "Разрешение (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Группа (название)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Группа уведомлений (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14160,27 +14626,27 @@ msgstr "Статус суперпользователя" msgid "If no key is provided, one will be generated automatically." msgstr "Если ключ не указан, он будет сгенерирован автоматически." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Является ли персонал" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Является суперпользователем" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Может просматривать" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Можно добавить" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Может измениться" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Можно удалить" @@ -14275,47 +14741,47 @@ msgstr "разрешение" msgid "permissions" msgstr "разрешения" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "пользовательские настройки" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Ключ '{path}'является листовым узлом; не может назначать новые ключи" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Ключ '{path}'— словарь; не может присвоить значение, отличное от словаря" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "истекает" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "последний раз использованный" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "ключ" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "запись включена" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" "Разрешить операции создания/обновления/удаления с использованием этого ключа" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "разрешенные IP-адреса" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14324,11 +14790,11 @@ msgstr "" "поле пустым, чтобы не было ограничений. Пример: «10.1.1.0/24, " "192.168.10.16/32, 2001:DB8:1::/64»" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "токен" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "токены" @@ -14336,18 +14802,10 @@ msgstr "токены" msgid "group" msgstr "группа" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "групп" - #: netbox/users/models/users.py:92 msgid "user" msgstr "пользователя" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "пользователей" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Пользователь с таким именем уже существует." @@ -14485,7 +14943,7 @@ msgstr "" "Неверные данные YAML. Данные должны быть в форме нескольких документов или " "одного документа, содержащего список словарей." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14494,6 +14952,22 @@ msgstr "" "Неверный список ({value}). Должен быть числовым, а диапазоны — в порядке " "возрастания." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Укажите один или несколько числовых диапазонов, разделенных запятыми. " +"Пример: 1-5, 20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Неверные диапазоны ({value}). Должен быть диапазон целых чисел в порядке " +"возрастания." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14660,6 +15134,26 @@ msgstr "" "Отсутствует обязательное значение для статического параметра запроса: " "'{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Пароль должен содержать хотя бы одну цифру." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Пароль должен содержать хотя бы одну прописную букву." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Пароль должен содержать хотя бы одну строчную букву." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Пароль должен содержать как минимум одну цифру, одну прописную и одну " +"строчную букву." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14716,6 +15210,14 @@ msgstr "Добавить шаблон экспорта" msgid "Import" msgstr "Импорт" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Отписаться" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Подписаться" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Скопировать в буфер обмена" @@ -14756,15 +15258,11 @@ msgstr "Поиск в NetBox" msgid "Open selector" msgstr "Открыть селектор" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Ничего не назначено" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Текст" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Тест должен определить csv_update_data." @@ -14773,19 +15271,19 @@ msgstr "Тест должен определить csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} не является допустимым регулярным выражением." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" "{self.__class__.__name__} должен реализовать функцию get_required_permission" " ()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} должен реализовать функцию get_required_permission ()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14809,7 +15307,7 @@ msgid "Cluster type (ID)" msgstr "Тип кластера (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Кластер (ID)" @@ -14827,7 +15325,7 @@ msgid "Disk (GB)" msgstr "Диск (ГБ)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Размер (ГБ)" @@ -14847,6 +15345,10 @@ msgstr "Назначенный кластер" msgid "Assigned device within cluster" msgstr "Назначенное устройство в кластере" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Серийный номер" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14871,6 +15373,7 @@ msgid "Disk size is managed via the attachment of virtual disks." msgstr "Размер диска регулируется путем вложения виртуальных дисков." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Диск" @@ -14912,43 +15415,43 @@ msgid "memory (MB)" msgstr "память (МБ)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "диск (ГБ)" +msgid "disk (MB)" +msgstr "диск (МБ)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Имя виртуальной машины должно быть уникальным для каждого кластера." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "виртуальная машина" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "виртуальные машины" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "Виртуальная машина должна быть назначена сайту и/или кластеру." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "Выбранный кластер ({cluster}) не относится к этому сайту ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "При назначении хост-устройства необходимо указать кластер." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "" "Выбранное устройство ({device}) не относится к этому кластеру ({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -14957,18 +15460,18 @@ msgstr "" "Указанный размер диска ({size}) должен соответствовать совокупному размеру " "назначенных виртуальных дисков ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "" "Должен быть IPV{family} адрес. ({ip} является IP-адресом{version} адрес.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "Указанный IP-адрес ({ip}) не назначено этой виртуальной машине." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -14977,7 +15480,7 @@ msgstr "" "Выбранный родительский интерфейс ({parent}) принадлежит другой виртуальной " "машине ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -14986,7 +15489,7 @@ msgstr "" "Выбранный интерфейс моста ({bridge}) принадлежит другой виртуальной машине " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -14995,24 +15498,24 @@ msgstr "" "VLAN без тегов ({untagged_vlan}) должна принадлежать тому же сайту, что и " "родительская виртуальная машина интерфейса, или она должна быть глобальной." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "размер (ГБ)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "размер (МБ)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "виртуальный диск" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "виртуальные диски" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Добавлено {count} устройств(-а) для кластеризации {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Удалено {count} устройств(-а) из кластера {cluster}" @@ -15126,32 +15629,32 @@ msgid "Outside IP (ID)" msgstr "Внешний IP-адрес (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "Политика IKE (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "Политика IKE (название)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "Политика IPsec (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "Политика IPsec (имя)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (подстрока)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "Интерфейс виртуальной машины (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (название)" @@ -15325,7 +15828,7 @@ msgstr "версия" msgid "proposals" msgstr "предложений" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "предварительный общий ключ" @@ -15507,17 +16010,24 @@ msgstr "Предприятие WPA" msgid "Authentication cipher" msgstr "Шифр аутентификации" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Единица измерения расстояний" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "Мостовая VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Интерфейс A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Интерфейс B" @@ -15525,39 +16035,52 @@ msgstr "Интерфейс B" msgid "Side B" msgstr "Сторона B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "шифр аутентификации" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "группа беспроводной локальной сети" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "группы беспроводной локальной сети" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "беспроводная локальная сеть" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "Интерфейс A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "Интерфейс B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "расстояние" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "единица измерения расстояний" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "беспроводное соединение" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "беспроводные соединения" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "" +"При настройке беспроводного расстояния необходимо указать единицу измерения" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} не является беспроводным интерфейсом." diff --git a/netbox/translations/tr/LC_MESSAGES/django.mo b/netbox/translations/tr/LC_MESSAGES/django.mo index 2c522249523..b60c9aa9693 100644 Binary files a/netbox/translations/tr/LC_MESSAGES/django.mo and b/netbox/translations/tr/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/tr/LC_MESSAGES/django.po b/netbox/translations/tr/LC_MESSAGES/django.po index 00a9ad113e5..9664e4f81eb 100644 --- a/netbox/translations/tr/LC_MESSAGES/django.po +++ b/netbox/translations/tr/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Turkish (https://app.transifex.com/netbox-community/teams/178115/tr/)\n" @@ -29,16 +29,17 @@ msgstr "" msgid "Key" msgstr "Anahtar" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Yazma Etkin" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -50,11 +51,11 @@ msgstr "Oluşturuldu" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Süre bitiş tarihi" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Son Kullanım" @@ -64,47 +65,47 @@ msgstr "Son Kullanım" msgid "Allowed IPs" msgstr "İzin verilen IP'ler" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Olarak oturum açtı {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Oturumu kapattınız." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Tercihleriniz güncellendi." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "LDAP kimliği doğrulanmış kullanıcı kimlik bilgileri NetBox içinde " "değiştirilemez." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Şifreniz başarıyla değiştirildi." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Planlanan" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Tedarik" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -113,9 +114,9 @@ msgstr "Tedarik" msgid "Active" msgstr "Aktif" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Çevrim dışı" @@ -128,98 +129,116 @@ msgstr "Hazırlıktan Kaldırma" msgid "Decommissioned" msgstr "Hizmet dışı bırakıldı" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Birincil" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "İkincil" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Üçüncül" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Etkin Olmayan" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "Bölge (ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Bölge (kısa ad)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "Site grubu (ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Site grubu (kısa ad)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -231,172 +250,197 @@ msgstr "Site grubu (kısa ad)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Site" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Site (kısa ad)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN (ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "Sağlayıcı (ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Sağlayıcı (kısa ad)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "Sağlayıcı hesabı (ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Sağlayıcı hesabı (hesap)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "Sağlayıcı ağı (ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "Devre tipi (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "Devre tipi (kısa ad)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "Site (ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "Fesih A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Arama" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "Devre" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "Sağlayıcı Ağı (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Devre (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Devre (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Devre grubu (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Devre grubu (sümüklü böcek)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASN'ler" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -409,16 +453,17 @@ msgstr "ASN'ler" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -428,8 +473,9 @@ msgstr "ASN'ler" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -482,26 +528,28 @@ msgstr "ASN'ler" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Açıklama" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -513,22 +561,22 @@ msgstr "Açıklama" msgid "Provider" msgstr "Sağlayıcı" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Servis ID" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -539,33 +587,33 @@ msgstr "Servis ID" msgid "Color" msgstr "Renk" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -578,9 +626,9 @@ msgstr "Renk" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -596,52 +644,52 @@ msgstr "Renk" msgid "Type" msgstr "Tür" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Sağlayıcı hesabı" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -650,7 +698,7 @@ msgstr "Sağlayıcı hesabı" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -658,7 +706,7 @@ msgstr "Sağlayıcı hesabı" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -668,45 +716,49 @@ msgstr "Sağlayıcı hesabı" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Durum" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -718,7 +770,7 @@ msgstr "Durum" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -741,36 +793,37 @@ msgstr "Durum" msgid "Tenant" msgstr "Kiracı" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Yükleme tarihi" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Fesih tarihi" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Taahhüt oranı (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Servis Parametreleri" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -780,37 +833,37 @@ msgstr "Servis Parametreleri" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Kiracılık" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Sağlayıcı Ağı" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Bağlantı noktası hızı (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Yukarı akış hızı (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Bağlı olarak işaretle" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -818,46 +871,60 @@ msgstr "Bağlı olarak işaretle" msgid "Circuit Termination" msgstr "Devre Sonlandırma" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Fesih Ayrıntıları" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Öncelik" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Atanan sağlayıcı" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Atanan sağlayıcı hesabı" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "Devre tipi" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Operasyonel durum" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -865,7 +932,7 @@ msgstr "Operasyonel durum" msgid "Assigned tenant" msgstr "Atanan kiracı" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -873,44 +940,44 @@ msgstr "Atanan kiracı" msgid "Termination" msgstr "Fesih" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Sağlayıcı ağı" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -919,13 +986,13 @@ msgstr "Sağlayıcı ağı" msgid "Location" msgstr "Konum" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -934,22 +1001,22 @@ msgstr "Konum" msgid "Contacts" msgstr "İletişim" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -962,17 +1029,17 @@ msgstr "İletişim" msgid "Region" msgstr "Bölge" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -980,212 +1047,296 @@ msgstr "Bölge" msgid "Site group" msgstr "Site grubu" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Öznitellikler" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Hesap" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Dönem Tarafı" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Ödev" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Grup" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Devre Grubu" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "renk" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "devre tipi" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "devre türleri" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "devre ID" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "Benzersiz devre ID" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "durum" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "kurulmuş" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "sonlandırır" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "taahhüt oranı (Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Taahhüt oranı" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "devre" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "devreler" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "devre grubu" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "devre grupları" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "öncelik" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Devre grubu ataması" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Devre grubu atamaları" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "sonlandırma" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "bağlantı noktası hızı (Kbps)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "Fiziksel devre hızı" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "yukarı akış hızı (Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Bağlantı noktası hızından farklıysa yukarı akış hızı" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "çapraz bağlantı kimliği" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "Yerel çapraz bağlantının kimliği" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "bağlantı paneli/port(lar)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "Bağlantı paneli ID ve port numaraları" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "açıklama" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "devre sonlandırma" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "devre sonlandırmaları" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" "Bir devre sonlandırma, bir siteye veya bir sağlayıcı ağına bağlanmalıdır." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "Devre sonlandırma hem siteye hem de sağlayıcı ağına bağlanamaz." #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "ad" @@ -1194,11 +1345,12 @@ msgid "Full name of the provider" msgstr "Sağlayıcının tam adı" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "kısa ad" @@ -1234,40 +1386,45 @@ msgstr "sağlayıcı ağı" msgid "provider networks" msgstr "sağlayıcı ağları" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1282,7 +1439,7 @@ msgstr "sağlayıcı ağları" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1296,8 +1453,9 @@ msgstr "sağlayıcı ağları" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1337,9 +1495,9 @@ msgstr "sağlayıcı ağları" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1349,56 +1507,57 @@ msgstr "sağlayıcı ağları" msgid "Name" msgstr "İsim" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "Devreler" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "Devre ID" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "A Tarafı" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Z Tarafı" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Taahhüt Oranı" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1407,6 +1566,12 @@ msgstr "Taahhüt Oranı" msgid "Comments" msgstr "Yorumlar" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Ödevler" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Hesaplar" @@ -1429,7 +1594,7 @@ msgstr "Devre için sonlandırma tanımlanmamıştır {circuit}." msgid "Swapped terminations for circuit {circuit}." msgstr "Devre için değiştirilmiş sonlandırmalar {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "Bu kullanıcının bu veri kaynağını senkronize etme izni yoktur." @@ -1447,21 +1612,19 @@ msgid "Syncing" msgstr "Senkronizasyon" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Tamamlandı" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Başarısız" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1473,30 +1636,39 @@ msgstr "Komut Dosyaları" msgid "Reports" msgstr "Raporlar" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "Beklemede" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Zamanlanmış" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Koşu" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Hatalı" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Güncellendi" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Silinmiş" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Bitmiş" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Başladı" @@ -1513,11 +1685,13 @@ msgstr "Durduruldu" msgid "Cancelled" msgstr "İptal Edildi" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Yerel" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1527,8 +1701,8 @@ msgstr "Kullanıcı Adı" msgid "Only used for cloning with HTTP(S)" msgstr "Sadece HTTP(S) ile klonlama için kullanılır" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Şifre" @@ -1550,24 +1724,63 @@ msgstr "AWS erişim anahtarı kimliği" msgid "AWS secret access key" msgstr "AWS gizli erişim anahtarı" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Oluşturulan nesne" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Nesne güncellendi" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Nesne silindi" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "İş başladı" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "İş tamamlandı" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "İş başarısız oldu" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "İş hatası" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "Veri kaynağı (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Veri kaynağı (isim)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Kullanıcı (ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Kullanıcı adı" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1575,14 +1788,14 @@ msgstr "Veri kaynağı (isim)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Etkin" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1595,11 +1808,11 @@ msgstr "Parametreler" msgid "Ignore rules" msgstr "Kuralları yok sayın" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1609,76 +1822,99 @@ msgstr "Kuralları yok sayın" msgid "Data Source" msgstr "Veri Kaynağı" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Dosya" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Veri kaynağı" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Oluşturma" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Nesne Türü" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Sonra oluşturuldu" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Daha önce oluşturuldu" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Sonrasında planlandı" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Önceden planlanmış" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Sonra başladı" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Daha önce başladı" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Sonrasında tamamlandı" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Daha önce tamamlandı" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Kullanıcı" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Zaman" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Sonra" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Önce" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Eylem" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1709,19 +1945,19 @@ msgstr "" msgid "Rack Elevations" msgstr "Raf Yükseltmeleri" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Güç" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1738,7 +1974,9 @@ msgstr "Afişler" msgid "Pagination" msgstr "Sayfalandırma" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Doğrulama" @@ -1748,7 +1986,7 @@ msgstr "Doğrulama" msgid "User Preferences" msgstr "Kullanıcı Tercihleri" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1771,10 +2009,48 @@ msgstr "Mevcut değer: {value}" msgid " (default)" msgstr " (varsayılan)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "zaman" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "kullanıcı adı" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "istek kimliği" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "aksiyon" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "değişiklik öncesi veriler" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "değişim sonrası veriler" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "nesne değişikliği" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "nesne değişiklikleri" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "Değişiklik günlüğü bu nesne türü için desteklenmez ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "oluşturulan" @@ -1807,14 +2083,14 @@ msgstr "Geçerli yapılandırma" msgid "Config revision #{id}" msgstr "Yapılandırma revizyonu #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1822,62 +2098,63 @@ msgstr "Yapılandırma revizyonu #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "türü" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "etkin" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "kuralları yok sayın" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Senkronizasyon sırasında yok sayılacak dosyalarla eşleşen desenler (satır " "başına bir tane)" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "parametreler" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "son senkronize edildi" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "veri kaynağı" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "veri kaynakları" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Bilinmeyen arka uç türü: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "Senkronizasyon başlatılamıyor; senkronizasyon zaten devam ediyor." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " @@ -1885,48 +2162,48 @@ msgstr "" "Arka ucu başlatırken bir hata oluştu. Bir bağımlılığın yüklenmesi gerekiyor:" " " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "son güncellendi" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "yol" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Veri kaynağının köküne göre dosya yolu" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "boyut" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "kare" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "Uzunluk 64 onaltılık karakter olmalıdır." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "Dosya verilerinin SHA256 karması" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "veri dosyası" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "veri dosyaları" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "otomatik senkronizasyon kaydı" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "otomatik senkronizasyon kayıtları" @@ -1950,59 +2227,93 @@ msgstr "yönetilen dosya" msgid "managed files" msgstr "yönetilen dosyalar" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "planlanmış" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "aralık" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Tekrarlama aralığı (dakika cinsinden)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "başladı" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "tamamlandı" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "veri" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "hata" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "görev ID" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "görev" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "görevler" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "İşler bu nesne türüne atanamaz ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "" "İşin sonlandırılması için geçersiz durum. Seçenekler şunlardır: {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "enqueue () hem schedule_at hem de imediat değerleriyle çağrılamaz." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Silme işlemi bir koruma kuralı tarafından engellenir: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "Ad Soyad" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Nesne" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "İstek Kimliği" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Aktif mi" @@ -2017,51 +2328,63 @@ msgid "Last updated" msgstr "Son Güncelleme" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "KİMLİK" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Nesne" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "Aralık" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Versiyon" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Paket" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Son Güncelleme" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Minimum NetBox Sürümü" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Maksimum NetBox Sürümü" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Eklenti verisi bulunamadı" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Yazar" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Yazar E-postası" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Kurulmuş" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Sertifikalı" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Eklenti bulunamadı" +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Yayınlandı" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Yüklü Sürüm" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Son Sürüm" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2075,7 +2398,7 @@ msgstr "İşçiler" msgid "Host" msgstr "Ana bilgisayar" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Port" @@ -2123,62 +2446,72 @@ msgstr "PID" msgid "No workers found" msgstr "İşçi bulunamadı" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "Sıraya alınmış iş #{id} senkronize etmek {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Geri yüklenen yapılandırma revizyonu #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "İş {job_id} bulunamadı" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "İş {id} silindi." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "İş silinirken hata oluştu {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "İş {id} bulunamadı." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "İş {id} yeniden sıraya alındı." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "İş {id} sıraya alındı." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "İş {id} durduruldu." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "İş durdurulamadı {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Eklentiler kataloğu yüklenemedi" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Eklenti {name} bulunamadı" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Pozisyon (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "Tesis Kimliği" @@ -2186,8 +2519,8 @@ msgstr "Tesis Kimliği" msgid "Staging" msgstr "Sahneleme" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Hizmetten çıkarma" @@ -2246,27 +2579,39 @@ msgstr "Mevcut" msgid "Deprecated" msgstr "Kullanımdan kaldırıldı" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Milimetre" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "İnç" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Önden arkaya" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Arkadan öne" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2282,278 +2627,273 @@ msgstr "İnç" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Ebeveyn" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Çocuk" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Ön" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Arka" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Sahnelenmiş" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Envanter" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Önden arkaya" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Arkadan öne" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Soldan sağa" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Sağdan sola" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Yandan arkaya" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Pasif" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Karışık" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (Kilitsiz)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (Kilitleme)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Kaliforniya Tarzı" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "Uluslararası/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Tescilli" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Diğer" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/Uluslararası" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Fiziksel" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Sanal" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Kablosuz" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Sanal arayüzler" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Köprü" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Bağlantı Toplama Grubu (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (sabit)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (modüler)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (arka panel)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Hücresel" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Seri" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Koaksiyel" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "İstifleme" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Yarım" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Dolu" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Oto" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Erişim" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Etiketlenmiş" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Etiketlenmiş (Tümü)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "IEEE Standardı" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Pasif 24V (2 çift)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Pasif 24V (4 çift)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Pasif 48V (2 çift)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Pasif 48V (4 çift)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Bakır" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Fiber Optik" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Fiber" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Bağlı" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Kilometre" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Sayaçlar" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Santimetre" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Mil" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Feet" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Kilogram" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Gramlar" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Pound'lar" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "ons" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Birincil" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Yedekli" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Tek fazlı" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Üç fazlı" @@ -2567,330 +2907,335 @@ msgstr "Geçersiz MAC adresi biçimi: {value}" msgid "Invalid WWN format: {value}" msgstr "Geçersiz WWN biçimi: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "Ana bölge (ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Ana bölge (kısa ad)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "Ana site grubu (ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Ana site grubu (kısa ad)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "Grup (ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Grup (kısa ad)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "AS (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "Ana konum (ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Ana konum (kısa ad)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "Konum (ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Konum (kısa ad)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Üretici (ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Üretici (kısa ad)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Raf tipi (sümüklü böcek)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Raf tipi (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "Rol (ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Rol (kısa ad)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "Raf (ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Kullanıcı (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Kullanıcı (isim)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Üretici (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Üretici (kısa ad)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "Varsayılan platform (ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Varsayılan platform (kısa ad)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Ön resmi var" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Arka görüntüsü var" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Konsol bağlantı noktaları vardır" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Konsol sunucusu bağlantı noktaları vardır" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Güç bağlantı noktaları vardır" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Elektrik prizleri var" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Arayüzleri vardır" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Geçiş bağlantı noktaları vardır" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Modül yuvaları vardır" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Cihaz yuvaları var" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Envanter kalemleri var" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "Cihaz tipi (ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "Modül tipi (ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "Güç bağlantı noktası (ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "Ana envanter kalemi (ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "Yapılandırma şablonu (ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Cihaz tipi (kısa ad)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "Ana Cihaz (ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "Platform (ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Platform (kısa ad)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Site adı (kısa ad)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "Ebeveyn bölmesi (ID)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "VM kümesi (ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Küme grubu (kısa ad)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "Küme grubu (ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Cihaz modeli (kısa ad)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Tam derinlik mi" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC adresi" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Birincil IP'ye sahiptir" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Bant dışı bir IP'ye sahiptir" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "Sanal kasa (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Sanal bir şasi üyesidir" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "OOB İP (KİMLİĞİ)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Sanal cihaz bağlamına sahiptir" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (KİMLİK)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Cihaz modeli" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "Arayüz (ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Modül tipi (model)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Modül Yuvası (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Modül yuvası (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "Cihaz (ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Raf (isim)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Cihaz (isim)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Cihaz tipi (model)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "Cihaz rolü (ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Cihaz rolü (kısa ad)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "Sanal Kasa (ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2899,33 +3244,33 @@ msgstr "Sanal Kasa (ID)" msgid "Virtual Chassis" msgstr "Sanal Şasi" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "Modül (ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "Kablo (ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Atanmış VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "Atanmış VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2942,121 +3287,125 @@ msgstr "Atanmış VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (KİMLİĞİ)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Cihaz için Sanal Şasi Arayüzleri" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "Cihaz için Sanal Şasi Arayüzleri (ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Arayüz türü" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "Ebeveyn arabirimi (ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "Köprülü arayüz (ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "LAG arabirimi (ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Sanal Cihaz Bağlamı" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Sanal Cihaz Bağlamı (Tanımlayıcı)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Kablosuz LAN" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Kablosuz bağlantı" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Ana modül yuvası (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "Yüklü modül (ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "Yüklü cihaz (ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Yüklü cihaz (isim)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "Master (ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Master (isim)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "Kiracı (ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Kiracı (kısa ad)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Sonlandırılmamış" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "Güç paneli (ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3064,13 +3413,13 @@ msgstr "Güç paneli (ID)" msgid "Tags" msgstr "Etiketler" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3084,168 +3433,114 @@ msgstr "" "Alfasayısal aralıklar desteklenir. (Oluşturulan isim sayısıyla " "eşleşmelidir.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Grup" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "İrtibat Kişisi Adı" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "İletişim telefonu" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "İletişim E-posta" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Saat dilimi" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Rol" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Seri Numarası" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Varlık etiketi" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Üretici" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Form faktörü" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Genişlik" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Yükseklik (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Azalan birimler" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Dış genişlik" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Dış derinlik" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Dış ünite" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Montaj derinliği" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3253,31 +3548,127 @@ msgstr "Montaj derinliği" msgid "Weight" msgstr "Ağırlığı" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Maksimum ağırlık" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Ağırlık birimi" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Raf Tipi" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Dış Ölçüler" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Ölçüler" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Numaralandırma" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Rol" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Seri Numarası" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Varlık etiketi" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Hava akışı" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3287,158 +3678,132 @@ msgstr "Ağırlık birimi" msgid "Rack" msgstr "Raf" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 msgid "Hardware" msgstr "Donanım" -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Üretici" - -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Varsayılan platform" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Parça numarası" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "U yüksekliği" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Kullanımdan hariç tut" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Hava akışı" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Cihaz Türü" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Modül Türü" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Şasi" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "VM rolü" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Yapılandırma şablonu" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Cihaz tipi" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Cihaz rolü" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Platform" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3449,7 +3814,7 @@ msgstr "Platform" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3457,7 +3822,7 @@ msgstr "Platform" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3465,7 +3830,7 @@ msgstr "Platform" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3475,23 +3840,23 @@ msgstr "Platform" msgid "Device" msgstr "Cihaz" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Yapılandırma" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Modül tipi" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3500,7 +3865,7 @@ msgstr "Modül tipi" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3509,141 +3874,142 @@ msgstr "Modül tipi" msgid "Label" msgstr "etiket" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Uzunluk" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Uzunluk birimi" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Alan adı" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Güç paneli" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Tedarik" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Faz" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Gerilim" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Amper" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Maksimum kullanım" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Maksimum çekiliş" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Maksimum güç çekimi (watt)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Tahsis edilen çekiliş" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Tahsis edilen güç çekimi (watt)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Güç bağlantı noktası" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Besleme bacağı" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Yalnızca yönetim" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "PoE modu" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE tipi" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Kablosuz rolü" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Modül" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "GECİKME" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Sanal cihaz bağlamları" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Hız" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3657,290 +4023,295 @@ msgstr "Hız" msgid "Mode" msgstr "Modu" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN grubu" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "Etiketsiz VLAN" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "Etiketli VLAN'lar" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Kablosuz LAN grubu" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Kablosuz LAN'lar" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Adresleme" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Operasyon" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "İlgili Arayüzler" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "802.1Q Anahtarlama" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "VLAN'ları atamak için arayüz modu belirtilmelidir" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "Bir erişim arabirimi VLAN'ları etiketlemiş olamaz." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Ana bölgenin adı" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Üst site grubunun adı" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Atanan bölge" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Atanan grup" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "mevcut seçenekler" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Atanan site" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Ana konum" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Konum bulunamadı." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "Atanan kiracının adı" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Atanan rolün adı" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Bu raf tipinin üreticisi" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Raf tipi" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "Raftaki en düşük numaralı konum" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Ray-ray genişliği (inç cinsinden)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Dış boyutlar için birim" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Raf ağırlıkları için ünite" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "Atanan kiracının adı" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Atanan rolün adı" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Hava akışı yönü" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Ana site" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Rafın konumu (varsa)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Birimler" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Bireysel birim numaralarının virgülle ayrılmış listesi" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Bu cihaz tipini üreten üretici" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Bu tür cihazlar için varsayılan platform (isteğe bağlı)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Cihaz ağırlığı" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Cihaz ağırlığı için birim" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Modül ağırlığı" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Modül ağırlığı için birim" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Platform atamalarını bu üreticiye sınırlayın" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Atanan rol" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Cihaz tipi üreticisi" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Cihaz tipi modeli" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Atanan platform" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Sanal şasi" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Küme" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Sanallaştırma kümesi" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Atanan konum (varsa)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Atanmış raf (varsa)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Yüz" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Monte edilmiş raf yüzü" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Ana cihaz (alt cihazlar için)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Cihaz yuvası" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "Bu cihazın kurulu olduğu cihaz yuvası (alt cihazlar için)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Hava akışı yönü" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Bu modülün kurulu olduğu cihaz" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Modül yuvası" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "Bu modülün kurulu olduğu modül yuvası" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Modül türü" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Bileşenleri çoğaltın" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3948,238 +4319,238 @@ msgstr "" "Bu modül türüyle ilişkili bileşenleri otomatik olarak doldurun (varsayılan " "olarak etkindir)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Bileşenleri benimseyin" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Mevcut bileşenleri benimseyin" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Bağlantı noktası tipi" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Bps cinsinden bağlantı noktası hızı" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Çıkış tipi" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Bu prizi besleyen yerel güç portu" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Elektrik fazı (üç fazlı devreler için)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Ebeveyn arayüzü" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Köprülü arayüz" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "Gecikme" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Ebeveyn LAG arayüzü" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Vdcs" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "VDC isimleri virgülle ayrılmış, çift tırnak işareti ile çevrelenmiştir. " "Örnek:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Fiziksel ortam" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Dubleks" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Poe modu" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Poe tipi" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "IEEE 802.1Q çalışma modu (L2 arayüzleri için)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Atanmış VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "Rf rolü" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Kablosuz rolü (AP/istasyon)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} cihaza atanmadı {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Arka bağlantı noktası" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "İlgili arka bağlantı noktası" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Fiziksel ortam sınıflandırması" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Yüklü cihaz" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Bu bölmeye takılan çocuk cihazı" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Çocuk cihazı bulunamadı." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Ana envanter kalemi" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Bileşen tipi" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Bileşen Türü" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Bileşen adı" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Bileşen Adı" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Bileşen bulunamadı: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "A Tarafı Cihazı" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Cihaz adı" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Taraf A tipi" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Sonlandırma türü" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "A Tarafı adı" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Fesih adı" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "B tarafı cihazı" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Taraf B tipi" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "B tarafı adı" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Bağlantı durumu" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Yan {side_upper}: {device} {termination_object} zaten bağlı" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} yan sonlandırma bulunamadı: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Usta" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Ana cihaz" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Ana sitenin adı" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Yukarı akış güç paneli" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Birincil veya gereksiz" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Besleme tipi (AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Tek veya üç fazlı" @@ -4199,7 +4570,7 @@ msgstr "" "Etiketli VLAN'lar ({vlans}) arayüzün ana cihazı/sanal makinesiyle aynı " "siteye ait olmalı veya global olmalıdır" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4207,17 +4578,26 @@ msgstr "" "Konum tanımlanmamış bir modül yuvasına yer tutucu değerleri olan modül " "yüklenemiyor." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Modül defne ağacına yer tutucu değerleri olan modül yüklenemiyor {level} " +"Ağaçta ama {tokens} verilen yer tutucular." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "Evlat edinemiyor {model} {name} zaten bir modüle ait olduğu için" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "BİR {model} adlandırmak {name} zaten var" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4226,7 +4606,7 @@ msgstr "BİR {model} adlandırmak {name} zaten var" msgid "Power Panel" msgstr "Güç Paneli" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4236,15 +4616,15 @@ msgstr "Güç Beslemesi" msgid "Side" msgstr "Yan" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Cihaz Durumu" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Ana bölge" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4252,62 +4632,67 @@ msgstr "Ana bölge" msgid "Parent group" msgstr "Ebeveyn grubu" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Tesis" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Raf tipi" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Fonksiyon" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Görüntüler" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Bileşenleri" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Alt aygıt rolü" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Modeli" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "OOB IP'ye sahiptir" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Sanal şasi elemanı" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Sanal cihaz bağlamlarına sahiptir" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Küme grubu" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Kablolu" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "işgal" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4319,43 +4704,43 @@ msgstr "işgal" msgid "Connection" msgstr "Bağlantı" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Tür" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Sadece Mgmt" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Kablosuz kanal" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Kanal frekansı (MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Kanal genişliği (MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "İletim gücü (dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4365,7 +4750,7 @@ msgstr "İletim gücü (dBm)" msgid "Cable" msgstr "Kablo" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Keşfedildi" @@ -4374,28 +4759,31 @@ msgstr "Keşfedildi" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Bir sanal kasa elemanı zaten yerinde var {vc_position}." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "İletişim Bilgisi" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Raf Rolü" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Envanter Kontrolü" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Kısa isim" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Dış Ölçüler" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Önceden tanımlanmış bir raf tipi seçin veya aşağıda fiziksel özellikleri " +"ayarlayın." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Ölçüler" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Envanter Kontrolü" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4403,92 +4791,69 @@ msgstr "" "Virgülle ayrılmış sayısal birim kimlikleri listesi. Bir aralık bir tire " "kullanılarak belirtilebilir." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Rezervasyon" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Kısa isim" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Şasi" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Cİhaz Rolü" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "Cihazın kullandığı en düşük numaralı birim" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "Bu cihazın sanal kasadaki konumu tanımlanır" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Öncelik" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "Sanal kasadaki cihazın önceliği" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "Bu modül türüyle ilişkili bileşenleri otomatik olarak doldurun" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "Maksimum uzunluk 32767'dir (herhangi bir birim)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "ÖZELLİKLERİ" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Konsol bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Konsol sunucusu bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Ön bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Arayüz şablonu" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Elektrik prizi şablonu" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Güç bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Arka bağlantı noktası şablonu" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4499,7 +4864,7 @@ msgstr "Arka bağlantı noktası şablonu" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4508,7 +4873,7 @@ msgstr "Arka bağlantı noktası şablonu" msgid "Interface" msgstr "Arayüz" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4516,14 +4881,14 @@ msgstr "Arayüz" msgid "Console Port" msgstr "Konsol Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Konsol Sunucusu Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4534,8 +4899,8 @@ msgstr "Konsol Sunucusu Bağlantı Noktası" msgid "Front Port" msgstr "Ön Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4547,36 +4912,36 @@ msgstr "Ön Bağlantı Noktası" msgid "Rear Port" msgstr "Arka Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Güç Bağlantı Noktası" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Güç Çıkışı" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Bileşen Ataması" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "Bir InventoryItem yalnızca tek bir bileşene atanabilir." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "LAG arayüzü" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Çocuk Cihazı" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4584,41 +4949,41 @@ msgstr "" "Alt aygıtlar önce oluşturulmalı ve ana aygıtın sahasına ve rafına " "atanmalıdır." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Konsol bağlantı noktası" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Konsol sunucusu bağlantı noktası" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Ön bağlantı noktası" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Güç çıkışı" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Envanter Öğesi" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Envanter Öğesi Rolü" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "Birincil IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "Birincil IPv6" @@ -4680,7 +5045,7 @@ msgstr "" "Oluşturulacak ön bağlantı noktalarının sayısı ({frontport_count}) seçilen " "arka port konumu sayısıyla eşleşmelidir ({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4704,7 +5069,7 @@ msgstr "İlk VC üyesi için bir pozisyon belirtilmelidir." #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "etiketlemek" @@ -4828,134 +5193,134 @@ msgstr "" "Bir bileşen şablonu, bir aygıt türü veya bir modül türüyle " "ilişkilendirilmelidir." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "konsol bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "konsol bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "konsol sunucusu bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "konsol sunucusu bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "maksimum çekiliş" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "tahsis edilen çekiliş" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "güç bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "güç bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "Tahsis edilen çekiliş maksimum çekilişi aşamaz ({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "besleme bacağı" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Faz (üç fazlı beslemeler için)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "elektrik prizi şablonu" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "elektrik prizi şablonları" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Ana güç bağlantı noktası ({power_port}) aynı cihaz türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Ana güç bağlantı noktası ({power_port}) aynı modül türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "sadece yönetim" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "köprü arayüzü" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "kablosuz rolü" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "arayüz şablonu" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "arayüz şablonları" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Bir arayüz kendi başına köprülenemez." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "Köprü arayüzü ({bridge}) aynı cihaz türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Köprü arayüzü ({bridge}) aynı modül türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "arka port konumu" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "ön bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "ön bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Arka bağlantı noktası ({name}) aynı cihaz türüne ait olmalıdır" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4964,46 +5329,46 @@ msgstr "" "Geçersiz arka bağlantı noktası konumu ({position}); arka bağlantı noktası " "{name} sadece var {count} pozisyonlar" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "pozisyonlar" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "arka bağlantı noktası şablonu" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "arka bağlantı noktası şablonları" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "pozisyon" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "Yüklü bileşenleri yeniden adlandırırken başvurulacak tanımlayıcı" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "modül bölmesi şablonu" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "modül bölmesi şablonları" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "cihaz yuvası şablonu" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "cihaz yuvası şablonları" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5012,21 +5377,21 @@ msgstr "" "Aygıt türünün alt cihaz rolü ({device_type}) cihaz bölmelerine izin vermek " "için “ebeveyn” olarak ayarlanmalıdır." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "parça kimliği" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Üretici tarafından atanan parça tanımlayıcısı" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "envanter öğesi şablonu" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "envanter öğe şablonları" @@ -5167,27 +5532,27 @@ msgstr "Seçilen kanala göre doldurulur (ayarlanmışsa)" msgid "transmit power (dBm)" msgstr "iletim gücü (dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "kablosuz LAN'lar" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "etiketsiz VLAN" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "etiketli VLAN'lar" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "arayüz" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "arayüzleri" @@ -5202,7 +5567,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type} arayüzler bağlı olarak işaretlenemez." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Bir arayüz kendi ebeveyni olamaz." @@ -5358,90 +5723,96 @@ msgstr "" "Konum sayısı, eşlenen ön bağlantı noktalarının sayısından az olamaz " "({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "modül yuvası" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "modül bölmeleri" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "Bir modül yuvası, içinde kurulu bir modüle ait olamaz." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "cihaz yuvası" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "cihaz yuvaları" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "Bu tür bir cihaz ({device_type}) cihaz bölmelerini desteklemez." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Bir cihaz kendi içine yüklenemiyor." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." msgstr "Belirtilen cihaz yüklenemiyor; cihaz zaten yüklü {bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "envanter kalemi rolü" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "envanter kalemi rolleri" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "seri numarası" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "varlık etiketi" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "Bu öğeyi tanımlamak için kullanılan benzersiz bir etiket" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "keşfedilen" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Bu öğe otomatik olarak keşfedildi" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "envanter kalemi" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "envanter kalemleri" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Kendisi ebeveyn olarak atanamıyor." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "Ana envanter kalemi aynı cihaza ait değildir." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "Bağımlı çocuklarla bir envanter öğesi taşınamıyor" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "Başka bir cihazdaki bileşene envanter öğesi atanamıyor" @@ -5454,6 +5825,7 @@ msgid "manufacturers" msgstr "üreticiler" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "model" @@ -5469,7 +5841,7 @@ msgstr "parça numarası" msgid "Discrete part number (optional)" msgstr "Ayrık parça numarası (isteğe bağlı)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "yükseklik (U)" @@ -5501,7 +5873,8 @@ msgstr "" "Ana cihazlar, alt cihazarı cihaz yuvalarında barındırır. Bu cihaz türü ana " "veya alt cihaz değilse boş bırakın." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "hava akımı" @@ -5548,160 +5921,160 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Çocuk cihaz türleri 0U olmalıdır." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "modül tipi" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "modül türleri" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Sanal makineler bu role atanabilir" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "cihaz rolü" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "cihaz rolleri" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "" "İsteğe bağlı olarak bu platformu belirli bir üreticinin cihazlarıyla " "sınırlayın" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "platform" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "platformlar" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "Bu cihazın hizmet ettiği işlev" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Üretici tarafından atanan şasi seri numarası" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "Bu cihazı tanımlamak için kullanılan benzersiz bir etiket" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "pozisyon (U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "raf yüzü" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "birincil IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "birincil IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "bant dışı IP" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "VC pozisyonu" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Sanal şasi konumu" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "VC önceliği" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Sanal şasi ana seçim önceliği" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "enlem" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "Ondalık formatta GPS koordinatı (xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "boylam" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Aygıt adı site başına benzersiz olmalıdır." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "cihaz" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "cihazlar" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Raf {rack} siteye ait değil {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "{location} Konum {site} adlı siteye ait değil." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "{rack} rafı {location} adlı konuma ait değil." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "Bir raf atamadan raf yüzü seçilemez." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "Bir raf atamadan raf konumu seçilemez." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "Konum 0,5 raf ünitesinin artışlarında olmalıdır." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "Raf konumunu tanımlarken raf yüzü belirtilmelidir." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "Bir 0U cihaz tipi ({device_type}) bir raf konumuna atanamaz." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." msgstr "" "Alt aygıt türleri bir raf yüzüne atanamaz. Bu, ana cihazın bir özelliğidir." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5709,7 +6082,7 @@ msgstr "" "Alt aygıt türleri bir raf konumuna atanamaz. Bu, ana aygıtın bir " "özelliğidir." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5718,22 +6091,22 @@ msgstr "" "U{position} zaten işgal edilmiş veya bu cihaz tipini barındırmak için " "yeterli alana sahip değil: {device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} Bu bir IPv4 adresi değildir." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Belirtilen IP adresi ({ip}) bu cihaza atanmamıştır." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} Bu bir IPv6 adresi değildir." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5742,45 +6115,45 @@ msgstr "" "Atanan platform aşağıdakilerle sınırlıdır {platform_manufacturer} cihaz " "türleri, ancak bu cihazın türü şunlara aittir {devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Atanan küme farklı bir siteye aittir ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "Sanal bir kasaya atanan bir aygıtın konumu tanımlanmış olmalıdır." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "modül" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "modülleri" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "Modül, atanan cihaza ait bir modül bölmesine kurulmalıdır ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "domain" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "sanal kasa" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "Seçilen usta ({master}) bu sanal kasaya atanmamıştır." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5789,39 +6162,39 @@ msgstr "" "Sanal kasa silinemiyor {self}. Çapraz şasi LAG arabirimleri oluşturan üye " "arayüzleri vardır." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "belirlemek" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Ana aygıta benzersiz sayısal tanımlayıcı" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "yorumlar" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "sanal cihaz bağlamı" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "sanal cihaz bağlamları" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} IPV değil{family} adres." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "Birincil IP adresi, atanan cihazdaki bir arayüze ait olmalıdır." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "ağırlık" @@ -5897,94 +6270,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "AC beslemesi için voltaj negatif olamaz" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "raf rolü" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "raf rolleri" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "tesis kimliği" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Yerel olarak atanmış tanımlayıcı" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Fonksiyonel rol" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Bu rafı tanımlamak için kullanılan benzersiz bir etiket" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "genişlik" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Ray-ray genişliği" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Raf ünitelerinde yükseklik" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "başlangıç ünitesi" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Raf için başlangıç ünitesi" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "azalan birimler" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Birimler yukarıdan aşağıya numaralandırılmıştır" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "dış genişlik" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Rafın dış boyutu (genişlik)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "dış derinlik" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Rafın dış boyutu (derinlik)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "dış ünite" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "maksimum ağırlık" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Raf için maksimum yük kapasitesi" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "montaj derinliği" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -5992,28 +6330,75 @@ msgstr "" "Monte edilmiş bir cihazın milimetre cinsinden maksimum derinliği. Dört " "direkli raflar için bu, ön ve arka raylar arasındaki mesafedir." -#: netbox/dcim/models/racks.py:221 +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "maksimum ağırlık" + +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Raf için maksimum yük kapasitesi" + +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "form faktörü" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "raf tipi" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "raf türleri" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "Dış genişlik/derinlik ayarlarken bir birim belirtmelidir" + +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 +msgid "Must specify a unit when setting a maximum weight" +msgstr "Maksimum ağırlık ayarlarken bir birim belirtmelisiniz" + +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "raf rolü" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "raf rolleri" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "tesis kimliği" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Yerel olarak atanmış tanımlayıcı" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Fonksiyonel rol" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Bu rafı tanımlamak için kullanılan benzersiz bir etiket" + +#: netbox/dcim/models/racks.py:359 msgid "rack" msgstr "raf" -#: netbox/dcim/models/racks.py:222 +#: netbox/dcim/models/racks.py:360 msgid "racks" msgstr "rafları" -#: netbox/dcim/models/racks.py:237 +#: netbox/dcim/models/racks.py:375 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "Atanan konum üst siteye ait olmalıdır ({site})." -#: netbox/dcim/models/racks.py:241 -msgid "Must specify a unit when setting an outer width/depth" -msgstr "Dış genişlik/derinlik ayarlarken bir birim belirtmelidir" - -#: netbox/dcim/models/racks.py:245 -msgid "Must specify a unit when setting a maximum weight" -msgstr "Maksimum ağırlık ayarlarken bir birim belirtmelisiniz" - -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6022,7 +6407,7 @@ msgstr "" "Raf en az olmalıdır {min_height}Şu anda yüklü cihazları barındırmak için " "yeterli." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6031,29 +6416,29 @@ msgstr "" "Raf ünitesi numaralandırması şu adreste başlamalıdır: {position} veya şu " "anda yüklü cihazları barındırmak için daha az." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "Konum aynı siteden olmalı, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "birimler" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "raf rezervasyonu" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "raf rezervasyonları" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Geçersiz birim (ler) i {height}U rafı: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Aşağıdaki birimler zaten rezerve edilmiştir: {unit_list}" @@ -6155,11 +6540,11 @@ msgstr "Fesih A" msgid "Termination B" msgstr "Sonlandırma B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Aygıt A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Aygıt B" @@ -6194,13 +6579,13 @@ msgid "Reachable" msgstr "Ulaşılabilir" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Aygıtlar" @@ -6210,17 +6595,17 @@ msgid "VMs" msgstr "Sanal Makineler" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Yapılandırma Şablonu" @@ -6228,22 +6613,22 @@ msgstr "Yapılandırma Şablonu" msgid "Site Group" msgstr "Site Grubu" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP Adresi" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "IPv4 Adresi" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "IPv6 Adresi" @@ -6280,10 +6665,10 @@ msgstr "Güç bağlantı noktaları" msgid "Power outlets" msgstr "Elektrik prizleri" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6293,8 +6678,8 @@ msgstr "Elektrik prizleri" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Arayüzler" @@ -6320,8 +6705,8 @@ msgid "Module Bay" msgstr "Modül Yuvası" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6330,30 +6715,30 @@ msgstr "Modül Yuvası" msgid "Inventory Items" msgstr "Envanter Öğeleri" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Kablo Rengi" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "Meslektaşları Bağla" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Bağlı İşaretle" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Maksimum çekim (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Tahsis edilen çekiliş (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6362,12 +6747,12 @@ msgstr "Tahsis edilen çekiliş (W)" msgid "IP Addresses" msgstr "IP Adresleri" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "FHRP Grupları" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6378,52 +6763,52 @@ msgstr "FHRP Grupları" msgid "Tunnel" msgstr "Tünel" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Yalnızca Yönetim" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDC'ler" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Yüklü Modül" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Modül Seri" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Modül Varlık Etiketi" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Modül Durumu" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Bileşen" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Öğeler" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Cihaz Türleri" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Modül Çeşitleri" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Platformlar" @@ -6442,12 +6827,13 @@ msgid "U Height" msgstr "U Yüksekliği" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Örnekler" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6456,9 +6842,9 @@ msgstr "Örnekler" msgid "Console Ports" msgstr "Konsol Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6467,9 +6853,9 @@ msgstr "Konsol Bağlantı Noktaları" msgid "Console Server Ports" msgstr "Konsol Sunucusu Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6478,9 +6864,9 @@ msgstr "Konsol Sunucusu Bağlantı Noktaları" msgid "Power Ports" msgstr "Güç Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6489,9 +6875,9 @@ msgstr "Güç Bağlantı Noktaları" msgid "Power Outlets" msgstr "Elektrik Prizleri" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6499,9 +6885,9 @@ msgstr "Elektrik Prizleri" msgid "Front Ports" msgstr "Ön Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6510,23 +6896,26 @@ msgstr "Ön Bağlantı Noktaları" msgid "Rear Ports" msgstr "Arka Bağlantı Noktaları" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Cihaz Yuvaları" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Modül Bölmeleri" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Güç Beslemeleri" @@ -6539,41 +6928,45 @@ msgstr "Maksimum Kullanım" msgid "Available Power (VA)" msgstr "Kullanılabilir Güç (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Raflar" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Yükseklik" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Uzay" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Dış genişlik" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Dış Derinlik" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Maksimum Ağırlık" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Uzay" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Siteler" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "Test senaryosu peer_termination_type ayarlamalıdır" @@ -6582,77 +6975,77 @@ msgstr "Test senaryosu peer_termination_type ayarlamalıdır" msgid "Disconnected {count} {type}" msgstr "Bağlantısı kesildi {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Rezervasyon" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Raf Olmayan Cihazlar" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Yapılandırma Bağlamı" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Oluştur Yapılandırması" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Şablon oluşturulurken bir hata oluştu: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Sanal Makineler" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Yüklü cihaz {device} körfezde {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Kaldırılan cihaz {device} körfezden {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Çocuklar" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Eklenen üye {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Ana aygıt kaldırılamıyor {device} sanal kasadan." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Kaldırıldı {device} sanal kasadan {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Bilinmeyen ilgili nesne (ler): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "Özel alanların türünü değiştirmek desteklenmez." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "Bu komut dosyası için zamanlama etkin değil." @@ -6701,7 +7094,7 @@ msgid "Multiple objects" msgstr "Birden çok nesne" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Engelli" @@ -6736,7 +7129,7 @@ msgstr "Hayır" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Bağlantı" @@ -6756,65 +7149,56 @@ msgstr "Alfabetik (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Alfabetik (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Güncellendi" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Silinmiş" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Bilgi" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Başarı" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Uyarı" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Tehlike" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Hata ayıklama" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "Varsayılan" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Başarısızlık" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Saatlik" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 saat" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Günlük" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Haftalık" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 gün" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6822,18 +7206,16 @@ msgstr "30 gün" msgid "Create" msgstr "Oluştur" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Güncelleme" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6844,81 +7226,85 @@ msgstr "Güncelleme" msgid "Delete" msgstr "Sil" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Mavi" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "çivit mavisi" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Mor" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Pembe" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Kırmızı" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "Portakal" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Sarı" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Yeşil" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "çamurcun" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Mavi" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Gri" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Siyah" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Beyaz" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Web kancası" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Senaryo" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Bildirim" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -6991,60 +7377,60 @@ msgstr "Nesne sayısını sayarken uygulanacak filtreler" msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "Geçersiz biçim. Nesne filtreleri sözlük olarak iletilmelidir." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Nesne Listesi" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "İsteğe bağlı bir nesne listesi görüntüleyin." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Görüntülenecek nesnelerin varsayılan sayısı" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "Geçersiz biçim. URL parametreleri sözlük olarak iletilmelidir." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS Beslemesi" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Harici bir web sitesinden bir RSS beslemesi ekleyin." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "Akış URL'si" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Görüntülenecek maksimum nesne sayısı" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "" "Önbelleğe alınan içeriğin ne kadar süre saklanacağı (saniye cinsinden)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Yer İşaretleri" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Kişisel yer imlerinizi gösterin" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Bir olay kuralı için bilinmeyen eylem türü: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Olaylar boru hattı içe aktarılamıyor {name} hata: {error}" @@ -7053,210 +7439,219 @@ msgstr "Olaylar boru hattı içe aktarılamıyor {name} hata: {error}" msgid "Script module (ID)" msgstr "Komut dosyası modülü (ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "Veri dosyası (ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Grup (isim)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Küme türü" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Küme tipi (kısa ad)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Kiracı grubu" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Kiracı grubu (kısa ad)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "etiket" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Etiket (kısa ad)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Yerel yapılandırma bağlam verilerine sahiptir" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Kullanıcı adı" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Grup adı" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Gerekli" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Benzersiz olmalı" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "Kullanıcı arayüzü görünür" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "UI düzenlenebilir" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Klonlanabilir mi" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Minimum değer" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Maksimum değer" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Doğrulama regex" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Davranış" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Yeni pencere" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Düğme sınıfı" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "MIME türü" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Dosya uzantısı" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Ek olarak" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Paylaşılan" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "HTTP yöntemi" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "Yük URL'si" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "SSL doğrulama" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Gizli" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "CA dosya yolu" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "Oluşturulurken" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "Güncellemede" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Etkinlik türleri" -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "Silme üzerine" - -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "İşe başlarken" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "İş sonunda" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Aktif" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Nesne türleri" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Bir veya daha fazla atanmış nesne türü" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Alan veri türü (örn. Metin, tamsayı vb.)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Nesne türü" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Nesne türü (nesne veya çoklu nesne alanları için)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Seçim seti" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Seçim kümesi (seçim alanları için)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Özel alanın kullanıcı arayüzünde görüntülenip görüntülenmediği" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Özel alanın kullanıcı arayüzünde düzenlenebilir olup olmadığı" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "Kullanılacak önceden tanımlanmış seçeneklerin temel kümesi (varsa)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7265,205 +7660,201 @@ msgstr "" "seçeneklerinin alıntılanmış dizesi: “Seçim1:First Choice, Choice2:Second " "Choice”" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "düğme sınıfı" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "Bir gruptaki ilk bağlantının sınıfı açılır düğme için kullanılacaktır." -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Bu kuralı tetikleyecek olay türü (ler)" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Eylem nesnesi" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Noktalı yol olarak Webhook adı veya komut dosyası module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Web kancası {name} bulunamadı" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Senaryo {name} bulunamadı" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Atanan nesne türü" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "Girişin sınıflandırılması" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Kullanıcılar" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "" +"Virgülle ayrılmış, çift tırnak işareti ile çevrelenmiş kullanıcı adları" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Gruplar" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Virgülle ayrılmış, çift tırnak işareti ile çevrelenmiş grup adları" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "İlgili nesne türü" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Alan tipi" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Seçenekler" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Veriler" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Veri dosyası" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "İçerik türleri" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" -msgstr "HTTP içerik türü" - -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Olaylar" - -#: netbox/extras/forms/filtersets.py:265 -msgid "Action type" -msgstr "Eylem türü" - -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Nesne oluşturma" +msgstr "HTTP içerik türü" #: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Nesne güncellemeleri" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Nesne silme" +msgid "Event type" +msgstr "Etkinlik türü" -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "İş başlıyor" +#: netbox/extras/forms/filtersets.py:291 +msgid "Action type" +msgstr "Eylem türü" #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "İş sonlandırmaları" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Etiketli nesne türü" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "İzin verilen nesne türü" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Bölgeler" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Site grupları" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Konumlar" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Cihaz türleri" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Roller" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Küme türleri" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Küme grupları" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Kümeler" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Kiracı grupları" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Sonra" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Önce" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Zaman" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Bu özel alana sahip nesnenin türü (leri) i" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Eylem" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Varsayılan değer" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "İlgili nesnenin türü (yalnızca nesne/çoklu nesne alanları için)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "İlgili nesne filtresi" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Sorgu parametrelerini JSON nesnesi olarak belirtin." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Özel Alan" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Davranış" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Değerler" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7471,7 +7862,7 @@ msgstr "" "Bu alanda depolanan veri türü. Nesne/çoklu nesne alanları için aşağıda " "ilgili nesne türünü seçin." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7479,7 +7870,11 @@ msgstr "" "Bu, form alanı için yardım metni olarak görüntülenecektir. Markdown " "desteklenir." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "İlgili Nesne" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7487,16 +7882,16 @@ msgstr "" "Satır başına bir seçenek girin. Her seçim için iki nokta üst üste eklenerek " "isteğe bağlı bir etiket belirtilebilir. Örnek:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Özel Bağlantı" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Şablonlar" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7505,7 +7900,7 @@ msgstr "" "Bağlantı metni için Jinja2 şablon kodu. Nesneyi {example} şeklinde referans " "alabilirsiniz. Boş metin olarak görüntülenen bağlantılar görüntülenmez." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." @@ -7513,54 +7908,58 @@ msgstr "" "Bağlantı metni için Jinja2 şablon kodu. Nesneyi {example} şeklinde referans " "alabilirsiniz. " -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Şablon kodu" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Dışa Aktarma Şablonu" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Oluşturma" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "Şablon içeriği aşağıda seçilen uzak kaynaktan doldurulur." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Yerel içerik veya veri dosyası belirtmelidir" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Kaydedilen Filtre" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "Bir bildirim grubu en az bir kullanıcı veya grup belirtir." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "HTTP isteği" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Eylem seçimi" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Koşulları girin JSON biçim." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7568,55 +7967,33 @@ msgstr "" "Eyleme iletilecek parametreleri girin JSON" " biçim." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Etkinlik Kuralı" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Koşullar" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Kreasyonlar" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Güncellemeler" - -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Silme" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Tetikleyiciler" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "İş yürütmeleri" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Bildirim grubu" -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Kiracılar" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Ödev" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "Veriler aşağıda seçilen uzak kaynaktan doldurulur." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Yerel veri veya veri dosyası belirtmelidir" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "İçerik" @@ -7664,47 +8041,25 @@ msgstr "Komut dosyasının yürütülmesini belirli bir zamana planlayın" msgid "Interval at which this script is re-run (in minutes)" msgstr "Bu komut dosyasının yeniden çalıştırıldığı aralık (dakika cinsinden)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Dizinleyici bulunamadı!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "zaman" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "kullanıcı adı" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "istek kimliği" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "aksiyon" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "değişiklik öncesi veriler" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Veritabanı değişiklikleri otomatik olarak geri alındı." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "değişim sonrası veriler" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Komut dosyası hatayla iptal edildi: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "nesne değişikliği" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Bir istisna oluştu: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "nesne değişiklikleri" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Veritabanı değişiklikleri hata nedeniyle geri alındı." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "Değişiklik günlüğü bu nesne türü için desteklenmez ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Dizinleyici bulunamadı!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7756,31 +8111,31 @@ msgstr "yapılandırma şablonu" msgid "config templates" msgstr "yapılandırma şablonları" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Bu alanın geçerli olduğu nesne (ler) dir." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Bu özel alanın tuttuğu veri türü" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "Bu alanın eşlendiği NetBox nesnesinin türü (nesne alanları için)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "İç alan adı" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Yalnızca alfasayısal karakterlere ve alt çizgilere izin verilir." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "Özel alan adlarında çift alt çizgilere izin verilmez." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7788,31 +8143,39 @@ msgstr "" "Kullanıcılara görüntülenen alanın adı (belirtilmezse, 'alanın adı " "kullanılacaktır)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "grup adı" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Aynı gruptaki özel alanlar birlikte görüntülenecektir" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "gereklidir" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Eğer true ise, yeni nesneler oluştururken veya varolan bir nesneyi " -"düzenlerken bu alan gereklidir." +"Yeni nesneler oluştururken veya mevcut bir nesneyi düzenlerken bu alan " +"gereklidir." + +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "benzersiz olmalı" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "Bu alanın değeri atanan nesne için benzersiz olmalıdır" -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "arama ağırlığı" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7820,11 +8183,11 @@ msgstr "" "Arama için ağırlıklandırma. Düşük değerler daha önemli kabul edilir. Arama " "ağırlığı sıfır olan alanlar göz ardı edilecektir." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "filtre mantığı" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7832,11 +8195,11 @@ msgstr "" "Loose, belirli bir dizgenin herhangi bir örneğiyle eşleşir; tam olarak tüm " "alanla eşleşir." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "varsayılan" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7844,35 +8207,44 @@ msgstr "" "Alan için varsayılan değer (JSON değeri olmalıdır). Dizeleri çift tırnak " "işaretleriyle kapsülleyin (örn. “Foo”)." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Bir query_params dikt kullanarak nesne seçim seçeneklerini filtreleyin (bir " +"JSON değeri olmalıdır). Dizeleri çift tırnak işareti ile kapsülleyin (örn. " +"“Foo”)." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "ekran ağırlığı" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "Daha yüksek ağırlığa sahip alanlar bir formda daha düşük görünür." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "minimum değer" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "İzin verilen minimum değer (sayısal alanlar için)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "maksimum değer" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "İzin verilen maksimum değer (sayısal alanlar için)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "doğrulama regex" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7883,275 +8255,245 @@ msgstr "" "zorlamak için ^ ve $ kullanın. Örneğin, ^ [A-Z]{3}$ değerleri " "tam olarak üç büyük harfle sınırlayacaktır." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "seçim seti" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Özel alanın kullanıcı arayüzünde görüntülenip görüntülenmeyeceğini belirtir" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Özel alan değerinin kullanıcı arayüzünde düzenlenip düzenlenemeyeceğini " "belirtir" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "klonlanabilir" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Nesneleri klonlarken bu değeri çoğaltın" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "özel alan" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "özel alanlar" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Geçersiz varsayılan değer”{value}“: {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "Minimum değer yalnızca sayısal alanlar için ayarlanabilir" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "Maksimum değer yalnızca sayısal alanlar için ayarlanabilir" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Düzenli ifade doğrulaması yalnızca metin ve URL alanları için desteklenir" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "Boole alanları için benzersizlik uygulanamaz" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Seçim alanları bir dizi seçenek belirtmelidir." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Seçenekler yalnızca seçim alanlarında ayarlanabilir." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Nesne alanları bir nesne türü tanımlamalıdır." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} alanlar bir nesne türü tanımlayamaz." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "" +"İlgili bir nesne filtresi yalnızca nesne alanları için tanımlanabilir." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Filtre, öznitelikleri değerlerle eşleyen bir sözlük olarak tanımlanmalıdır." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Doğru" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Yanlış" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "Değerler bu normal ifadeyle eşleşmelidir: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "Değer bir dize olmalıdır." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "Değer regex ile eşleşmelidir '{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "Değer bir tamsayı olmalıdır." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "Değer en az olmalıdır {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "Değer geçmemelidir {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "Değer ondalık olmalıdır." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "Değer doğru veya yanlış olmalıdır." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Tarih değerleri ISO 8601 biçiminde olmalıdır (YYYY-AA-GG)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Tarih ve saat değerleri ISO 8601 biçiminde olmalıdır (YYYY-MM-DD HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Geçersiz seçim ({value}) seçim seti için {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Geçersiz seçim (ler) ({value}) seçim seti için {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "Değer bir nesne kimliği olmalıdır, değil {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "Değer, nesne kimliklerinin bir listesi olmalıdır, değil {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Geçersiz nesne kimliği bulundu: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Zorunlu alan boş olamaz." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Önceden tanımlanmış seçeneklerin temel kümesi (isteğe bağlı)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Seçenekler otomatik olarak alfabetik olarak sıralanır" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "özel alan seçim kümesi" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "özel alan seçim kümeleri" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Temel veya ekstra seçenekleri tanımlamalıdır." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "plan" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "yapılandırma" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "gösterge paneli" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "gösterge tabloları" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "nesne türleri" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Bu kuralın geçerli olduğu nesne (ler) dir." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "yaratma üzerine" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Eşleşen bir nesne oluşturulduğunda tetiklenir." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "güncellemede" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Eşleşen bir nesne güncellendiğinde tetiklenir." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "silme üzerine" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Eşleşen bir nesne silindiğinde tetiklenir." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "iş başında" +msgid "The types of event which will trigger this rule." +msgstr "Bu kuralı tetikleyecek olay türleri." -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Eşleşen bir nesne için bir iş başlatıldığında tetiklenir." - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "iş sonunda" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Eşleşen bir nesne için bir iş sona erdiğinde tetiklenir." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "koşullar" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Olayın oluşturulup oluşturulmayacağını belirleyen bir dizi koşul." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "eylem türü" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Eylem nesnesine iletilecek ek veriler" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "olay kuralı" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "etkinlik kuralları" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"En az bir olay türü seçilmelidir: oluştur, güncelle, sil, iş başlama ve/veya" -" iş sonu." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8161,7 +8503,7 @@ msgstr "" "çağrılacaktır. Jinja2 şablon işleme, istek gövdesi ile aynı bağlamda " "desteklenir." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available burada." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "ek başlıklar" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8187,11 +8529,11 @@ msgstr "" "İsim: Değer. Jinja2 şablon işleme, istek gövdesi ile aynı " "bağlamda desteklenir (aşağıda)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "vücut şablonu" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8204,11 +8546,11 @@ msgstr "" "Kullanıcı adı, istek_kimliği, ve " "veri." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "gizli" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8218,16 +8560,16 @@ msgstr "" "olarak sırrı kullanan yük gövdesinin bir HMAC hex özetini içeren başlık. Sır" " istekte iletilmez." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "" "SSL sertifikası doğrulamasını etkinleştirin. Dikkatle devre dışı bırakın!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "CA Dosya Yolu" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8235,65 +8577,65 @@ msgstr "" "SSL doğrulaması için kullanılacak belirli CA sertifika dosyası. Sistem " "varsayılanlarını kullanmak için boş bırakın." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "web kancası" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "web kancaları" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "" "SSL doğrulaması devre dışı bırakılmışsa bir CA sertifika dosyası " "belirtmeyin." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Bu bağlantının geçerli olduğu nesne türü (ler) dir." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "bağlantı metni" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Bağlantı metni için Jinja2 şablon kodu" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "bağlantı URL'si" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Bağlantı URL'si için Jinja2 şablon kodu" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Aynı gruba sahip bağlantılar açılır menü olarak görünecektir" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "yeni pencere" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Bağlantıyı yeni bir pencerede açmaya zorla" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "özel bağlantı" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "özel bağlantılar" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Bu şablonun uygulandığı nesne türü (ler) dir." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8301,112 +8643,159 @@ msgstr "" "Jinja2 şablon kodu. Dışa aktarılan nesnelerin listesi, adı verilen bir " "bağlam değişkeni olarak iletilir sorgulama." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "Varsayılan olarak metin/düz; karakter kümesi = utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "dosya uzantısı" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Oluşturulan dosya adına eklenecek uzantı" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "ek olarak" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Dosya ek olarak indir" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "dışa aktarma şablonu" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "dışa aktarma şablonları" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "“{name}“ayrılmış bir isimdir. Lütfen farklı bir isim seçin." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Bu filtrenin uygulandığı nesne türü (ler) dir." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "paylaşılan" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "kaydedilmiş filtre" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "kaydedilmiş filtreler" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Filtre parametreleri, anahtar kelime argümanları sözlüğü olarak " "saklanmalıdır." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "görüntü yüksekliği" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "görüntü genişliği" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "görüntü eki" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "görüntü ekleri" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "Görüntü ekleri bu nesne türüne atanamaz ({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "çeşit" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "dergi girişi" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "dergi girişleri" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Günlüğe kaydetme bu nesne türü için desteklenmez ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "yer imi" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "yer imleri" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "Yer imleri bu nesne türüne atanamaz ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "okumak" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "olay" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "bildirim" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "bildirimleri" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Bu tür nesneler ({type}) bildirimleri desteklemez." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "gruplar" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "kullanıcıları" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "bildirim grubu" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "bildirim grupları" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "abonelik" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "abonelikler" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "yürütülebilir" @@ -8447,19 +8836,19 @@ msgstr "önbelleğe alınan değer" msgid "cached values" msgstr "önbelleğe alınan değerler" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "şube" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "dallar" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "aşamalı değişim" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "aşamalı değişiklikler" @@ -8483,85 +8872,87 @@ msgstr "etiketli öğe" msgid "tagged items" msgstr "etiketli öğeler" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Komut Dosyası Verileri" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Script Yürütme Parametreleri" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Veritabanı değişiklikleri otomatik olarak geri alındı." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Komut dosyası hatayla iptal edildi: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Bir istisna oluştu: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Veritabanı değişiklikleri hata nedeniyle geri alındı." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "Silme işlemi bir koruma kuralı tarafından engellenir: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Görevden alma" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Nesne Türleri" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Benzersizliği Doğrula" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "Görünür" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Düzenlenebilir" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "İlgili Nesne Türü" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Seçim Seti" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Klonlanabilir mi" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Minimum Değer" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Maksimum Değer" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Doğrulama Regex" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Saymak" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Alfabetik olarak sıralayın" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Yeni Pencere" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Ek Olarak" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8571,63 +8962,54 @@ msgstr "Ek Olarak" msgid "Data File" msgstr "Veri Dosyası" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Senkronize" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Görüntü" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Boyut (Bayt)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Okumak" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "SSL Doğrulama" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "İş Başlangıcı" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "İş Sonu" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Etkinlik Türleri" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Cihaz Rolleri" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "Ad Soyad" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "İstek Kimliği" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Yorumlar (Kısa)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Çizgi" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Seviye" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Mesaj" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Yöntemi" @@ -8658,37 +9040,37 @@ msgstr "Doğrulama kuralları sözlük olarak geçirilmelidir" msgid "Custom validation failed for {attribute}: {exception}" msgstr "Özel doğrulama başarısız oldu {attribute}: {exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Geçersiz öznitelik”{name}“istek için" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "\"{name}\" niteliği {model} için geçerli değil." -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Kontrol paneliniz sıfırlandı." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Eklenen widget: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Güncellenmiş widget: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Silinen widget: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Widget silinirken hata oluştu: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "Komut dosyası çalıştırılamıyor: RQ işçi işlemi çalışmıyor." @@ -8731,10 +9113,6 @@ msgstr "ZÜMRÜT" msgid "Loopback" msgstr "Geri döngü" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "İkincil" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8760,19 +9138,19 @@ msgstr "Düz metin" msgid "Invalid IP address format: {address}" msgstr "Geçersiz IP adresi biçimi: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Hedefi içe aktarma" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Hedefi içe aktarma (isim)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Dışa aktarma hedefi" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Dışa aktarma hedefi (isim)" @@ -8837,16 +9215,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Bu önek veya IP'yi içeren önekler" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Maske uzunluğu" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (KİMLİĞİ)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "VLAN numarası (1-4094)" @@ -8866,23 +9244,23 @@ msgid "Parent prefix" msgstr "Ebeveyn öneki" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Sanal makine (isim)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "Sanal makine (ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Arayüz (isim)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "VM arabirimi (isim)" @@ -8910,19 +9288,19 @@ msgstr "Hizmet (ID)" msgid "NAT inside IP address (ID)" msgstr "IP adresi içinde NAT (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "IP adresi (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP adresi" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "Birincil IPv4 (ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "Birincil IPv6 (ID)" @@ -8955,17 +9333,17 @@ msgstr "CIDR maskesi (örn. /24) gereklidir." msgid "Address pattern" msgstr "Adres deseni" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Benzersiz alanı uygulayın" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Özeldir" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -8978,20 +9356,20 @@ msgstr "Özeldir" msgid "RIR" msgstr "ZIVIR" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Eklenen tarih" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN Grubu" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9000,49 +9378,49 @@ msgstr "VLAN Grubu" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Önek uzunluğu" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Havuz mu" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Tamamen kullanılmış gibi davran" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "VLAN Ataması" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS adı" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Protokol" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Grup Kimliği" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9054,154 +9432,140 @@ msgstr "Grup Kimliği" msgid "Authentication type" msgstr "Kimlik doğrulama türü" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Kimlik doğrulama anahtarı" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Kimlik Doğrulama" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "Minimum çocuk VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Maksimum çocuk VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Kapsam türü" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "VLAN ID aralıkları" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Kapsam" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Site ve Grup" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Limanlar" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Rota hedeflerini içe aktarma" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Rota hedeflerini dışa aktarma" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "Atanmış RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "VLAN grubu (varsa)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Atanan arayüzün ana cihazı (varsa)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Sanal makine" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "Atanan arabirimin üst VM'si (varsa)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Atanmış arayüz" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Birincildir" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Bunu atanan cihaz için birincil IP yapın" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Aygıt veya sanal makine belirtilmemiş; birincil IP olarak ayarlanamıyor" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "Arayüz belirtilmedi; birincil IP olarak ayarlanamıyor" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Kimlik doğrulama türü" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Kapsam türü (uygulama ve model)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Minimum çocuk VLAN VID (varsayılan: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Maksimum alt VLAN VID (varsayılan: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Atanmış VLAN grubu" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "IP protokolü" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Bir VM'ye atanmadıysa gereklidir" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Bir cihaza atanmadıysa gereklidir" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} bu cihaza/VM'ye atanmamıştır." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Rota Hedefleri" @@ -9277,31 +9641,34 @@ msgstr "Bir arayüze atandı" msgid "DNS Name" msgstr "DNS Adı" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "VLAN KİMLİĞİ" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLAN'lar" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Minimum VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "VLAN Kimliği içerir" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Maksimum VID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "VLAN KİMLİĞİ" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9370,11 +9737,16 @@ msgstr "Sanal IP Adresi" msgid "Assignment already exists" msgstr "Atama zaten var" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "VLAN kimlikleri" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "Çocuk VLAN'ları" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9382,33 +9754,33 @@ msgstr "" "Bir veya daha fazla bağlantı noktası numarasının virgülle ayrılmış listesi. " "Bir aralık bir tire kullanılarak belirtilebilir." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Hizmet Şablonu" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Liman (lar)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Hizmet" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Hizmet şablonu" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "Şablondan" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Özel" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9448,7 +9820,7 @@ msgstr "grup kimliği" msgid "protocol" msgstr "protokol" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "kimlik doğrulama türü" @@ -9464,10 +9836,6 @@ msgstr "FHRP grubu" msgid "FHRP groups" msgstr "FHRP grupları" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "öncelik" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "FHRP grup ataması" @@ -9484,7 +9852,7 @@ msgstr "özel" msgid "IP space managed by this RIR is considered private" msgstr "Bu RIR tarafından yönetilen IP alanı özel olarak kabul edilir" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR'ler" @@ -9730,22 +10098,6 @@ msgid "" "A service must be associated with either a device or a virtual machine." msgstr "Bir hizmet, bir cihaz veya sanal makine ile ilişkilendirilmelidir." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "minimum VLAN kimliği" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Çocuk VLAN'ın izin verilen en düşük kimliği" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "maksimum VLAN kimliği" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Çocuk VLAN'ın izin verilen en yüksek kimliği" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "VLAN grupları" @@ -9758,38 +10110,40 @@ msgstr "scope_id olmadan scope_type ayarlanamıyor." msgid "Cannot set scope_id without scope_type." msgstr "scope_type olmadan scope_id ayarlanamıyor." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Aralıklar üst üste gelemez." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" -"Maksimum çocuk VID, minimum çocuk VID'den büyük veya ona eşit olmalıdır" +"Maksimum çocuk VID, minimum çocuk VID'den büyük veya ona eşit olmalıdır " +"({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "Bu VLAN'ın atandığı belirli site (varsa)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "VLAN grubu (isteğe bağlı)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "Sayısal VLAN Kimliği (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Bu VLAN'ın operasyonel durumu" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "Bu VLAN'ın birincil işlevi" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLAN'lar" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9798,11 +10152,10 @@ msgstr "" "VLAN {group} adlı gruba (kapsam: {scope}) atandığı için; {site} adlı siteye " "de atanamaz ." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "" -"VID arasında olmalı {minimum} ve {maximum} gruptaki VLAN'lar için {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "VID aralıklarda olmalıdır {ranges} gruptaki VLAN'lar için {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9820,8 +10173,8 @@ msgstr "benzersiz alanı zorunlu kılmak" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Bu VRF içinde yinelenen önek/IP adreslerini önleyin" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF'ler" @@ -9849,8 +10202,8 @@ msgstr "Site Sayısı" msgid "Provider Count" msgstr "Sağlayıcı Sayısı" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Agregalar" @@ -9859,21 +10212,21 @@ msgid "Added" msgstr "Eklendi" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Önekler" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Kullanımı" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "IP Aralıkları" @@ -9918,7 +10271,11 @@ msgstr "Atanan Nesne" msgid "Scope Type" msgstr "Kapsam Türü" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "VID Aralıkları" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VİDEO" @@ -9982,11 +10339,11 @@ msgstr "Cihaz Arayüzleri" msgid "VM Interfaces" msgstr "VM Arayüzleri" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Bu alan boş olmayabilir." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -9994,22 +10351,35 @@ msgstr "" "Değer doğrudan iletilmelidir (örn. “foo”: 123); sözlük veya liste " "kullanmayın." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} geçerli bir seçim değildir." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Geçersiz içerik türü: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "" "Geçersiz değer. İçerik türünü 'olarak belirtin.'." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "Aralıklar formda belirtilmelidir (alt, üst)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Menzil sınırları tamsayılar olarak tanımlanmalıdır." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} get_view_name () uygulamasını uygulamalıdır" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Geçersiz izin {permission} model için {model}" @@ -10337,48 +10707,53 @@ msgstr "Etiketleri kaldır" msgid "{class_name} must specify a model class." msgstr "{class_name} bir model sınıfı belirtmelidir." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Bilinmeyen alan adı '{name}'özel alan verilerinde." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Özel alan için geçersiz değer '{name}': {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Özel alan '{name}'benzersiz bir değere sahip olmalıdır." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Gerekli özel alan eksik '{name}'." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Uzak veri kaynağı" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "veri yolu" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Uzak dosyanın yolu (veri kaynağı köküne göre)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "otomatik senkronizasyon etkin" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "" "Veri dosyası güncellendiğinde verilerin otomatik senkronizasyonunu " "etkinleştir" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "senkronize edilen tarih" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} bir sync_data () yöntemi uygulamalıdır." @@ -10392,217 +10767,230 @@ msgid "Site Groups" msgstr "Site Grupları" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Raf Rolleri" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Yükselmeler" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Kiracı Grupları" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "İletişim Grupları" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "İletişim Rolleri" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "İletişim Atamaları" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Raf Rolleri" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Yükselmeler" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Raf Çeşitleri" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Modüller" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Sanal Cihaz Bağlamları" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "İmalatçıları" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Cihaz Bileşenleri" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Envanter Öğesi Rolleri" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "Bağlantılar" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Kablolar" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Kablosuz Bağlantılar" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Arayüz Bağlantıları" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Konsol Bağlantıları" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Güç Bağlantıları" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Kablosuz LAN Grupları" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Önek ve VLAN Rolleri" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "ASN Aralıkları" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "VLAN Grupları" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Hizmet Şablonları" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "HİZMETLER" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Tüneller" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Tünel Grupları" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Tünel Sonlandırmaları" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPN'ler" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Fesih" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "IKE Teklifleri" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "IKE Politikaları" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "IPSec Önerileri" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "IPsec İlkeleri" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "IPsec Profilleri" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Sanallaştırma" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Sanal Diskler" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Küme Türleri" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Küme Grupları" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Devre Türleri" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Devre Grupları" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Grup Ödevleri" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "Devre Sonlandırmaları" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Sağlayıcılar" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Sağlayıcı Hesapları" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Sağlayıcı Ağları" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Güç Panelleri" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Yapılandırmalar" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Yapılandırma Bağlamları" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Yapılandırma Şablonları" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Özelleştirme" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10615,114 +11003,108 @@ msgstr "Özelleştirme" msgid "Custom Fields" msgstr "Özel Alanlar" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Özel Alan Seçenekleri" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Özel Bağlantılar" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Şablonları Dışa Aktar" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Kaydedilen Filtreler" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Görüntü Ekleri" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Operasyonlar" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Entegrasyonlar" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Veri Kaynakları" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Etkinlik Kuralları" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Web kancaları" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "Meslekler" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Günlüğe kaydetme" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Bildirim Grupları" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Dergi Girişleri" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Değişim Günlüğü" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "Yönetici" -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Kullanıcılar" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Gruplar" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "API Belirteçleri" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "İzinler" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Sistem" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "Eklentiler" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Yapılandırma Geçmişi" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Arka Plan Görevleri" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "Eklentiler" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10754,31 +11136,22 @@ msgstr "" "{template_extension} Netbox.plugins.pluginTemplateExtension'ın bir alt " "sınıfı değildir!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"PluginTemplateExtension sınıfı {template_extension} geçerli bir model " -"tanımlamaz!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} Netbox.Plugins.PluginMenuItem örneği olmalıdır" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} Netbox.Plugins.PluginMenuItem örneği olmalıdır" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} Netbox.Plugins.PluginMenuButton örneği olmalıdır" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context bir sözlük olmalıdır" @@ -10857,75 +11230,79 @@ msgstr "Başlatıldıktan sonra kayıt defterine mağazalar eklenemiyor" msgid "Cannot delete stores from registry" msgstr "Mağazalar kayıt defterinden silinemiyor" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "Çek" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "Danca" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Alman" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "İngilizce" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "İspanyolca" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "Fransızca" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "İtalyan" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Japonca" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Hollandalı" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Lehçe" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "Portekizce" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Rusça" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Türkçe" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "Ukraynalı" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "Çince" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Tümünü seç" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Tümünü değiştir" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Açılır menüyü Aç/Kapat" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Hata" @@ -10978,24 +11355,24 @@ msgstr "Yeniden adlandırıldı {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Silinmiş {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Değişiklik Günlüğü" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "dergi" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "Veriler senkronize edilemiyor: Veri dosyası kümesi yok." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Senkronize edilmiş veriler {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Senkronize {count} {object_type}" @@ -11005,7 +11382,7 @@ msgstr "Senkronize {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} get_children () uygulamasını uygulamalıdır" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11041,11 +11418,11 @@ msgstr "İsteğinizle ilgili bir sorun oluştu. Lütfen bir yöneticiye başvuru msgid "The complete exception is provided below" msgstr "Tam istisna aşağıda verilmiştir" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Python sürümü" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "NetBox sürümü" @@ -11069,14 +11446,26 @@ msgstr "GitHub'da" msgid "Home Page" msgstr "Ana Sayfa" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Profil" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Bildirimler" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Abonelikler" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Tercihler" @@ -11084,7 +11473,7 @@ msgstr "Tercihler" msgid "Change Password" msgstr "Şifreyi Değiştir" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11109,7 +11498,7 @@ msgstr "Şifreyi Değiştir" msgid "Cancel" msgstr "İptal" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11183,7 +11572,7 @@ msgid "Superuser" msgstr "Süper kullanıcı" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Personel" @@ -11198,19 +11587,19 @@ msgstr "Atanan Gruplar" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11231,7 +11620,7 @@ msgstr "API Belirteçlerim" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Simge" @@ -11252,32 +11641,41 @@ msgstr "Bir Jeton Ekle" msgid "Home" msgstr "Ana Sayfa" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "NetBox Motif" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "NetBox Logosu" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Dokümanlar" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "REST API belgeleri" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "GraphQL API" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "NetBox Labs Desteği" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Kaynak Kodu" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Topluluk" @@ -11289,6 +11687,11 @@ msgstr "Yükleme Tarihi" msgid "Termination Date" msgstr "Fesih Tarihi" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Grup Atama" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "Takas Devresi Sonlandırmaları" @@ -11306,6 +11709,14 @@ msgstr "Bir taraf" msgid "Z side" msgstr "Z tarafı" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Devre Atama" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Devre Grubu Ataması" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "Devre Ekle" @@ -11330,7 +11741,7 @@ msgstr "Ekle" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11451,13 +11862,10 @@ msgstr "Yeni Değer" msgid "Changed" msgstr "Değişti" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Son Güncelleme" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Boyut" @@ -11539,25 +11947,119 @@ msgstr "Kullanıcı tercihleri" msgid "Job retention" msgstr "İş tutma" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "İş" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Tarafından Oluşturuldu" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Çizelgeleme" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "her bir %(interval)s dakikalar" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Değişim" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Farkı" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Önceki" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Sonraki" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Nesne Oluşturuldu" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Nesne Silindi" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Değişiklik Yok" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Ön Değişim Verileri" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Uyarı: Atomik olmayan değişimin önceki değişiklik kaydıyla karşılaştırılması" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Değişim Sonrası Veriler" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Tümünü Gör %(count)s Değişiklikler" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Günlük tutma işlemini değiştir" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "günler" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "belirsiz" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Yüklü değil" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Genel Bakış" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Yüklemek" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Eklenti Ayrıntıları" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "Özet" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Lisans" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Sürüm Geçmişi" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Yerel Kurulum Talimatları" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11569,8 +12071,8 @@ msgstr "Arka Plan Kuyrukları" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11629,7 +12131,7 @@ msgid "Queued Jobs" msgstr "Kuyruklu İşler" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11689,39 +12191,43 @@ msgstr "Dışa Aktar" msgid "System Status" msgstr "Sistem Durumu" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "NetBox sürümü" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Django sürümü" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "PostgreSQL sürümü" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Veritabanı adı" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Veritabanı boyutu" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Kullanılamıyor" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "RQ çalışanları" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "varsayılan kuyruk" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Sistem zamanı" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Geçerli Yapılandırma" @@ -11821,14 +12327,15 @@ msgstr "Kabine bağlı değil" msgid "GPS Coordinates" msgstr "GPS Koordinatları" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Haritalayın" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Harita" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Varlık Etiketi" @@ -11848,19 +12355,19 @@ msgstr "Yönetim" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT için" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NAT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Güç Kullanımı" @@ -11888,7 +12395,7 @@ msgid "Leg" msgstr "Bacak" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Hizmet ekle" @@ -12149,6 +12656,22 @@ msgstr "Temiz" msgid "Clear All" msgstr "Tümünü Temizle" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Montaj Derinliği" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Başlangıç Ünitesi" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Azalan Birimler" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Raf yüksekliği" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Çocuk Arayüzü Ekle" @@ -12211,8 +12734,8 @@ msgstr "Kanal Genişliği" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12302,49 +12825,33 @@ msgstr "Maksimum Çekiliş" msgid "Allocated Draw" msgstr "Tahsis Edilen Çekiliş" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Alan Kullanımı" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "azalan" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "artan" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Başlangıç Ünitesi" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Montaj Derinliği" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Raf Ağırlığı" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Maksimum Ağırlık" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Toplam Ağırlık" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Resimler ve Etiketler" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Yalnızca resimler" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Yalnızca etiketler" @@ -12357,6 +12864,10 @@ msgstr "Rezervasyon ekle" msgid "View List" msgstr "Listeyi Görüntüle" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Raf görünümünü seçin" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Sıralamaya Göre" @@ -12410,10 +12921,6 @@ msgstr "Site zamanı" msgid "Physical Address" msgstr "Fiziksel Adres" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Harita" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Kargo Adresi" @@ -12454,7 +12961,7 @@ msgstr "Yeni Üye Ekle" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Eylemler" @@ -12624,46 +13131,42 @@ msgid "Group Name" msgstr "Grup Adı" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Benzersiz Olmalı" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Klonlanabilir" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Varsayılan Değer" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Arama Ağırlığı" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Filtre Mantığı" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Ekran Ağırlığı" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Kullanıcı Arayüzü Görünür" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "UI Düzenlenebilir" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Doğrulama Kuralları" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Minimum Değer" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Maksimum Değer" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Düzenli İfade" @@ -12677,11 +13180,11 @@ msgstr "Düğme Sınıfı" msgid "Assigned Models" msgstr "Atanan Modeller" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Bağlantı Metni" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "Bağlantı URL'si" @@ -12706,6 +13209,14 @@ msgstr "" "Bu değişiklik sadece etkiliyor sizin kontrol paneli, ve diğer " "kullanıcıları etkilemeyecektir." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "widget yapılandırması" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Widget'ı kapat" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Widget Ekle" @@ -12738,13 +13249,9 @@ msgstr "RSS beslemesini getirirken bir sorun oluştu" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "İş başlangıcı" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "İş sonu" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Koşullar" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12786,20 +13293,15 @@ msgstr "Sonuçlar beklemede" msgid "Journal Entry" msgstr "Dergi Girişi" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Günlük tutma işlemini değiştir" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "günler" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Bildirim Grubu" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "belirsiz" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Atanmadı" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12813,53 +13315,6 @@ msgstr "Kaynak Bağlamları" msgid "New Journal Entry" msgstr "Yeni Dergi Girişi" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Değişim" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Farkı" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Önceki" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Sonraki" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Nesne Oluşturuldu" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Nesne Silindi" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Değişiklik Yok" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Ön Değişim Verileri" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "" -"Uyarı: Atomik olmayan değişimin önceki değişiklik kaydıyla karşılaştırılması" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Değişim Sonrası Veriler" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Tümünü Gör %(count)s Değişiklikler" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Rapor" @@ -12870,7 +13325,7 @@ msgstr "Komut dosyalarını çalıştırma izniniz yok" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Komut Dosyasını Çalıştır" @@ -12883,27 +13338,27 @@ msgstr "Komut dosyası yüklenirken hata oluştu" msgid "Script no longer exists in the source file." msgstr "Kaynak dosyada komut dosyası artık mevcut değil." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Son Koşu" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Komut dosyası artık kaynak dosyada mevcut değil" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Asla" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Tekrar koş" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Komut Dosyası Bulunamadı" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -12918,6 +13373,14 @@ msgstr "" msgid "Results" msgstr "Sonuçlar" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Günlük eşiği" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Hepsi" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Etiketli Öğeler" @@ -12950,11 +13413,11 @@ msgstr "HTTP İçerik Türü" msgid "SSL Verification" msgstr "SSL Doğrulama" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Ek Başlıklar" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Vücut Şablonu" @@ -13030,6 +13493,10 @@ msgstr "Alan Seçenekleri" msgid "Accessor" msgstr "Aksesuar" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "seçimler" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "İthalat Değeri" @@ -13195,6 +13662,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Bu işlem sonucunda aşağıdaki nesneler silinecektir." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "önce" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Okunmamış bildirim yok" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Tüm bildirimler" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Seçiniz" @@ -13262,15 +13741,23 @@ msgstr "Hızlı arama" msgid "Saved filter" msgstr "Kaydedilen filtre" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Net sipariş" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Yardım Merkezi" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Django Yöneticisi" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Oturumu Kapat" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Oturum aç" @@ -13318,10 +13805,6 @@ msgstr "Toplu Oluşturma" msgid "Create Group" msgstr "Grup Oluştur" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Grup Atama" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "Sanal IP'ler" @@ -13455,10 +13938,6 @@ msgstr "Önek Ekle" msgid "Add VLAN" msgstr "VLAN ekle" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "İzin Verilen Videolar" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Rota Ayırt Edici" @@ -13467,20 +13946,16 @@ msgstr "Rota Ayırt Edici" msgid "Unique IP Space" msgstr "Benzersiz IP Alanı" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "NetBox logosu" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Hatalar" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Oturum aç" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Veya" @@ -13557,11 +14032,6 @@ msgstr "Başlık" msgid "Phone" msgstr "Telefon" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Ödevler" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13601,7 +14071,7 @@ msgstr "Atanan İzinler" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "İzin" @@ -13623,23 +14093,21 @@ msgid "Allocated Resources" msgstr "Tahsis Edilen Kaynaklar" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Sanal CPU'lar" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Bellek" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Disk Alanı" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "BÜYÜK BRİTANYA" @@ -13680,7 +14148,7 @@ msgid "Cluster Group" msgstr "Küme Grubu" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Küme Türü" @@ -13689,13 +14157,13 @@ msgstr "Küme Türü" msgid "Virtual Disk" msgstr "Sanal Disk" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Kaynaklar" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Sanal Disk Ekle" @@ -13877,13 +14345,12 @@ msgstr "Kablosuz LAN Grubu Ekle" msgid "Link Properties" msgstr "Bağlantı Özellikleri" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Üçüncül" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Etkin Olmayan" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Mesafe" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -14048,13 +14515,13 @@ msgstr "İletişim Bağlantısı" msgid "Contact Description" msgstr "İletişim Açıklaması" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "İzin (ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Grup (isim)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Bildirim grubu (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14076,27 +14543,27 @@ msgstr "Süper kullanıcı durumu" msgid "If no key is provided, one will be generated automatically." msgstr "Anahtar sağlanmazsa, bir anahtar otomatik olarak oluşturulur." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Personel mi" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Süper kullanıcı mı" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Görebilir" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Ekleyebilir" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Değişebilir" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Silebilir" @@ -14189,46 +14656,46 @@ msgstr "izin" msgid "permissions" msgstr "izinler" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "kullanıcı tercihleri" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Anahtar '{path}'bir yaprak düğümüdür; yeni anahtarlar atanamıyor" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "Anahtar '{path}'bir sözlüktür; sözlük dışı bir değer atayamaz" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "süresi dolmak" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "son kullanılan" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "anahtar" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "yazma etkin" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" "Bu anahtarı kullanarak oluşturma/güncelleme/silme işlemlerine izin verin" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "izin verilen IP'ler" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14237,11 +14704,11 @@ msgstr "" "olmadan boş bırakın. Örn: “10.1.1.0/24, 192.168.10.16/32, 2001: DB 8:1: " ":/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "jeton" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "jetonlar" @@ -14249,18 +14716,10 @@ msgstr "jetonlar" msgid "group" msgstr "grup" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "gruplar" - #: netbox/users/models/users.py:92 msgid "user" msgstr "kullanıcı" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "kullanıcıları" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Bu kullanıcı adına sahip bir kullanıcı zaten var." @@ -14394,7 +14853,7 @@ msgstr "" "Geçersiz YAML verileri. Veriler birden fazla belge veya bir sözlük listesi " "içeren tek bir belge şeklinde olmalıdır." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14403,6 +14862,21 @@ msgstr "" "Geçersiz liste ({value}). Sayısal olmalı ve aralıklar artan sırada " "olmalıdır." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Virgülle ayrılmış bir veya daha fazla sayısal aralık belirtin. Örnek: " +"1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Geçersiz aralıklar ({value}). Artan sırada bir tamsayı aralığı olmalıdır." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14565,6 +15039,25 @@ msgstr "" msgid "Missing required value for static query param: '{static_params}'" msgstr "Statik sorgu parametresi için gerekli değer eksik: '{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Şifre en az bir rakamdan oluşmalıdır." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Şifre en az bir büyük harf içermelidir." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Şifre en az bir küçük harf içermelidir." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Şifreniz en az bir rakamı, bir büyük harf ve bir küçük harf içermelidir." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14620,6 +15113,14 @@ msgstr "Dışa aktarma şablonu ekle" msgid "Import" msgstr "İçe aktar" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Aboneliği iptal et" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Abone ol" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Panoya kopyala" @@ -14660,15 +15161,11 @@ msgstr "Arama NetBox" msgid "Open selector" msgstr "Seçiciyi aç" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Atanmadı" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Yazmak" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Test csv_update_data tanımlamalıdır." @@ -14677,19 +15174,19 @@ msgstr "Test csv_update_data tanımlamalıdır." msgid "{value} is not a valid regular expression." msgstr "{value} geçerli bir normal ifade değildir." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" "{self.__class__.__name__} get_required_permissions () uygulamasını " "uygulamalıdır" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} get_required_permissions () uygulamasını uygulamalıdır" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14712,7 +15209,7 @@ msgid "Cluster type (ID)" msgstr "Küme türü (ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "Küme (ID)" @@ -14730,7 +15227,7 @@ msgid "Disk (GB)" msgstr "Disk (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Boyut (GB)" @@ -14750,6 +15247,10 @@ msgstr "Atanmış küme" msgid "Assigned device within cluster" msgstr "Küme içinde atanan aygıt" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Seri numarası" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14774,6 +15275,7 @@ msgid "Disk size is managed via the attachment of virtual disks." msgstr "Disk boyutu sanal disklerin eklenmesiyle yönetilir." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Disk" @@ -14815,42 +15317,42 @@ msgid "memory (MB)" msgstr "bellek (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "disk (GB)" +msgid "disk (MB)" +msgstr "disk (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Sanal makine adı küme başına benzersiz olmalıdır." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "sanal makine" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "sanal makineler" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "Bir sanal makine bir siteye ve/veya kümeye atanmalıdır." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "Seçilen küme ({cluster}) bu siteye atanmamıştır ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "Ana aygıt atarken bir küme belirtmeniz gerekir." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "Seçilen cihaz ({device}) bu kümeye atanmadı ({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -14859,17 +15361,17 @@ msgstr "" "Belirtilen disk boyutu ({size}) atanmış sanal disklerin toplam boyutuyla " "eşleşmelidir ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "IPV olmalı{family} adres. ({ip} bir IPV{version} adres.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "Belirtilen IP adresi ({ip}) bu VM'ye atanmadı." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -14878,7 +15380,7 @@ msgstr "" "Seçilen üst arabirim ({parent}) farklı bir sanal makineye aittir " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -14887,7 +15389,7 @@ msgstr "" "Seçilen köprü arayüzü ({bridge}) farklı bir sanal makineye aittir " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -14896,24 +15398,24 @@ msgstr "" "Etiketlenmemiş VLAN ({untagged_vlan}) arabirimin ana sanal makinesiyle aynı " "siteye ait olmalı veya global olmalıdır." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "boyut (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "boyut (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "sanal disk" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "sanal diskler" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Eklendi {count} kümelenecek cihazlar {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Kaldırıldı {count} kümeden aygıtlar {cluster}" @@ -15027,32 +15529,32 @@ msgid "Outside IP (ID)" msgstr "Dış IP (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "IKE ilkesi (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "IKE ilkesi (isim)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "IPsec ilkesi (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "IPsec ilkesi (ad)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (kısa ad)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "VM Arabirimi (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (isim)" @@ -15225,7 +15727,7 @@ msgstr "versiyon" msgid "proposals" msgstr "öneriler" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "önceden paylaşılan anahtar" @@ -15407,17 +15909,24 @@ msgstr "WPA Kurumsal" msgid "Authentication cipher" msgstr "Kimlik doğrulama şifresi" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Mesafe birimi" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "Köprülü VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Arayüz A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Arayüz B" @@ -15425,39 +15934,51 @@ msgstr "Arayüz B" msgid "Side B" msgstr "B Tarafı" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "kimlik doğrulama şifresi" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "kablosuz LAN grubu" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "kablosuz LAN grupları" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "kablosuz LAN" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "arayüz A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "arayüz B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "uzaklık" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "mesafe birimi" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "kablosuz bağlantı" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "kablosuz bağlantılar" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "Kablosuz mesafeyi ayarlarken bir birim belirtmelisiniz" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} kablosuz bir arayüz değildir." diff --git a/netbox/translations/uk/LC_MESSAGES/django.mo b/netbox/translations/uk/LC_MESSAGES/django.mo index 0affac1012d..f5555e3b883 100644 Binary files a/netbox/translations/uk/LC_MESSAGES/django.mo and b/netbox/translations/uk/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/uk/LC_MESSAGES/django.po b/netbox/translations/uk/LC_MESSAGES/django.po index c13e2d57006..98e85b167ad 100644 --- a/netbox/translations/uk/LC_MESSAGES/django.po +++ b/netbox/translations/uk/LC_MESSAGES/django.po @@ -5,17 +5,17 @@ # # Translators: # Volodymyr Pidgornyi, 2024 -# Vladyslav V. Prodan, 2024 # Jeremy Stretch, 2024 +# Vladyslav V. Prodan, 2024 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" -"Last-Translator: Jeremy Stretch, 2024\n" +"Last-Translator: Vladyslav V. Prodan, 2024\n" "Language-Team: Ukrainian (https://app.transifex.com/netbox-community/teams/178115/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,16 +29,17 @@ msgstr "" msgid "Key" msgstr "Ключ" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "Запис дозволено" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -50,11 +51,11 @@ msgstr "Створено" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "Термін дії закінчується" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "Використано востаннє" @@ -64,46 +65,46 @@ msgstr "Використано востаннє" msgid "Allowed IPs" msgstr "Дозволені IP-адреси" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "Ввійшов в систему як {user}." -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "Ви вийшли з системи." -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "Ваші налаштування було оновлено." -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "" "Облікові дані користувача, підтверджені LDAP, неможливо змінити в NetBox." -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "Ваш пароль успішно змінено." #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "Заплановано" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "Забезпечення" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -112,9 +113,9 @@ msgstr "Забезпечення" msgid "Active" msgstr "Активний" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "Офлайн" @@ -127,98 +128,116 @@ msgstr "Зняття резервування" msgid "Decommissioned" msgstr "Виведені з експлуатації" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "Первинний" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "Вторинний" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Третинний" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "Неактивний" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" -msgstr "Регіон (ID)" - -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +msgstr "Регіон (ідентіфікатор)" + +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "Регіон (скорочення)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" -msgstr "Група тех. майданчиків (ID)" - -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +msgstr "Група тех. майданчиків (ідентіфікатор)" + +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "Група тех. майданчиків (скорочення)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -230,172 +249,197 @@ msgstr "Група тех. майданчиків (скорочення)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "Тех. майданчик" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "Тех. майданчик (скорочення)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" -msgstr "ASN (ID)" +msgstr "ASN (ідентіфікатор)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "ASN" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" -msgstr "Провайдер (ID)" +msgstr "Провайдер (ідентіфікатор)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "Провайдер (скорочення)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" -msgstr "Обліковий запис провайдера (ID)" +msgstr "Обліковий запис провайдера (ідентіфікатор)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "Обліковий запис провайдера (обліковий запис)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" -msgstr "Мережа провайдера (ID)" +msgstr "Мережа провайдера (ідентіфікатор)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" -msgstr "Тип каналу зв'зку (ID)" +msgstr "Тип каналу зв'язку (ідентіфікатор)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" -msgstr "Тип каналу зв'зку (скорочення)" +msgstr "Тип каналу зв'язку (скорочення)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" -msgstr "Тех. майданчик (ID)" +msgstr "Тех. майданчик (ідентіфікатор)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" -msgstr "Припинення A (ID)" +msgstr "Припинення A (ідентіфікатор)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "Пошук" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" -msgstr "Канал зв'зку" +msgstr "Канал зв'язку" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" -msgstr "Мережа провайдера (ID)" +msgstr "Мережа провайдера (ідентіфікатор)" + +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "Канал зв'язку (ідентіфікатор)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "Канал зв'язку (ідентифікатор вмісту)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "Группа каналів зв'язку (ідентіфікатор)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "Группа каналів зв'язку (скорочення)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "ASNs" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -408,16 +452,17 @@ msgstr "ASNs" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -427,8 +472,9 @@ msgstr "ASNs" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -481,26 +527,28 @@ msgstr "ASNs" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "Опис" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -512,22 +560,22 @@ msgstr "Опис" msgid "Provider" msgstr "Провайдер" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "Ідентифікатор служби" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -538,33 +586,33 @@ msgstr "Ідентифікатор служби" msgid "Color" msgstr "Колір" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -577,9 +625,9 @@ msgstr "Колір" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -595,52 +643,52 @@ msgstr "Колір" msgid "Type" msgstr "Тип" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "Обліковий запис постачальника" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -649,7 +697,7 @@ msgstr "Обліковий запис постачальника" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -657,7 +705,7 @@ msgstr "Обліковий запис постачальника" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -667,45 +715,49 @@ msgstr "Обліковий запис постачальника" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "Статус" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -717,7 +769,7 @@ msgstr "Статус" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -740,36 +792,37 @@ msgstr "Статус" msgid "Tenant" msgstr "Орендар" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "Дата встановлення" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "Дата припинення дії" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "Швидкість комісії (Кбіт/с)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "Параметри обслуговування" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -779,84 +832,98 @@ msgstr "Параметри обслуговування" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "Оренда житла" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "Мережа провайдерів" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "Швидкість порту (Кбіт/с)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "Швидкість висхідного потоку (Кбіт/с)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "Позначка з'єднана" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 #: netbox/templates/dcim/rearport.html:111 msgid "Circuit Termination" -msgstr "Закриття схеми" +msgstr "Кінець каналу зв'язку" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "Деталі припинення" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "Пріоритет" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "Призначений провайдер" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "Призначений обліковий запис постачальника" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" -msgstr "Тип схеми" - -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +msgstr "Тип каналу зв'язку" + +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "Операційний стан" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -864,7 +931,7 @@ msgstr "Операційний стан" msgid "Assigned tenant" msgstr "Призначений орендар" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -872,44 +939,44 @@ msgstr "Призначений орендар" msgid "Termination" msgstr "Припинення" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "Мережа провайдерів" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -918,13 +985,13 @@ msgstr "Мережа провайдерів" msgid "Location" msgstr "Розташування" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -933,22 +1000,22 @@ msgstr "Розташування" msgid "Contacts" msgstr "Контакти" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -961,17 +1028,17 @@ msgstr "Контакти" msgid "Region" msgstr "Регіон" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -979,215 +1046,299 @@ msgstr "Регіон" msgid "Site group" msgstr "Група тех. майданчиків" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "Атрибути" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "Рахунок" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "Сторона терміну" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "Призначення" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Група" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "Група каналу зв'язку" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "колір" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" -msgstr "тип схеми" +msgstr "тип каналу зв'язку" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" -msgstr "типи схем" +msgstr "типи каналів зв'язку" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" -msgstr "iдентифікатор схеми" +msgstr "iдентифікатор каналу зв'язку" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" -msgstr "Унікальний ідентифікатор схеми" +msgstr "Унікальний ідентифікатор каналу зв'язку" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "статус" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "встановлений" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "припиняється" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "швидкість комісії (Кбіт/с)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "Коефіцієнт зобов'язань" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" -msgstr "схема" +msgstr "канал зв'язку" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" -msgstr "контурів" +msgstr "канали зв'язку" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "група каналу зв'язку" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "групи каналів зв'язку" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "пріоритет" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "Призначення групи каналів зв'язку" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "Призначення групи каналів зв'язку" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "припинення" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "швидкість порту (Кбіт/с)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" -msgstr "Швидкість фізичної схеми" +msgstr "Фізична швидкість каналу зв'язку" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "швидкість висхідного потоку (Кбіт/с)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "Швидкість висхідного потоку, якщо відрізняється від швидкості порту" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "ідентифікатор перехресного з'єднання" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "Ідентифікатор локального перехресного з'єднання" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "патч-панель/порт(и)" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "Ідентифікатор патч-панелі та номер(и) порту" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "опис" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" -msgstr "припинення ланцюга" +msgstr "кінець каналу зв'язку" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" -msgstr "закінчення ланцюга" +msgstr "кінці каналу зв'язку" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "" -"Припинення схеми повинно приєднатися або до тех. майданчику, або до мережі " -"провайдера." +"Кінець каналу зв'язку повинно приєднатися або до тех. майданчику, або до " +"мережі провайдера." -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "" -"Припинення схеми не може приєднатися як до тех. майданчику, так і до мережі " -"провайдера." +"Обідви кінці каналу зв'язку не може приєднатися як до тех. майданчику, так і" +" до мережі провайдера." #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "найменування" @@ -1196,17 +1347,18 @@ msgid "Full name of the provider" msgstr "Повне найменування провайдера" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "скорочення" #: netbox/circuits/models/providers.py:42 msgid "provider" -msgstr "постачальник" +msgstr "провайдер" #: netbox/circuits/models/providers.py:43 msgid "providers" @@ -1236,40 +1388,45 @@ msgstr "мережа провайдера" msgid "provider networks" msgstr "мережі провайдерів" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1284,7 +1441,7 @@ msgstr "мережі провайдерів" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1298,8 +1455,9 @@ msgstr "мережі провайдерів" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1339,9 +1497,9 @@ msgstr "мережі провайдерів" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1351,56 +1509,57 @@ msgstr "мережі провайдерів" msgid "Name" msgstr "Назва" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" -msgstr "Схеми" +msgstr "Канали зв'язку" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" -msgstr "Ідентифікатор схеми" +msgstr "Ідентифікатор каналу зв'язку" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "Сторона А" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Сторона Z" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "Коефіцієнт комісії" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1409,6 +1568,12 @@ msgstr "Коефіцієнт комісії" msgid "Comments" msgstr "Коментарі" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Завдання" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "Рахунки" @@ -1424,14 +1589,14 @@ msgstr "Кількість ASN" #: netbox/circuits/views.py:331 #, python-brace-format msgid "No terminations have been defined for circuit {circuit}." -msgstr "Для схеми не визначено закінчень {circuit}." +msgstr "Не визначено кінців для каналу зв'язку{circuit}." #: netbox/circuits/views.py:380 #, python-brace-format msgid "Swapped terminations for circuit {circuit}." -msgstr "Замінені закінчення для схеми {circuit}." +msgstr "Замінені місцями кінці для каналу зв'язку {circuit}." -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "Цей користувач не має дозволу на синхронізацію цього джерела даних." @@ -1449,21 +1614,19 @@ msgid "Syncing" msgstr "Синхронізація" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "Завершено" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "Збій" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1475,30 +1638,39 @@ msgstr "Скрипти" msgid "Reports" msgstr "Звіти" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "Очікується" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "Заплановано" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "Запущено" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "Помилка" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "Оновлено" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "Видалено" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "Закінчено" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "Почато" @@ -1515,11 +1687,13 @@ msgstr "Зупинено" msgid "Cancelled" msgstr "Скасовано" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "Місцеві" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1529,8 +1703,8 @@ msgstr "Ім'я користувача" msgid "Only used for cloning with HTTP(S)" msgstr "Використовується лише для клонування за допомогою HTTP(S)" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "Пароль" @@ -1552,24 +1726,63 @@ msgstr "Ідентифікатор ключа доступу AWS" msgid "AWS secret access key" msgstr "Ключ таємничого доступу до AWS" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "Об'єкт створений" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "Об'єкт оновлений" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "Об'єкт видалений" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "Завдання почалося" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "Завдання завершено" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "Збій завдання" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "Завдання завершено з помилкою" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" -msgstr "Джерело даних (ID)" +msgstr "Джерело даних (ідентіфікатор)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "Джерело даних (назва)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "Користувач (ідентіфікатор)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "Ім'я користувача" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1577,14 +1790,14 @@ msgstr "Джерело даних (назва)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "Увімкнено" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1597,11 +1810,11 @@ msgstr "Параметри" msgid "Ignore rules" msgstr "Ігнорувати правила" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1611,76 +1824,99 @@ msgstr "Ігнорувати правила" msgid "Data Source" msgstr "Джерело даних" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "Файл" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "Джерело даних" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "Творчість" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "Тип об'єкта" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "Створено після" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "Створено раніше" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "Заплановано після" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "Заплановано раніше" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "Почнється після" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "Почнється раніше" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "Завершено після" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "Завершено раніше" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "Користувач" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "Час" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "Після" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "Раніше" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "Дія" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1709,19 +1945,19 @@ msgstr "Потрібно завантажити файл або вибрати msgid "Rack Elevations" msgstr "Висота стійки" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "Потужність" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IPAM" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1738,7 +1974,9 @@ msgstr "Банери" msgid "Pagination" msgstr "Нумерація сторінок" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "Перевірка" @@ -1748,7 +1986,7 @@ msgstr "Перевірка" msgid "User Preferences" msgstr "Параметри користувача" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1771,10 +2009,48 @@ msgstr "Поточне значення: {value}" msgid " (default)" msgstr " (за замовчуванням)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "час" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "ім'я користувача" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "Ідентифікатор запиту" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "дія" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "дані перед зміною" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "дані після зміни" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "зміна об'єкта" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "зміни об'єкта" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "Журнал змін не підтримується для цього типу об'єктів ({type})." + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "створено" @@ -1807,14 +2083,14 @@ msgstr "Поточне налаштування" msgid "Config revision #{id}" msgstr "Ревізія конфігурації #{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1822,110 +2098,111 @@ msgstr "Ревізія конфігурації #{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "тип" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "увімкнено" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "ігнорувати правила" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "" "Шаблони (по одному на рядок), що відповідають файлам, які слід ігнорувати " "під час синхронізації" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "параметри" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "останній синхронізований" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "джерело даних" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "джерела даних" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "Невідомий тип бекенда: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "Не вдається ініціювати синхронізацію; бо синхронізація вже триває." -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " msgstr "" "Виникла помилка при ініціалізації бекенду. Необхідно встановити залежність: " -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "останнє оновлення" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "доріжка" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "Шляху до файлу відносно кореня джерела даних" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "розмір" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "хеш" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "Довжина повинна становити 64 шістнадцяткові символи." -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "SHA256 хеш даних файлу" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "файл даних" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "файли даних" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "запис автоматичної синхронізації" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "автоматична синхронізація записів" @@ -1949,58 +2226,95 @@ msgstr "керований файл" msgid "managed files" msgstr "керовані файли" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "заплановано" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "інтервал" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "Інтервал рецидивів (у хвилинах)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "розпочато" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "завершено" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "дані" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "помилка" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" -msgstr "iдентифікатор роботи" +msgstr "iдентифікатор завдання" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" -msgstr "робота" +msgstr "завдання" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" -msgstr "роботи" +msgstr "завдання" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." -msgstr "Роботи не можуть бути призначені для цього типу об'єкта ({type})." +msgstr "Завдання не можуть бути призначені для цього типу об'єкта ({type})." -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" -msgstr "Невірний статус для припинення роботи. Вибір: {choices}" +msgstr "" +"Невірний статус для припинення виконання завдання. Треба вибрати: {choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "" +"enqueue() не можна викликати зі значеннями як для schedule_at, так і для " +"imediate." + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Видалення запобігає правилу захисту: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "П.І.Б." + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Об'єкт" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "Ідентифікатор запиту" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "Є активним" @@ -2015,55 +2329,67 @@ msgid "Last updated" msgstr "Останнє оновлення" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "Ідентіфікатор" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "Об'єкт" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "інтервал" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "Версія" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "Пакет" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "Останнє оновлення" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Мінімальна версія NetBox" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Максимальна версія NetBox" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "Не знайдено даних плагіна" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "Автор" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "Електронна скринька автора" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "Встановлено" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "Не знайдено плагінів" +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "Сертифіковано" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "Опубліковано" + +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "Встановлена версія" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "Найновіша версія" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" -msgstr "Найстаріша задача" +msgstr "Найстаріше завдання" #: netbox/core/tables/tasks.py:42 netbox/templates/core/rq_worker_list.html:39 msgid "Workers" @@ -2073,7 +2399,7 @@ msgstr "Робочі процеси" msgid "Host" msgstr "Ведучий" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "Порт" @@ -2121,62 +2447,72 @@ msgstr "PID" msgid "No workers found" msgstr "Робочих процессів не знайдено" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" -msgstr "Робота в черзі #{id} синхронізувати {datasource}" +msgstr "Завдання у черзі #{id} синхронізовано з {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "Відновлена версія конфігурації #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" -msgstr "Робота {job_id} не знайдено" +msgstr "Завдання {job_id} не знайдено" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." -msgstr "Робота {id} було видалено." +msgstr "Завдання {id} було видалено." -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "Помилка при видаленні завдання {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." -msgstr "Робота {id} не знайдено." +msgstr "Завдання {id} не знайдено." -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." -msgstr "Робота {id} було знову поставлено в чергу." +msgstr "Завдання {id} було знову поставлено в чергу." -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." -msgstr "Робота {id} був поставлений у чергу." +msgstr "Завдання {id} був поставлений у чергу." -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." -msgstr "Робота {id} було зупинено." +msgstr "Завдання {id} було зупинено." -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "Не вдалося зупинити завдання {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "Не вдалося завантажити каталог плагінів" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "Плагін {name} не знайдено" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "Позиція (U)" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "Ідентифікатор об'єкта" @@ -2184,8 +2520,8 @@ msgstr "Ідентифікатор об'єкта" msgid "Staging" msgstr "Підготовка" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "Виведення з експлуатації" @@ -2244,27 +2580,39 @@ msgstr "Доступний" msgid "Deprecated" msgstr "Застарілий" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "Міліметри" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "Дюйми" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "Спереду ззаду" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "Ззаду спереду" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2280,278 +2628,273 @@ msgstr "Дюйми" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "Прабатько" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "Підпорядкований" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "Спереду" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "Ззаду" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "Підготовлено" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "Інвентар" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "Спереду ззаду" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "Ззаду спереду" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "Зліва направо" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "Праворуч наліво" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "Збоку ззаду" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "Пасивний" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "Змішаний" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA (без блокування)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA (з блокуванням)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "Каліфорнійський стиль" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "Міжнародний/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "Пропрієтарний" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "Інше" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/Міжнародні" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "Фізичний" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "Віртуальний" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "Бездротовий" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "Віртуальні інтерфейси" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "Міст" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "Група агрегації каналів (LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "Ethernet (фіксований)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "Ethernet (модульний)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "Ethernet (панель)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "Стільниковий" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "Серійний" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "Коаксіальний" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "Укладання" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "Половина" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "Повний" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "Авто" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "Доступ" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "З мітками" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "З мітками (Усі)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "Стандарт IEEE" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "Пасивний 24В (2-парний)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "Пасивний 24В (4-парний)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "Пасивний 48В (2-парний)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "Пасивний 48В (4-парний)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "Мідний" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "Волоконно-оптичний" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "Волоконний" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "Підключений" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "Кілометри" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "Метри" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "Сантиметри" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "Милі" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "Фути" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "Кілограми" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "Грами" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "Фунтів" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "Унцій" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "Первинний" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "Надлишковий" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "Однофазний" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "Трифазний" @@ -2565,330 +2908,335 @@ msgstr "Невірний формат MAC-адреси: {value}" msgid "Invalid WWN format: {value}" msgstr "Невірний формат WWN: {value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" -msgstr "Батьківський регіон (ID)" +msgstr "Батьківський регіон (ідентіфікатор)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "Батьківський регіон (скорочення)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" -msgstr "Батьківська група тех. майданчиків (ID)" +msgstr "Батьківська група тех. майданчиків (ідентіфікатор)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "Батьківська група тех. майданчиків (скорочення)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" -msgstr "Група (ID)" +msgstr "Група (ідентіфікатор)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "Група (скорочення)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" -msgstr "AS (ІДЕНТИФІКАТОР)" +msgstr "AS (ідентіфікатор)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" -msgstr "Батьківське місцезнаходження (ID)" +msgstr "Батьківське місцезнаходження (ідентіфікатор)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "Батьківське розташування (скорочення)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" -msgstr "Місцезнаходження (ID)" +msgstr "Місцезнаходження (ідентіфікатор)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "Місцезнаходження (скорочення)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "Виробник (ідентіфікатор)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "Виробник (скорочення)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "Тип стійки (скорочення)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "Тип стійки (ідентіфікатор)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" -msgstr "Роль (ID)" +msgstr "Роль (ідентіфікатор)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "Роль (скорочення)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" -msgstr "Стійка (ID)" +msgstr "Стійка (ідентіфікатор)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "Користувач (ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "Користувач (ім'я)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "Виробник (ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "Виробник (скорочення)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" -msgstr "Платформа за замовчуванням (ID)" +msgstr "Платформа за замовчуванням (ідентіфікатор)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "Платформа за замовчуванням (скорочення)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "Має фронтальне зображення" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "Має зображення ззаду" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "Має консольні порти" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "Має порти консольного сервера" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "Має порти живлення" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "Має розетки" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "Має інтерфейси" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "Має прохідні порти" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "Має модульні відсіки" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "Має відсіки для пристроїв" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "Має предмети інвентарю" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" -msgstr "Тип пристрою (ID)" +msgstr "Тип пристрою (ідентіфікатор)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" -msgstr "Тип модуля (ID)" +msgstr "Тип модуля (ідентіфікатор)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" -msgstr "Порт живлення (ID)" +msgstr "Порт живлення (ідентіфікатор)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" -msgstr "Батьківський предмет інвентарю (ID)" +msgstr "Батьківський предмет інвентарю (ідентіфікатор)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" -msgstr "Шаблон конфігурації (ID)" +msgstr "Шаблон конфігурації (ідентіфікатор)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "Тип пристрою (скорочення)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" -msgstr "Батьківський пристрій (ID)" +msgstr "Батьківський пристрій (ідентіфікатор)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" -msgstr "Платформа (ID)" +msgstr "Платформа (ідентіфікатор)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "Платформа (скоречення)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "Назва тех. майданчика (скоречення)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" -msgstr "Батьківська бухта (ID)" +msgstr "Батьківська бухта (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" -msgstr "Кластер віртуальних машини (ID)" +msgstr "Кластер віртуальних машини (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "Кластерна група (скоречення)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" -msgstr "Група кластерів (ID)" +msgstr "Група кластерів (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "Модель пристрою (скоречення)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "Це повна глибина" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC-адреса" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "Має основний IP" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "Має IP для зовнішнього незалежного керування" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" -msgstr "Віртуальне шасі (ID)" +msgstr "Віртуальне шасі (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "Є віртуальним членом шасі" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" -msgstr "IP для зовнішнього незалежного керування (ID)" +msgstr "IP для зовнішнього незалежного керування (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "Має контекст віртуального пристрою" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" -msgstr "Імпульсне джерело живлення (ID)" +msgstr "Імпульсне джерело живлення (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "Модель пристрою" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" -msgstr "Інтерфейс (ID)" +msgstr "Інтерфейс (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "Тип модуля (модель)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "Відсік модулів (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "Відсік модуля (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" -msgstr "Пристрій (ID)" +msgstr "Пристрій (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "Стійка (назва)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "Пристрій (назва)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "Тип пристрою (модель)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" -msgstr "Роль пристрою (ID)" +msgstr "Роль пристрою (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "Роль пристрою (скоречення)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" -msgstr "Віртуальне шасі (ID)" +msgstr "Віртуальне шасі (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2897,33 +3245,33 @@ msgstr "Віртуальне шасі (ID)" msgid "Virtual Chassis" msgstr "Віртуальне шасі" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" -msgstr "Модуль (ID)" +msgstr "Модуль (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" -msgstr "Кабель (ID)" +msgstr "Кабель (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "Призначений VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "Призначений VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2940,121 +3288,125 @@ msgstr "Призначений VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" -msgstr "L2VPN (ID)" +msgstr "L2VPN (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "Віртуальні інтерфейси шасі для пристрою" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" -msgstr "Віртуальні інтерфейси шасі для пристрою (ID)" +msgstr "Віртуальні інтерфейси шасі для пристрою (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "Вид інтерфейсу" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" -msgstr "Батьківський інтерфейс (ID)" +msgstr "Батьківський інтерфейс (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" -msgstr "Мостовий інтерфейс (ID)" +msgstr "Мостовий інтерфейс (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" -msgstr "Інтерфейс LAG (ID)" +msgstr "Інтерфейс LAG (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "Контекст віртуального пристрою" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "Контекст віртуального пристрою (ідентифікатор)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "Бездротова локальна мережа" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "Бездротова зв'язок" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "Відсік батьківського модуля (iдентифікатор)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" -msgstr "Встановлений модуль (ID)" +msgstr "Встановлений модуль (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" -msgstr "Встановлений пристрій (ID)" +msgstr "Встановлений пристрій (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "Встановлений пристрій (назва)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" -msgstr "Майстер (ID)" +msgstr "Майстер (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "Майстер (ім'я)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" -msgstr "Орендар (ID)" +msgstr "Орендар (ідентіфікатор)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "Орендар (скоречення)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "Незакінчений" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" -msgstr "Панель живлення (ID)" +msgstr "Панель живлення (ідентіфікатор)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3062,13 +3414,13 @@ msgstr "Панель живлення (ID)" msgid "Tags" msgstr "Мітки" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3082,168 +3434,114 @@ msgstr "" "Підтримуються буквено-цифрові діапазони. (Повинен збігатися з кількістю " "створених імен.)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "Група" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "Ім'я контакту" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "Контактний телефон" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "Контактна адреса електронної пошти" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "Часовий пояс" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "Роль" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "Серійний номер" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "Призначеня міток" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "Виробник" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "Форм-фактор" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "Ширина" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "Висота (U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "Юніти у низхідному порядку" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "Зовнішня ширина" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "Зовнішня глибина" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "Зовнішній блок" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "Глибина монтажу" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3251,31 +3549,127 @@ msgstr "Глибина монтажу" msgid "Weight" msgstr "Вага" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "Максимальна вага" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "Вага юніта" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "Тип стійки" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "Зовнішні розміри" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "Габарити" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "Нумерація" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "Роль" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "Серійний номер" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "Призначеня міток" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "Потік повітря" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 @@ -3285,158 +3679,132 @@ msgstr "Вага юніта" msgid "Rack" msgstr "Стійка" -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 #: netbox/templates/dcim/device_edit.html:20 -msgid "Hardware" -msgstr "Апаратне забезпечення" - -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "Виробник" +msgid "Hardware" +msgstr "Апаратне забезпечення" -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "Платформа за замовчуванням" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "Номер партії" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "Висота U" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "Виключити з утилізації" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "Потік повітря" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "Тип пристрою" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "Шасі" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "Роль ВМ" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "Шаблон конфігурації" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "Тип пристрою" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "Роль пристрою" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "Платформа" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3447,7 +3815,7 @@ msgstr "Платформа" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3455,7 +3823,7 @@ msgstr "Платформа" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3463,7 +3831,7 @@ msgstr "Платформа" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3473,23 +3841,23 @@ msgstr "Платформа" msgid "Device" msgstr "Пристрій" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "Конфігурація" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3498,7 +3866,7 @@ msgstr "Тип модуля" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3507,141 +3875,142 @@ msgstr "Тип модуля" msgid "Label" msgstr "Етикетка" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "Довжина" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "Довжина юніта" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "Домен" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "Панель живлення" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "Постачання" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "Фаза" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "Напруга" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "Сила струму" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "Максимальне використання" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "Максимальна потужність" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "Максимальна споживана потужність (Вт)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "Виділена потужність" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "Виділена споживана потужність (Вт)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "Порт живлення" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "Фідер живлення" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "Тільки управління" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "Режим PoE" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "Тип PoE" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "Бездротова роль" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "Модуль" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "LAG" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "Контексти віртуальних пристроїв" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "Швидкість" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3655,292 +4024,297 @@ msgstr "Швидкість" msgid "Mode" msgstr "Режим" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "Група VLAN" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "VLAN без міток" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "VLAN з мітками" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "Група бездротової локальної мережі" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "Бездротові локальні мережі" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "Адресація" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "Операція" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "Пов'язані інтерфейси" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "Комутація 802.1Q" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "Для призначення VLANs необхідно вказати режим інтерфейсу" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "Інтерфейс доступу не може призначити VLAN'и з мітками." -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "Назва батьківського регіону" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "Назва батьківської групи тех. майданчиків" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "Призначений регіон" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "Призначена група" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "доступні опції" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "Призначений тех. майданчик" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "Місцезнаходження прабатька" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "Місцезнаходження не знайдено." -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "ПІБ призначеного орендаря" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "Назва призначеної ролі" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "Виробник даного стелажного типу" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "Тип стійки" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "Позиція з найменшою нумерованістю в стійці" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "Ширина рейки до рейки (у дюймах)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "Блок для зовнішніх розмірів" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "Блок для стелажних ваг" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "ПІБ призначеного орендаря" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "Назва призначеної ролі" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "Напрямок повітряного потоку" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "Батьківський тех. майданчик" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "Розташування стійки (якщо є)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "Юніти" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "Список окремих номерів юнітів, розділених комами" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "Виробник, який випускає цей тип пристрою" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "Платформа за замовчуванням для пристроїв такого типу (опціонально)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "Вага пристрою" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "Вага пристрою на 1 юніт" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "Вага модуля" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "Вага модуля на 1 юніт" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "Обмежте призначення платформи цьому виробнику" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "Призначена роль" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "Тип пристрою виробник" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "Модель типу пристрою" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "Призначена платформа" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "Віртуальне шасі" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "Кластер" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "Кластер віртуалізації" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "Призначене місце розташування (якщо є)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "Призначена стійка (якщо така є)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "Лицева сторона" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "Змонтована лицева сторона стійки" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "Батьківський пристрій (для підпорядкованих пристроїв)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "Відсік для пристроїв" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "" "Відсік для пристрою, в якому встановлено цей пристрій (для підпорядкованих " "пристроїв)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "Напрямок повітряного потоку" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "Пристрій, в якому встановлений даний модуль" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "Відсік для модулів" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "Відсік для модуля, в якому встановлений цей модуль" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "Тип модуля" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "Повторювання компонентів" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" @@ -3948,240 +4322,240 @@ msgstr "" "Автоматично заповнювати компоненти, пов'язані з цим типом модуля (увімкнено " "за замовчуванням)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "Прийняти компоненти" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "Прийняти вже існуючі компоненти" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "Тип порту" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "Швидкість порту в біт/с" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "Тип розетки (живлення)" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "Локальний порт живлення, який живить цю розетку" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "Електрична фаза (для трифазних ланцюгів)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "Батьківський інтерфейс" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "Інтерфейс типу мост" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "LAG" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "Батьківський інтерфейс LAG" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Джерела живлення постійного струму " -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "" "Імена джерел живлення постійного струму, розділені комами, укладені " "подвійними лапками. Приклад:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "Фізичне середовище" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "Дуплекс" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "Режим PoE" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "Тип PoE" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "Режим роботи IEEE 802.1Q (для інтерфейсів L2)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "Призначений VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "роль RF" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "Бездротова роль (AP/станція)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "" "Джерело живлення постійного струму {vdc} не призначається до пристрою " "{device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "Задній порт" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "Відповідний задній порт" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "Класифікація фізичного середовища" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "Встановлений пристрій" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "Підпорядкований пристрій, встановлений у цьому відсіку" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "Підпорядкований пристрій не знайдено." -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "Батьківський предмет інвентарю" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "Тип компонента" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "Тип компонента" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "Назва компонента" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "Назва компонента" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "Компонент не знайдено: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "Пристрій сторона А" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "Назва пристрою" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "Тип сторони А" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "Тип припинення" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "Назва сторони A" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "Назва припинення" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "Сторона Б пристрою" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "Тип сторони Б" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "Назва сторони B" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "Статус підключення" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr "Сторона {side_upper}: {device} {termination_object} вже підключена" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} кінцева сторона не знайдена: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Майстер" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "Головний пристрій" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "Назва батьківського тех. майданчика" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "Вища за течією панель живлення" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "Первинний або надлишковий" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "Тип живлення (змінній/постійний струм)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "Однофазний або трифазний (струм)" @@ -4201,7 +4575,7 @@ msgstr "" "Позначені мітками VLAN ({vlans}) повинні належати тому ж тех. майданчику, що" " і батьківський пристрой/VM інтерфейсу, або вони повинні бути глобальними" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." @@ -4209,17 +4583,26 @@ msgstr "" "Не вдається встановити модуль із значеннями заповнювачів у відсіку модуля " "без визначеної позиції." -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "" +"Не вдається встановити модуль із значеннями відсік модуля у дереві відсіків " +"модуля {level} на дереві, у якому усього{tokens} місця для встановлення." + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "Не можна усиновити {model} {name} оскільки він вже належить до модуля" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "А {model} названий {name} вже існує" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4228,7 +4611,7 @@ msgstr "А {model} названий {name} вже існує" msgid "Power Panel" msgstr "Панель живлення" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4238,15 +4621,15 @@ msgstr "Живлення живлення" msgid "Side" msgstr "Сторона" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "Статус пристрою" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "Батьківський регіон" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4254,62 +4637,67 @@ msgstr "Батьківський регіон" msgid "Parent group" msgstr "Батьківська група" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "Об'єкт" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "Тип стійки" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "Функція" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "Зображення" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "Компоненти" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "Роль підпристрою" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "Модель" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "Має IP-адресу для зовнішнього незалежного керування" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "Віртуальний елемент шасі" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "Має контексти віртуальних пристроїв" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "Кластерна група" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "Кабельний" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "Зайнятий" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4321,43 +4709,43 @@ msgstr "Зайнятий" msgid "Connection" msgstr "Підключення" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "Вид" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "Тільки управління" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN (унікальний ідентифікатор)" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "Бездротовий канал" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "Частота каналу (МГц)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "Ширина каналу (МГц)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "Потужність передачі (дБм)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4367,7 +4755,7 @@ msgstr "Потужність передачі (дБм)" msgid "Cable" msgstr "Кабель" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "Виявлено" @@ -4376,28 +4764,31 @@ msgstr "Виявлено" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "Віртуальний елемент шасі вже існує на {vc_position} місці." -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "Контактна інформація" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "Роль стійки" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "Контроль запасів" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Скорочення" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "Зовнішні розміри" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "" +"Виберіть попередньо визначений тип стійки або встановіть фізичні " +"характеристики нижче." -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "Габарити" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "Контроль запасів" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." @@ -4405,92 +4796,69 @@ msgstr "" "Список ідентифікаторів числових юнітів, розділених комами. Діапазон можна " "вказати за допомогою дефіса." -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "Бронювання" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "Скорочення" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "Шасі" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "Роль пристрою" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "Юніт з найменшим номером, зайнятим пристроєм" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "Положення у віртуальному шасі цього пристрою визначається" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "Пріоритет" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "Пріоритет пристрою в віртуальному шасі" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "Автоматично заповнювати компоненти, пов'язані з цим типом модуля" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "Максимальна довжина 32767 (для усіх юнітів)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "Характеристики" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "Шаблон порту консолі" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "Шаблон порту консольного сервера" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "Шаблон фронтального порту" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "Шаблон інтерфейсу" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "Шаблон електрічної розетки" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "Шаблон порту живлення" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "Шаблон порту ззаду" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4501,7 +4869,7 @@ msgstr "Шаблон порту ззаду" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4510,7 +4878,7 @@ msgstr "Шаблон порту ззаду" msgid "Interface" msgstr "Інтерфейс" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4518,14 +4886,14 @@ msgstr "Інтерфейс" msgid "Console Port" msgstr "Порт консолі" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Порт консольного сервера" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4536,8 +4904,8 @@ msgstr "Порт консольного сервера" msgid "Front Port" msgstr "Передній порт" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4549,36 +4917,36 @@ msgstr "Передній порт" msgid "Rear Port" msgstr "Порт ззаду" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "Порт живлення" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "Електрична розетка" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "Призначення компонентів" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "Елемент інвентаря можна призначити лише одному компоненту." -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "Інтерфейс LAG" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "Підпорядкований пристрій" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." @@ -4586,41 +4954,41 @@ msgstr "" "Підпорядковані пристрої спочатку повинні бути створені та присвоєні до тех. " "майданчику та стійки батьківського пристрою." -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Консольний порт" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Порт консольного сервера" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "Передній порт" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "Розетка живлення" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "Елемент інвентаря" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "Роль елемента інвентаря" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "Первинний IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "Первинний IPv6" @@ -4683,7 +5051,7 @@ msgstr "" "Кількість передніх портів, які потрібно створити ({frontport_count}) повинен" " відповідати вибраній кількості позицій портів ззаду ({rearport_count})." -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4709,7 +5077,7 @@ msgstr "Посада повинна бути вказана для першог #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "етикетка" @@ -4779,7 +5147,8 @@ msgstr "Кабелі не можуть бути підключені в {type_di #: netbox/dcim/models/cables.py:350 msgid "Circuit terminations attached to a provider network may not be cabled." msgstr "" -"Кінцівки схем, приєднані до мережі провайдера, не можуть бути кабельними." +"Кінці каналу зв'язку, приєднані до мережі провайдера, не можуть бути " +"кабельними." #: netbox/dcim/models/cables.py:448 netbox/extras/models/configs.py:50 msgid "is active" @@ -4834,41 +5203,41 @@ msgid "" msgstr "" "Шаблон компонента повинен бути пов'язаний з типом пристрою або типом модуля." -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "шаблон порту консолі" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "шаблони портів консолі" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "шаблон порту консольного сервера" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "шаблони портів консольного сервера" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "максимальна потужність" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "виділена потужність" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "шаблон порту живлення" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "шаблони портів живлення" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." @@ -4876,97 +5245,97 @@ msgstr "" "Виділена потужність не може перевищувати максимальну потужність " "({maximum_draw}W)." -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "фідер живлення" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "Фаза (для трифазних подач)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "шаблон розетки" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "шаблони розеток" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "" "Батьківський порт живлення ({power_port}) повинні належати до одного типу " "пристрою" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "" "Батьківський порт живлення ({power_port}) повинні належати до одного типу " "модуля" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "тільки управління" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "інтерфейс моста" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "бездротова роль" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "шаблон інтерфейсу" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "шаблони інтерфейсу" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "Інтерфейс не може бути з'єднаний мостом з собою." -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "" "Інтерфейс моста ({bridge}) повинні складатися з пристроїв одного типу " -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "Інтерфейс моста ({bridge}) повинні складатися з модулів одного типу " -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "положення порту ззаду" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "шаблон переднього порту" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "шаблони передніх портів" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "Задній порт ({name}) повинні належати до одного типу пристрою" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " @@ -4975,47 +5344,47 @@ msgstr "" "Невірна позиція порту ззаду ({position}); порт ззаду {name} має тільки " "{count} позиції" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "позиції" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "шаблон порту ззаду" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "шаблони портів ззаду" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "позиції" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "" "Ідентифікатор для посилання при перейменуванні встановлених компонентів" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "шаблон відсіку модуля" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "шаблони відсіків модулів" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "шаблон відсіку пристрою" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "шаблони відсіків пристроїв" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " @@ -5024,21 +5393,21 @@ msgstr "" "Роль підпристрою типу пристрою ({device_type}) має бути встановлено значення" " \"батько\", щоб дозволити відсіки пристрою." -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "Ідентифікатор частини" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "Ідентифікатор деталі, призначений виробником" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "шаблон елемента інвентаря" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "шаблони елемента інвентаря" @@ -5183,27 +5552,27 @@ msgstr "Заповнюється вибраним каналом (якщо вс msgid "transmit power (dBm)" msgstr "потужність передачі (дБм)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "бездротові локальні мережі" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "VLAN без міток" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "VLAN'и з мітками" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "інтерфейс" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "інтерфейси" @@ -5218,7 +5587,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type} інтерфейси не можуть бути позначені як підключені." #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "Інтерфейс не може бути власним батьківським." @@ -5386,33 +5755,38 @@ msgstr "" "Кількість позицій не може бути меншою за кількість відображених фронтальних " "портів ({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "відсік модуля" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "відсіки модуля" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "Відсік модуля не може належати модулю, встановленому в ньому." + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "відсік пристрою" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "відсіки для пристроїв" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "" "Даний тип пристрою ({device_type}) не підтримує відсіки для пристроїв." -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "Не вдається встановити пристрій в себе." -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." @@ -5420,60 +5794,61 @@ msgstr "" "Не вдається встановити вказаний пристрій, бо пристрій вже встановлено в " "{bay}." -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "роль елемента інвентаря" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "ролі елемента інвентаря" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "серійний номер" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "призначеня мітки" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "" "Унікальна мітка, яка використовується для ідентифікації цього елемента" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "виявлено" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "Цей елемент був автоматично виявлений" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "елемент інвентаря" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "елементи інвентаря" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "Не вдається призначити себе батьком." -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "Батьківський елемент інвентаря не належить до одного пристрою." -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "Не можливо переміщати елемент інвентаря з підпорядкованим елементом" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "Не можливо призначати елемент інвентаря компоненту у іншому пристрої" @@ -5486,6 +5861,7 @@ msgid "manufacturers" msgstr "виробники" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "модель" @@ -5501,7 +5877,7 @@ msgstr "номер деталі" msgid "Discrete part number (optional)" msgstr "Дискретний номер деталі (необов'язково)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "висота (U)" @@ -5533,7 +5909,8 @@ msgstr "" "Батьківські пристрої розміщують дочірні пристрої в відсіках пристроїв. " "Залиште порожнім, якщо цей тип пристрою не є ані батьком, ані дитиною." -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "повітряний потік" @@ -5579,148 +5956,148 @@ msgstr "" msgid "Child device types must be 0U." msgstr "Дитячі типи пристроїв повинні бути висоту 0 юніт." -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "тип модуля" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "типи модулів" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "Віртуальні машини можуть бути призначені для цієї ролі" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "роль пристрою" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "ролі пристрою" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "Опціонально обмежити цю платформу пристроями певного виробника" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "платформа" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "платформи" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "Функція, яку виконує цей пристрій" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "Серійний номер шасі, наданий виробником" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "" "Унікальна мітка, яка використовується для ідентифікації цього пристрою" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "позиція (юніт)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "лицева частина стійки" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "первинний IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "первинний IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "IP для зовнішнього незалежного керування" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "Позиція віртуального шасі" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "Позиція віртуального шасі" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "Пріоритет віртуального шасі" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "Пріоритет виборів віртуального шасі" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "широта" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "GPS-координата в десятковому форматі (xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "довгота" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "Ім'я пристрою має бути унікальним для кожного тех. майданчика." -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "пристрій" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "пристрої" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "Стійка {rack} не належить до тех. майданчику {site}." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "Розташування {location} не належить до тех. майданчика{site}." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "Стійка {rack} не належить до місцезнаходження {location}." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "" "Не вдається вибрати лицеву частину стійки без призначення самої стійки." -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "Не вдається вибрати положення стійки без призначення самої стійки." -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "Положення повинно бути з кроком в 0,5 юніта." -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "" "Необхідно вказати лицеву частину стійки при визначенні положення стійки." -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." @@ -5728,7 +6105,7 @@ msgstr "" "Тип пристрою 0 юніта ({device_type}) не може бути призначений для положення " "стійки." -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." @@ -5736,7 +6113,7 @@ msgstr "" "Підпорядковані типи пристроїв не можуть бути призначені для лицевої частини " "стійки. Це атрибут батьківського пристрою." -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." @@ -5744,7 +6121,7 @@ msgstr "" "Підпорядковані типи пристроїв не можуть бути призначені для розміщення у " "стійки. Це атрибут батьківського пристрою." -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " @@ -5753,22 +6130,22 @@ msgstr "" "Монтажна позиція{position}юніт вже зайнята або не має достатньо вільного " "місця для розміщення цього пристрою: {device_type} ({u_height}юніта)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} Це не IPv4 адреса." -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "Зазначена IP-адреса ({ip}) не призначається до цього пристрою." -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} Це не IPv6 адреса ." -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5777,26 +6154,26 @@ msgstr "" "Призначена платформа обмежена {platform_manufacturer} типом пристроїв, але " "цей тип пристрою належить до {devicetype_manufacturer}." -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "Призначений кластер належить іншому тех. майданчику ({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "" "Для пристрія, призначеного для віртуального шасі, повинно бути задане " "положення." -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "модуль" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "модулі" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " @@ -5805,21 +6182,21 @@ msgstr "" "Модуль повинен бути встановлений у відсіку модуля, що належить призначеному " "пристрою ({device})." -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "домен" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "віртуальне шасі" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "Обраний майстер ({master}) не присвоюється цьому віртуальному шасі." -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " @@ -5828,40 +6205,40 @@ msgstr "" "Неможливо видалити віртуальне шасі {self}. Існують мережеві інтерфейси, які " "утворюють інтерфейси LAG між шасі." -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "ідентифікатор" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "Числовий ідентифікатор, унікальний для батьківського пристрою" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "коментарі" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "контекст віртуального пристрою" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "контексти віртуальних пристроїв" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} не є IPv{family} адресой." -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "" "Первинна IP-адреса повинна належати інтерфейсу на призначеному пристрої." #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "вага" @@ -5939,94 +6316,59 @@ msgstr "" msgid "Voltage cannot be negative for AC supply" msgstr "Напруга не може бути негативною для живлення змінного струму" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "роль стійки" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "ролі стійки" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "Ідентифікатор об'єкта" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "Локально призначений ідентифікатор" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "Функціональна роль" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "Унікальна мітка, який використовується для ідентифікації цієї стійки" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "ширина" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "Ширина рейки до рейки" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "Висота стійки у юнітах" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "начальний юніт" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "Начальний юніт для стійки" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "юніти у низхідному порядку" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "Юніти нумеруються зверху вниз" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "зовнішня ширина" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "Зовнішній розмір стійки (ширина)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "зовнішня глибина" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "Зовнішній розмір стійки (глибина)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "зовнішній блок" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "макс. вага" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "Максимальна вантажопідйомність для стійки" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "монтажна глибина" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." @@ -6034,31 +6376,78 @@ msgstr "" "Максимальна глибина змонтованого пристрою, в міліметрах. Для чотиристійкових" " стійок це відстань між передньою і задньою рейками." -#: netbox/dcim/models/racks.py:221 +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "макс. вага" + +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "Максимальна вантажопідйомність для стійки" + +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "форм-фактор" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "тип стійки" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "типи стійки" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "" +"Необхідно вказати одиницю виміру при встановленні зовнішньої ширини/глибини" + +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 +msgid "Must specify a unit when setting a maximum weight" +msgstr "Необхідно вказати одиницю виміру при встановленні максимальної ваги" + +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "роль стійки" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "ролі стійки" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "Ідентифікатор об'єкта" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "Локально призначений ідентифікатор" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Функціональна роль" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "Унікальна мітка, який використовується для ідентифікації цієї стійки" + +#: netbox/dcim/models/racks.py:359 msgid "rack" msgstr "стійка" -#: netbox/dcim/models/racks.py:222 +#: netbox/dcim/models/racks.py:360 msgid "racks" msgstr "стійки" -#: netbox/dcim/models/racks.py:237 +#: netbox/dcim/models/racks.py:375 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "" "Призначене місце розташування повинно належати батьківському тех. майданчику" " ({site})." -#: netbox/dcim/models/racks.py:241 -msgid "Must specify a unit when setting an outer width/depth" -msgstr "" -"Необхідно вказати одиницю виміру при встановленні зовнішньої ширини/глибини" - -#: netbox/dcim/models/racks.py:245 -msgid "Must specify a unit when setting a maximum weight" -msgstr "Необхідно вказати одиницю виміру при встановленні максимальної ваги" - -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " @@ -6067,7 +6456,7 @@ msgstr "" "Стійка має бути не нижча, ніж {min_height}юніт, щоб місця було достатньо для" " розміщення вже встановлених пристроїв." -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " @@ -6076,29 +6465,29 @@ msgstr "" "Нумерація стійок повинна починатися з {position} або не менше для розміщення" " встановлених на даний момент пристроїв." -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "Розташування повинно бути з одного і того ж тех. майданчика, {site}." -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "юнітів" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "резервування стійки" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "бронювання стійки" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "Недійсне монтажне місце для стійки висотою{height}юнітів: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "Наступні юніти вже зарезервовані: {unit_list}" @@ -6205,11 +6594,11 @@ msgstr "Припинення А" msgid "Termination B" msgstr "Припинення Б" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "Пристрій А" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "Пристрій Б" @@ -6244,13 +6633,13 @@ msgid "Reachable" msgstr "Доступний" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "Пристрої" @@ -6260,17 +6649,17 @@ msgid "VMs" msgstr "віртуальні машини" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "Шаблон конфігурації" @@ -6278,22 +6667,22 @@ msgstr "Шаблон конфігурації" msgid "Site Group" msgstr "Група тех. майданчиків" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP-адреса" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "Адреса IPv4" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "Адреса IPv6" @@ -6330,10 +6719,10 @@ msgstr "Порти живлення" msgid "Power outlets" msgstr "Розетки" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6343,8 +6732,8 @@ msgstr "Розетки" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "Інтерфейси" @@ -6370,8 +6759,8 @@ msgid "Module Bay" msgstr "Резервуар модулів" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6380,30 +6769,30 @@ msgstr "Резервуар модулів" msgid "Inventory Items" msgstr "Елементи інвентаря" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "Колір кабелю" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "З'єднання мережевих сусідів" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "Позначене підключення" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "Максимальна потужність (W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "Виділена потужність (W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6412,12 +6801,12 @@ msgstr "Виділена потужність (W)" msgid "IP Addresses" msgstr "IP-адреси" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "Групи FHRP" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6428,52 +6817,52 @@ msgstr "Групи FHRP" msgid "Tunnel" msgstr "Тунель" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "Тільки управління" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "Джерела живлення постійного струму " -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "Встановлений модуль" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "Послідовний модуль " -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "Призначеня мітки на модуль" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "Статус модуля" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "Компонент" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "Предмети" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "Типи пристроїв" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "Типи модулів" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "Платформи" @@ -6492,12 +6881,13 @@ msgid "U Height" msgstr "Висота юніта" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "Екземпляри" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6506,9 +6896,9 @@ msgstr "Екземпляри" msgid "Console Ports" msgstr "Консольні порти" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6517,9 +6907,9 @@ msgstr "Консольні порти" msgid "Console Server Ports" msgstr "Порти консольного сервера" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6528,9 +6918,9 @@ msgstr "Порти консольного сервера" msgid "Power Ports" msgstr "Порти живлення" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6539,9 +6929,9 @@ msgstr "Порти живлення" msgid "Power Outlets" msgstr "Розетки" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6549,9 +6939,9 @@ msgstr "Розетки" msgid "Front Ports" msgstr "Передні порти" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6560,23 +6950,26 @@ msgstr "Передні порти" msgid "Rear Ports" msgstr "Задні порти" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "Відсіки для пристроїв" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "Модульні відсіки" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "Подачі живлення" @@ -6589,41 +6982,45 @@ msgstr "Максимальне використання (живлення)" msgid "Available Power (VA)" msgstr "Доступна потужність (ВА)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "Стійки" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "Висота" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "Простір" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "Зовнішня ширина" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "Зовнішня глибина" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "Максимальна вага" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "Простір" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "Тех. майданчики" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "Тестовий випадок повинен встановити peer_termination_type" @@ -6632,77 +7029,77 @@ msgstr "Тестовий випадок повинен встановити peer msgid "Disconnected {count} {type}" msgstr "Відключено {count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "Бронювання" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "Пристрої без можливості кріплення у стійку" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "Контекст конфігурації" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "Відтворювати конфігурацію" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "Під час візуалізації шаблону сталася помилка: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "Віртуальні машини" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "Встановлений пристрій {device} в бухті {device_bay}." -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "Видалений пристрій {device} з бухти {device_bay}." -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "Підпорядкований" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "Доданий член {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "Неможливо видалити головний пристрій {device} від віртуального шасі." -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "Вилучено {device} з віртуального шасі {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "Невідомий пов'язаний об'єкт(и): {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "Зміна типу призначених для користувача полів не підтримується." -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "Планування не ввімкнено для цього сценарію." @@ -6751,7 +7148,7 @@ msgid "Multiple objects" msgstr "Кілька об'єктів" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "Вимкнений" @@ -6786,7 +7183,7 @@ msgstr "Ні" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "Посилання" @@ -6806,65 +7203,56 @@ msgstr "Зростання за алфавітом (A-Z)" msgid "Alphabetical (Z-A)" msgstr "Спадання за алфавітом (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "Оновлено" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "Видалено" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "Інформація" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "Успіх" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "Попередження" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "Небезпека" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "Налагодження" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "За замовчуванням" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "Невдача" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "Погодинно" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12 годин" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "Щодня" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "Щотижневий" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30 днів" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6872,18 +7260,16 @@ msgstr "30 днів" msgid "Create" msgstr "Створити" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "Оновити" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6894,81 +7280,85 @@ msgstr "Оновити" msgid "Delete" msgstr "Видалити" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "Синій" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "Індиго" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "Фіолетовий" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "Рожевий" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "Червоний" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "Помаранчевий" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "Жовтий" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "Зелений" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "Бірюзовий" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "Блакитний" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "Сірий" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "Чорний" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "Білий" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Веб-хук" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "Сценарій" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "Повідомлення" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -7044,273 +7434,282 @@ msgstr "Фільтри, які застосовуються при підрах msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "Невірний формат. Фільтри об'єктів повинні бути передані як словник." -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "Список об'єктів" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "Відображення довільного списку об'єктів." -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "Типова кількість об'єктів для відображення" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "" "Невірний формат. Параметри URL-адреси повинні бути передані як словник." -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS-канал" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "Вбудовувати RSS-канал із зовнішнього веб-сайту." -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "URL-адреса каналу" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "Максимальна кількість об'єктів для відображення" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "Як довго зберігати кешований вміст (в секундах)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "Закладки" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "Показувати особисті закладки" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "Невідомий тип дії для правила події: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "Не вдається імпортувати конвеєр подій {name} Помилка: {error}" #: netbox/extras/filtersets.py:45 msgid "Script module (ID)" -msgstr "Модуль сценарію (ID)" +msgstr "Модуль сценарію (ідентіфікатор)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" -msgstr "Файл даних (ID)" +msgstr "Файл даних (ідентіфікатор)" + +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "Група (назва)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "Тип кластера" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "Кластерний тип (скоречення)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "Група орендарів" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "Група орендарів (скоречення)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "Мітка" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "Мітка (скоречення)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "Має локальні контекстні дані конфігурації" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "Ім'я користувача" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "Назва групи" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "Обов'язково" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "Повинен бути унікальним" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "Видимий інтерфейс користувача" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "Редагований інтерфейс користувача " -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "Чи можна клонувати" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "Мінімальне значення" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "Максимальне значення" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "Регулярний вираз перевірки" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "Поведінка" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "Нове вікно" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "Клас кнопок" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "Тип MIME" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "Розширення файлу" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "Як вкладення" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "Спільний" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "метод HTTP" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "URL-адреса корисного навантаження" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "Перевірка SSL" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "Таємниця" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "Шляхи до файлу CA" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "На створенню" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "По оновленню" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "При видаленні" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "Типи подій" -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "На початку роботи" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "На завершення роботи" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "Активний" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "Типи об'єктів" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "Один або кілька присвоєних типів об'єктів" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "Тип даних поля (наприклад, текст, ціле число тощо)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "Тип об'єкта" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "Тип об'єкта (для об'єктів або полів з кількома об'єктами)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "Набір для вибору" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "Набір для вибору (для полів виділення)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "Чи відображатиметься користувальницьке поле в інтерфейсі користувача" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "Чи можна редагувати користувальницьке поле в інтерфейсі користувача" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "" "Базовий набір попередньо визначених варіантів для використання (якщо є)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" @@ -7318,205 +7717,200 @@ msgstr "" "Цитуючий рядок параметрів полів, розділених комами, з необов'язковими " "мітками, розділеними двокрапкою: «Вибір1:Перший вибір, Вибір2:другий вибір»" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "клас кнопок" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "" "Клас першого посилання в групі буде використовуватися для спадної кнопки" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "Тип(и) події, які ініціюватимуть це правило" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "Об'єкт дії" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Ім'я вебхука або скрипт у вигляді пунктирного шляху module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "Веб-хук {name} не знайдено" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "Сценарій {name} не знайдено" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "Призначений тип об'єкта" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "Класифікація вступу" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "Користувачі" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "Імена користувачів, розділені комами, укладені подвійними лапками" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "Групи" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "Імена груп, розділені комами, укладені подвійними лапками" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "Пов'язаний тип об'єкта" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "Тип поля" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "Вибір" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "Дані" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "Файл даних" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "Типи контенту" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "Тип вмісту HTTP" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "Події" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "Тип події" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "Тип дії" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "Створення об'єктів" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "Оновлення об'єктів" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "Видалення об'єктів" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "Початок роботи" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "Припинення роботи" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "Тип об'єкта з позначкою" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "Дозволений тип об'єкта" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "Регіони" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "Групи тех. майданчиків" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "Локації" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "Типи пристроїв" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "Ролі" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "Типи кластерів" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "Кластерні групи" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" msgstr "Кластери" -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 msgid "Tenant groups" msgstr "Групи орендарів" -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "Після" - -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "Раніше" - -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "Час" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "Тип(и) об'єкта, які мають користувальницьке поле" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "Дія" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "Значення за замовчуванням" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "Тип пов'язаного об'єкта (лише для об'єктних/багатооб'єктних полів)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "Фільтр пов'язаних об'єктів" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "Вкажіть параметри запиту як об'єкт JSON." + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "Користувальницькі поля" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "Поведінка" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "Цінності" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." @@ -7524,7 +7918,7 @@ msgstr "" "Тип даних, що зберігаються в цьому полі. Для полів об'єкт/багатооб'єкт " "виберіть відповідний тип об'єкта нижче." -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." @@ -7532,7 +7926,11 @@ msgstr "" "Це відображатиметься як текст довідки для поля форми. Markdown " "підтримується." -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "Пов'язаний об'єкт" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" @@ -7540,16 +7938,16 @@ msgstr "" "Введіть один вибір на рядок. Додаткову мітку можна вказати для кожного " "вибору, додавши її двокрапкою. Приклад:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "Користувальницькі посилання" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "Шаблони" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " @@ -7558,7 +7956,7 @@ msgstr "" "Код шаблону Jinja2 для тексту посилання. Посилання на об'єкт як {example}. " "Посилання, які відображаються як порожній текст, не відображатимуться." -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." @@ -7566,54 +7964,58 @@ msgstr "" "Код шаблону Jinja2 для URL-адреси посилання. Посилання на об'єкт як " "{example}." -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "Код шаблону" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "Шаблон експорту" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "Відтворювати" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "Вміст шаблону заповнюється з віддаленого джерела, вибраного нижче." -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "Повинен вказати локальний вміст або файл даних" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "Збережений фільтр" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "Група сповіщень вказує принаймні одного користувача або групи." + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "Запит HTTP" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "Вибір дії" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "Введіть умови в JSON формат." -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." @@ -7621,55 +8023,33 @@ msgstr "" "Введіть параметри для переходу до дії JSON" " формат." -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "Правило події" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "Умови" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "Творіння" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "Оновлення" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "Тригери" -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "Видалення" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "Група повідомлень" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "Виконання завдань" - -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "Орендарі" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "Призначення" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "Дані заповнюються з віддаленого джерела, вибраного нижче." -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "Необхідно вказати локальні дані або файл даних" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "Зміст" @@ -7716,47 +8096,25 @@ msgstr "Заплануйте виконання сценарію до встан msgid "Interval at which this script is re-run (in minutes)" msgstr "Інтервал повторного запуску сценарію (у хвилині)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "Індексаторів не знайдено!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "час" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "ім'я користувача" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "Ідентифікатор запиту" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "дія" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "дані перед зміною" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "Зміни бази даних були автоматично скасовані." -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "дані після зміни" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "Скрипт перерваний з помилкою: " -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "зміна об'єкта" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "Виняток стався: " -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "зміни об'єкта" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "Зміни бази даних були скасовані через помилку." -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "Журнал змін не підтримується для цього типу об'єктів ({type})." +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "Індексаторів не знайдено!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7808,32 +8166,32 @@ msgstr "шаблон конфігурації" msgid "config templates" msgstr "шаблони конфігурації" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "Об'єкт (и), до яких застосовується це поле." -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "Тип даних, які містить користувацьницьке поле" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "" "Тип об'єкта NetBox, з яким співвідноситься дане поле (для полів об'єкта)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "Ім'я внутрішнього поля" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "Дозволені лише буквено-цифрові символи та підкреслення." -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "Подвійне підкреслення не дозволено у користувальницьких назвах полів." -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" @@ -7841,31 +8199,39 @@ msgstr "" "Назва поля, яке відображається користувачам (якщо не вказано, буде " "використано 'ім'я поля')" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "назва групи" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "Користувальницькі поля в одній групі відображатимуться разом" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "обов'язковий" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." +"This field is required when creating new objects or editing an existing " +"object." msgstr "" -"Якщо істинна, це поле є обов'язковим для створення нових об'єктів або " -"редагування існуючого об'єкта." +"Це поле обов'язкове для створення нових об'єктів або редагування існуючого " +"об'єкта." -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "має бути унікальним" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "Значення цього поля має бути унікальним для призначеного об'єкта" + +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "вага пошуку" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." @@ -7873,11 +8239,11 @@ msgstr "" "Зважування для пошуку. Більш важливими вважаються нижчі значення. Поля з " "вагою пошуку нуль ігноруватимуться." -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "логіка фільтра" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." @@ -7885,11 +8251,11 @@ msgstr "" "Вільне відповідає будь-якому екземпляру заданого рядка; точно - відповідає " "всьому полю." -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "за замовчуванням" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." @@ -7897,35 +8263,44 @@ msgstr "" "Значення за замовчуванням для поля (має бути значення JSON). Інкапсулювати " "рядки з подвійними лапками (наприклад, \"Foo\")." -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "" +"Відфільтруйте параметри вибору об'єкта, використовуючи словник query_params " +"(має бути значення JSON). Інкапсулюйте рядки подвійними лапками (наприклад, " +"\"Foo\")." + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "відображення ваги" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "Поля з більшою вагою відображаються нижче у формі." -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "мінімальне значення" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "Мінімальне дозволене значення (для числових полів)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "максимальне значення" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "Максимально дозволене значення (для числових полів)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "регулярний вираз перевірки" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7936,275 +8311,246 @@ msgstr "" "і $ для примусового збігу всього рядка. Наприклад, ^ [А-З]{3}$ " "обмежить значення рівно трьома великими літерами." -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "набір вибору" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "" "Визначає, чи відображатиметься користувальницьке поле в інтерфейсі " "користувача" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "" "Визначає, чи можна редагувати значення користувальницького поля в інтерфейсі" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "є клонованим" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "Повторюйте це значення під час клонування об'єктів" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "користувальницьке поле" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "користувальницькі поля" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "Невірне значення за замовчуванням \"{value}\": {error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "Мінімальне значення може бути встановлено лише для числових полів" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "Максимальне значення може бути встановлено лише для числових полів" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "" "Перевірка регулярних виразів підтримується лише для текстових та URL полів" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "Унікальність не може бути застосована для булевих полів" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "Поля виділення повинні вказувати набір варіантів." -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "Вибір можна встановити лише для полів виділення." -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "Поля об'єкта повинні визначати тип об'єкта." -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type} поля не можуть визначати тип об'єкта." -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "" +"Пов'язаний об'єктний фільтр може бути визначений лише для полів об'єктів." + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "" +"Фільтр повинен бути визначений як словник, що відображає атрибути зі " +"значеннями." + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "Iстинна" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "Хибно" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "Значення повинні відповідати цьому регексу: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "Значення має бути рядком." -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "Значення має збігатися з регулярним виразом '{regex}'" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "Значення має бути цілим числом." -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "Значення повинно бути меньш, ніж {minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "Значення не повинно перевищувати {maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "Значення має бути десятковим." -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "Значення має бути істинним або хибним." -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "Значення дати повинні бути у форматі ISO 8601 (РРРР-ММ-ДД)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "" "Значення дати та часу повинні бути у форматі ISO 8601 (РРРР-ММ-ДД ГГ:ХХ:СС)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "Невірний вибір ({value}) для набору варіантів {choiceset}." -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "Невірний вибір(и) ({value}) для набору варіантів {choiceset}." -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "Значення має бути ідентифікатором об'єкта, а не {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "Значення має бути списком ідентифікаторів об'єктів, а не {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "Знайдено недійсний ідентифікатор об'єкта: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "Обов'язкове поле не може бути порожнім." -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "Базовий набір попередньо визначених варіантів (необов'язково)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "Вибір автоматично впорядковується за алфавітом" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "набір вибору користувальницького поля" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "набори вибору користувальницького поля" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "Повинен визначити базовий або додатковий вибори." -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "макет" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "конфігурація" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "інформаційна панель" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "інформаційні панелі" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "типи об'єктів" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "Об'єкт(и), до яких застосовується це правило." -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "при створенні" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "Запускається, коли створюється відповідний об'єкт." - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "по оновленню" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "Спрацьовує, коли оновлюється відповідний об'єкт." - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "при видаленні" +msgid "The types of event which will trigger this rule." +msgstr "Типи подій, які викличуть спрацьовання цього правила." -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "Спрацьовує при видаленні відповідного об'єкта." - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "на початку роботи" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "Спрацьовує, коли запускається завдання для відповідного об'єкта." - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "в кінці роботи" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "Спрацьовує, коли завдання для відповідного об'єкта завершується." - -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "умови" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "Набір умов, які визначають, чи буде подія генеруватися." -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "тип дії" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "Додаткові дані для передачі об'єкту дії" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "спрацьовує правило" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "спрацьовує правила" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "" -"Необхідно вибрати принаймні один тип події: створення, оновлення, видалення," -" початок роботи та/або закінчення завдання." - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" @@ -8214,7 +8560,7 @@ msgstr "" "виклику веб-хука. Обробка шаблонів Jinja2 підтримується в тому ж контексті, " "що і тіло запиту." -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available тут." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "додаткові заголовки" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8240,11 +8586,11 @@ msgstr "" "Назва: Значення. Обробка шаблонів Jinja2 підтримується в тому ж" " контексті, що і тіло запиту (нижче)." -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "шаблон тіла" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8256,11 +8602,11 @@ msgstr "" "подія, модель, мітка часу, ім'я" " користувача, ідентифікатор запиту, і дані." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "таємниця" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8270,15 +8616,15 @@ msgstr "" "що містить шестигранний дайджест HMAC тіла корисного навантаження з " "використанням секрету як ключа. Таємниця не передається у запиті." -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "Увімкнути перевірку сертифіката SSL. Відключайте з обережністю!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "Шляхи до файлу CA" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." @@ -8286,63 +8632,63 @@ msgstr "" "Конкретний файл сертифіката CA для перевірки SSL. Залиште порожнім, щоб " "використовувати параметри системи за замовчуванням." -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "веб-хук" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "веб-хуки" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "Не вказуйте файл сертифіката CA, якщо перевірка SSL вимкнена." -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "Тип (и) об'єкта, до яких застосовується це посилання." -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "текст посилання" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "Код шаблону Jinja2 для тексту посилання" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "URL-адреса посилання" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "Код шаблону Jinja2 для URL-адреси посилання" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "Посилання з тією ж групою відображатимуться у випадаючому меню" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "нове вікно" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "Примусове відкриття посилання в новому вікні" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "користувальницьке посилання" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "користувальницькі посилання" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "Тип (и) об'єкта, до яких застосовується цей шаблон." -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." @@ -8350,113 +8696,160 @@ msgstr "" "Код шаблону Jinja2. Список об'єктів, що експортуються, передається як " "контекстна змінна з назвою запит." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "За замовчуванням текст/простий; набір символів = utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "розширення файлу" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "Розширення для додавання до відтвореної назви файлу" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "як вкладення" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "Завантажити файл як вкладення" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "експорт шаблону" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "експортувати шаблони" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "\"{name}\" - це зарезервована назва. Будь ласка, виберіть іншу назву." -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "Тип (и) об'єкта, до яких застосовується цей фільтр." -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "спільні" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "збережений фільтр" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "збережені фільтри" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "" "Параметри фільтра повинні зберігатися як словник аргументів ключових слів." -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "висота зображення" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "ширина зображення" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "вкладення зображення" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "вкладення зображень" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "" "Вкладені зображення не можуть бути призначені для цього типу об'єкта " "({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "добрий" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "запис журналу" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "записи журналу" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "Журналізація не підтримується для цього типу об'єктів ({type})." -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "закладка" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "закладки" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "Закладки не можуть бути призначені для цього типу об'єкта ({type})." +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "читати" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "подія" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "сповіщення" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "сповіщення" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "Об'єкти такого типу ({type}) не підтримують сповіщення." + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "груп" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "користувачів" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "група повідомлень" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "групи повідомлень" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "підписка" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "підписки" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "виконуваний" @@ -8497,19 +8890,19 @@ msgstr "кешоване значення" msgid "cached values" msgstr "кешовані значення" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "гілка" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "відділення" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "поетапна зміна" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "поетапні зміни" @@ -8533,85 +8926,87 @@ msgstr "позначений предмет" msgid "tagged items" msgstr "позначені предмети" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "Дані сценарію" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "Параметри виконання сценарію" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "Зміни бази даних були автоматично скасовані." - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "Скрипт перерваний з помилкою: " - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "Виняток стався: " - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "Зміни бази даних були скасовані через помилку." - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "Видалення запобігає правилу захисту: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "Відхилити" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "Типи об'єктів" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "Перевірте унікальність" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "видимий" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "Редагований" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "Пов'язаний тип об'єкта" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "Набір вибору" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "Чи можна клонувати" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "Мінімальне значення" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "Максимальне значення" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "Перевірка регулярного вираза " + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "Графік" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "Порядок за алфавітом" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "Нове вікно" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "Як вкладення" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8621,63 +9016,54 @@ msgstr "Як вкладення" msgid "Data File" msgstr "Файл даних" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "Синхронізовано" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "Зображення" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "Розмір (байт)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "Читати" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "Перевірка SSL" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "Початок роботи" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "Завершення роботи" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "Типи подій" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "Ролі пристроїв" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "П.І.Б." - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "Ідентифікатор запиту" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "Коментарі (короткі)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "Лінія" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "Рівень" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "Повідомлення" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "Метод" @@ -8710,37 +9096,37 @@ msgstr "" "Користувальницька перевірка зіткнулася з невдачею через{attribute}: " "{exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "Невірний атрибут \"{name}\" за запитом" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "Невірний атрибут \"{name}\" для {model}" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "Ваша інформаційна панель була скинута." -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "Доданий віджет: " -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "Оновлений віджет: " -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "Видалений віджет: " -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "Помилка при видаленні віджета: " -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "Неможливо запустити скрипт: робочий процес RQ не запущений." @@ -8783,10 +9169,6 @@ msgstr "СЛААК" msgid "Loopback" msgstr "Петлебек" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "Вторинний" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Анікаст" @@ -8812,19 +9194,19 @@ msgstr "Простий текст" msgid "Invalid IP address format: {address}" msgstr "Невірний формат IP-адреси: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "Імпортувати ціль" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "Імпорт цілі (назва)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "Ціль експорту" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "Ціль експорту (назва)" @@ -8869,7 +9251,7 @@ msgstr "Префікс" #: netbox/ipam/filtersets.py:159 netbox/ipam/filtersets.py:198 #: netbox/ipam/filtersets.py:221 msgid "RIR (ID)" -msgstr "РІР (ІДЕНТИФІКАТОР)" +msgstr "RIR (ідентіфікатор)" #: netbox/ipam/filtersets.py:165 netbox/ipam/filtersets.py:204 #: netbox/ipam/filtersets.py:227 @@ -8889,16 +9271,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "Префікси, які містять цей префікс або IP" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "Довжина маски" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" -msgstr "ВЛАН (ІДЕНТИФІКАТОР)" +msgstr "VLAN (ідентіфікатор)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "Номер VLAN (1-4094)" @@ -8918,33 +9300,33 @@ msgid "Parent prefix" msgstr "Батьківський префікс" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "Віртуальна машина (назва)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" -msgstr "Віртуальна машина (ID)" +msgstr "Віртуальна машина (ідентіфікатор)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "Інтерфейс (назва)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "Інтерфейс VM (назва)" #: netbox/ipam/filtersets.py:643 netbox/vpn/filtersets.py:113 msgid "VM interface (ID)" -msgstr "Інтерфейс VM (ID)" +msgstr "Інтерфейс VM (ідентіфікатор)" #: netbox/ipam/filtersets.py:648 msgid "FHRP group (ID)" -msgstr "Група FHRP (ID)" +msgstr "Група FHRP (ідентіфікатор)" #: netbox/ipam/filtersets.py:652 msgid "Is assigned to an interface" @@ -8956,25 +9338,25 @@ msgstr "призначається" #: netbox/ipam/filtersets.py:668 msgid "Service (ID)" -msgstr "Сервіс (ID)" +msgstr "Сервіс (ідентіфікатор)" #: netbox/ipam/filtersets.py:673 msgid "NAT inside IP address (ID)" -msgstr "NAT всередині IP-адреси (ID)" +msgstr "NAT всередині IP-адреси (ідентіфікатор)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" -msgstr "IP-адреса (ID)" +msgstr "IP-адреса (ідентіфікатор)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP-адреса" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" -msgstr "Первинний IPv4 (ID)" +msgstr "Первинний IPv4 (ідентіфікатор)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "Первинний IPv6 (ідентифікатор)" @@ -9007,17 +9389,17 @@ msgstr "Потрібна маска CIDR (наприклад, /24)." msgid "Address pattern" msgstr "Адресний шаблон" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "Забезпечте унікальний простір" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "Є приватним" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -9030,20 +9412,20 @@ msgstr "Є приватним" msgid "RIR" msgstr "ЗРИГНУТИ" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "Дата додавання" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "Група VLAN" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -9052,49 +9434,49 @@ msgstr "Група VLAN" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "Довжина префікса" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "Чи є басейн" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "Ставтеся до повного використання" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "Призначення VLAN" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "Ім'я DNS" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "Протокол" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "Ідентифікатор групи" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -9106,155 +9488,141 @@ msgstr "Ідентифікатор групи" msgid "Authentication type" msgstr "Тип аутентифікації" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "Ключ аутентифікації" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "Аутентифікація" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "Мінімальний дитячий VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "Максимальний рівень дитячого VLAN VID" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "Тип сфери застосування" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "Діапазони ідентифікаторів VLAN" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "Сфера застосування" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "Тех. майданчик і група" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "Порти" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "Імпортувати цілі маршруту" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "Експортувати цілі маршруту" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "Призначений RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "Група VLAN (якщо така є)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "Батьківський пристрій призначеного інтерфейсу (якщо є)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "Віртуальна машина" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "Батьківська віртуальна машина призначеного інтерфейсу (якщо є)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "Призначений інтерфейс" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "Є первинним" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "Зробіть це основним IP для призначеного пристрою" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "" "Пристрій або віртуальна машина не вказано; неможливо встановити як основний " "IP" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "Інтерфейс не вказано; неможливо встановити як основний IP" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "Тип авторизації" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "Тип сфери застосування (додаток і модель)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "Мінімальний дочірній VLAN VID (за замовчуванням: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "Максимальний дочірній VLAN VID (за замовчуванням: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "Призначена група VLAN" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "протокол IP" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "Необхідний, якщо він не призначений для віртуальної машини" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "Обов'язково, якщо пристрій не призначений" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} не призначається цьому пристрою/VM." #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Маршрутні цілі" @@ -9330,31 +9698,34 @@ msgstr "Призначено до інтерфейсу" msgid "DNS Name" msgstr "Ім'я DNS" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "ІДЕНТИФІКАТОР VLAN" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLANs" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "Мінімальний VID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "Містить ідентифікатор VLAN" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "Максимальний VID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "ІДЕНТИФІКАТОР VLAN" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9425,11 +9796,16 @@ msgstr "Віртуальна IP-адреса" msgid "Assignment already exists" msgstr "Призначення вже існує" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "Ідентифікатори VLAN" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "Дитячі VLAN" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." @@ -9437,33 +9813,33 @@ msgstr "" "Список одного або декількох номерів портів, розділених комами. Діапазон " "можна вказати за допомогою дефіса." -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "Шаблон сервісу" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "Порт (и)" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "Сервіс" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "Шаблон сервісу" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "З шаблону" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "Користувальницький" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "" @@ -9503,7 +9879,7 @@ msgstr "Ідентифікатор групи" msgid "protocol" msgstr "протокол" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "тип аутентифікації" @@ -9519,10 +9895,6 @@ msgstr "Група ФГРП" msgid "FHRP groups" msgstr "Групи FHRP" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "пріоритет" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "Групове призначення FHRP" @@ -9539,7 +9911,7 @@ msgstr "приватне" msgid "IP space managed by this RIR is considered private" msgstr "Простір IP, керований цим RIR, вважається приватним" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "RIR" @@ -9789,22 +10161,6 @@ msgid "" msgstr "" "Служба повинна бути пов'язана або з пристроєм, або з віртуальною машиною." -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "мінімальний ідентифікатор VLAN" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "Найнижчий допустимий ідентифікатор дитячого VLAN" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "максимальний ідентифікатор VLAN" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "Найвищий допустимий ідентифікатор підпорядкованого VLAN" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "Групи VLAN" @@ -9817,39 +10173,40 @@ msgstr "Не вдається встановити scope_type без scope_id." msgid "Cannot set scope_id without scope_type." msgstr "Не вдається встановити scope_id без scope_type." -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "Діапазони не можуть перекриватися." + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" msgstr "" -"Максимальний дитячий VID повинен бути більшим або дорівнює мінімальному " -"дитячому VID" +"Максимальний підпорядкований VID повинен бути більшим або дорівнює " +"мінімальному підпорядкований VID ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "Конкретний тех. майданчик, якому присвоєно цей VLAN (якщо такий є)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "Група VLAN (необов'язково)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "Числовий ідентифікатор VLAN (1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "Операційний стан цього VLAN" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "Основна функція цього VLAN" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLANs" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " @@ -9858,10 +10215,10 @@ msgstr "" "VLAN присвоюється групі {group} (сфера застосування: {scope}); також не може" " призначатися до тех. майданчику {site}." -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "VID повинен бути між {minimum} і {maximum} для VLAN в групі {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "VID повинен знаходитися в діапазоні {ranges} для VLAN в групі {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9879,8 +10236,8 @@ msgstr "забезпечити унікальний простір" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "Запобігання дублікуванню префіксів/IP-адрес у цьому VRF" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRF" @@ -9908,8 +10265,8 @@ msgstr "Кількість тех. майданчиків" msgid "Provider Count" msgstr "Кількість провайдерів" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "Агрегати" @@ -9918,21 +10275,21 @@ msgid "Added" msgstr "Додано" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "Префікси" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "Утилізація" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "Діапазони IP" @@ -9977,7 +10334,11 @@ msgstr "Призначений об'єкт" msgid "Scope Type" msgstr "Тип сфери застосування" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "Діапазони VID" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "ВИД" @@ -10041,11 +10402,11 @@ msgstr "Інтерфейси пристроїв" msgid "VM Interfaces" msgstr "Інтерфейси VM" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "Це поле не може бути порожнім." -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." @@ -10053,21 +10414,34 @@ msgstr "" "Значення має бути передано безпосередньо (наприклад, \"foo\": 123); не " "використовуйте словник або список." -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value} не є дійсним вибором." -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "Невірний тип вмісту: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "Невірне значення. Вкажіть тип вмісту як '.'." -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "Діапазони повинні бути вказані в формі (нижній, верхній)." + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "Межі діапазону повинні бути визначені як цілі числа." + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} повинен реалізувати get_view_name()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "Невірний дозвіл {permission} для моделі {model}" @@ -10329,12 +10703,12 @@ msgstr "" #: netbox/netbox/config/parameters.py:202 msgid "Job result retention" -msgstr "Зберігання результатів роботи" +msgstr "Зберігання результатів завдання" #: netbox/netbox/config/parameters.py:204 msgid "Days to retain job result history (set to zero for unlimited)" msgstr "" -"Дні для збереження історії результатів роботи (встановлено на нуль " +"Дні для збереження історії результатів завдання (встановлено на нуль " "необмежено)" #: netbox/netbox/config/parameters.py:209 @@ -10395,46 +10769,51 @@ msgstr "Видалити мітки" msgid "{class_name} must specify a model class." msgstr "{class_name} необхідно вказати клас моделі." -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "Невідоме ім'я поля '{name}' у призначених для користувача даних поля." -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "Невірне значення для користувальницького поля '{name}': {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "Користувальницьке поле '{name}' має мати унікальне значення." + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "Відсутнє обов'язкове користувальницьке поле '{name}'." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "Віддалене джерело даних" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "шлях даних" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "Шляху до віддаленого файлу (відносно кореня джерела даних)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "увімкнено автоматичну синхронізацію" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "Увімкнути автоматичну синхронізацію даних при оновленні файлу даних" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "дата синхронізована" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name} повинен реалізувати метод sync_data ()." @@ -10448,217 +10827,230 @@ msgid "Site Groups" msgstr "Групи тех. майданчиків" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "Ролі в стійці" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "Піднесення" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "Групи орендарів" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "Контактні групи" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "Контактні ролі" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "Контактні завдання" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "Ролі в стійці" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "Піднесення" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "Типи стійки" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "Модулі" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "Контексти віртуальних пристроїв" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "Виробники" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "Компоненти пристрою" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "Ролі елементів інвентаря" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "З'єднання" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "Кабелі" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "Бездротові посилання" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "Інтерфейсні з'єднання" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Консольні підключення" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "Підключення живлення" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "Групи бездротової локальної мережі" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "Префікс і ролі VLAN" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "Діапазони ASN" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "Групи VLAN" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "Шаблони послуг" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "Послуги" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "Тунелі" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "Тунельні групи" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "Закінчення тунелів" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPN" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "Припинення" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "Пропозиції IKE" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "Політика IKE" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "Пропозиції IPsec" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "Політика IPsec" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "Профілі IPsec" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "Віртуалізація" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "Віртуальні диски" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "Типи кластерів" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "Кластерні групи" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "Типи схем" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "Групи каналів зв'язку" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "Групи завдань" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" -msgstr "Закінчення схем" +msgstr "Кінці каналу зв'язку" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "Провайдери" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "Облікові записи постачальника" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "Мережі провайдерів" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "Панелі живлення" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "Конфігурації" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "Контексти конфігурації" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "Конфігураційні шаблони" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "Налаштування" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10671,114 +11063,108 @@ msgstr "Налаштування" msgid "Custom Fields" msgstr "Користувальницькі поля" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "Вибір користувальницьких полів" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "Користувальницькі посилання" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "Експортувати шаблони" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "Збережені фільтри" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "Вкладення зображень" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "Операції" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "Інтеграція" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "Джерела даних" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "Правила події" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Веб-хуки" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" -msgstr "Вакансії" +msgstr "Завдання" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "Лісозаготівля" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "Групи сповіщень" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "Записи журналу" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "Журнал змін" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 -msgid "Admin" -msgstr "Адміністратор" - -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "Користувачі" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "Групи" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 +msgid "Admin" +msgstr "Адміністратор" + +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "Токени API" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "Дозволи" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "Система" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "плагіни" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "Історія налаштувань" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "Фонові завдання" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "плагіни" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10809,30 +11195,22 @@ msgid "" msgstr "" "{template_extension} не є підкласом Netbox.Plugins.PluginTemplateExtension!" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "" -"Клас PluginTemplateExtension {template_extension} не визначає дійсну модель!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} повинен бути екземпляром Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} повинен бути екземпляром Netbox.Plugins.PluginMenuItem" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button} повинен бути екземпляром Netbox.Plugins.PluginMenuButton" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "extra_context повинен бути словником" @@ -10910,75 +11288,79 @@ msgstr "Не вдається додати магазини до реєстру msgid "Cannot delete stores from registry" msgstr "Неможливо видалити магазини з реєстру" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "Чеська мова" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "Данська мова" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "Німецька мова" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "Англійська мова" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "Іспанська мова" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "Французька мова" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "Італійська мова" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "Японська мова" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "Голландська мова" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "Польська мова" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "Португальська мова" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "Російська мова" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "Турецька мова" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "Українська мова" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "Китайська мова" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "Вибрати все" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "Перемкнути всі" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "Переключити випадаюче меню" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "Помилка" @@ -11031,24 +11413,24 @@ msgstr "Перейменовано {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "Видалено {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "Журнал змін" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "Журнал" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "Неможливо синхронізувати дані: Файл даних не встановлено." -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "Синхронізовані дані для {object_type} {object}." -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "Синхронізовано {count} {object_type}" @@ -11058,7 +11440,7 @@ msgstr "Синхронізовано {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name} повинен реалізувати get_children ()" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -11095,11 +11477,11 @@ msgstr "" msgid "The complete exception is provided below" msgstr "Повне виключення наведено нижче" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Версія Python" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "Версія NetBox" @@ -11124,14 +11506,26 @@ msgstr "на GitHub" msgid "Home Page" msgstr "Головна сторінка" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "Профіль" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "Повідомлення" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "Підписки" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "Уподобання" @@ -11139,7 +11533,7 @@ msgstr "Уподобання" msgid "Change Password" msgstr "Змінити пароль" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -11164,7 +11558,7 @@ msgstr "Змінити пароль" msgid "Cancel" msgstr "Скасувати" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -11238,7 +11632,7 @@ msgid "Superuser" msgstr "Суперкористувач" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "Персонал" @@ -11253,19 +11647,19 @@ msgstr "Призначені групи" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11286,7 +11680,7 @@ msgstr "Мої токени API" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Токен" @@ -11307,32 +11701,41 @@ msgstr "Додати токен" msgid "Home" msgstr "Головна" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "NetBox Motif" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "Логотип NetBox" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "Документи" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "РЕШТА API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "Документація REST API" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "графічний інтерфейс QL" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "Підтримка NetBox Labs" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "Вихідний код" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "Спільнота" @@ -11344,14 +11747,19 @@ msgstr "Дата встановлення" msgid "Termination Date" msgstr "Дата припинення" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "Призначити групу" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" -msgstr "Закінчення схеми заміни" +msgstr "Поміняти місцями кінці каналу зв'язку" #: netbox/templates/circuits/circuit_terminations_swap.html:8 #, python-format msgid "Swap these terminations for circuit %(circuit)s?" -msgstr "Поміняйте ці закінчення на схему %(circuit)s?" +msgstr "Поміняти місцями кінці для каналу зв'язку%(circuit)s?" #: netbox/templates/circuits/circuit_terminations_swap.html:14 msgid "A side" @@ -11361,13 +11769,21 @@ msgstr "Сторона" msgid "Z side" msgstr "Z сторона" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "Призначити канал зв'язку" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "Призначення групи каналів зв'язку" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" -msgstr "Додати схему" +msgstr "Додати канал зв'язку" #: netbox/templates/circuits/circuittype.html:19 msgid "Circuit Type" -msgstr "Тип схеми" +msgstr "Тип каналу зв'язку" #: netbox/templates/circuits/inc/circuit_termination.html:10 #: netbox/templates/dcim/devicetype/component_templates.html:33 @@ -11385,7 +11801,7 @@ msgstr "Додати" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11470,7 +11886,7 @@ msgstr "Патч-панель/порт" #: netbox/templates/circuits/provider.html:11 msgid "Add circuit" -msgstr "Додати схему" +msgstr "Додати канал зв'язку" #: netbox/templates/circuits/provideraccount.html:17 msgid "Provider Account" @@ -11506,13 +11922,10 @@ msgstr "Нова цінність" msgid "Changed" msgstr "Змінено" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "Останнє оновлення" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "Розмір" @@ -11592,27 +12005,120 @@ msgstr "Уподобання користувача" #: netbox/templates/core/inc/config_data.html:141 msgid "Job retention" -msgstr "Зберігання роботи" +msgstr "Зберігання завдання" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" -msgstr "Робота" +msgstr "Завдання" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "Створено" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "Планування" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "кожен %(interval)s хвилини" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "Змінити" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "Різниця" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "Попередній" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "Наступний" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "Об'єкт створений" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "Об'єкт видалений" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "Немає змін" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "Дані перед зміною" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "Попередження: Порівняння неатомних змін з попереднім записом змін" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "Дані після зміни" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Дивитись все %(count)s Зміни" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "Зберігання журналу змін" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "днів" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "Невизначений" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "Не встановлено" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "Огляд" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "Встановити" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "Деталі плагіна" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "У підсумку" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "Ліцензія" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "Історія версій" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "Інструкції по локальній установці" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11624,8 +12130,8 @@ msgstr "Фонові черги" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11681,10 +12187,10 @@ msgstr "завдання в " #: netbox/templates/core/rq_task_list.html:33 msgid "Queued Jobs" -msgstr "Вакансії в черзі" +msgstr "Завдання у черзі" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11707,15 +12213,15 @@ msgstr "Черги" #: netbox/templates/core/rq_worker.html:63 msgid "Curent Job" -msgstr "Поточна робота" +msgstr "Поточне завдання" #: netbox/templates/core/rq_worker.html:67 msgid "Successful job count" -msgstr "Підрахунок успішної роботи" +msgstr "Підрахунок кількості успішно виконаних завдань" #: netbox/templates/core/rq_worker.html:71 msgid "Failed job count" -msgstr "Підрахунок невдалих завдань" +msgstr "Підрахунок кількості невдало виконаних завдань" #: netbox/templates/core/rq_worker.html:75 msgid "Total working time" @@ -11744,39 +12250,43 @@ msgstr "Експорт" msgid "System Status" msgstr "Статус системи" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "Випуск NetBox" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Версія Джанго" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "Версія PostgreSQL" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "Назва бази даних" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "Розмір бази даних" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "Недоступний" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "Робочі процеси RQ" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "черга за замовчуванням" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "Системний час" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "Поточне налаштування" @@ -11874,14 +12384,15 @@ msgstr "Не в стійці" msgid "GPS Coordinates" msgstr "GPS-координати" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "Картуйте це" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "Карта" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "Призначеня мітки" @@ -11901,19 +12412,19 @@ msgstr "Менеджмент" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT для" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "НАТ" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "Використання електроенергії" @@ -11941,7 +12452,7 @@ msgid "Leg" msgstr "Нога" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "Додати послугу" @@ -12202,6 +12713,22 @@ msgstr "Прозорий" msgid "Clear All" msgstr "Очистити все" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "Глибина монтажу" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "Пусковий блок" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "Юніти у низхідному порядку" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "Висота стійки" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "Додати дочірній інтерфейс" @@ -12264,8 +12791,8 @@ msgstr "Ширина каналу" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12355,49 +12882,33 @@ msgstr "Максимальна потужність" msgid "Allocated Draw" msgstr "Виділена потужність" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "Використання простору" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "за спаданням" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "за зростанням" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "Пусковий блок" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "Глибина монтажу" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "Вага стійки" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "Максимальна вага" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "Загальна вага" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "Зображення та етикетки" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "Лише зображення" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "Тільки етикетки" @@ -12410,6 +12921,10 @@ msgstr "Додати бронювання" msgid "View List" msgstr "Переглянути список" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "Виберіть вид на стійку" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "Сортувати за" @@ -12463,10 +12978,6 @@ msgstr "Час роботи тех. майданчику" msgid "Physical Address" msgstr "Фізична адреса" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "Карта" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "Адреса доставки" @@ -12507,7 +13018,7 @@ msgstr "Додати нового учасника" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "Дії" @@ -12676,46 +13187,42 @@ msgid "Group Name" msgstr "Назва групи" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "Повинен бути унікальним" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "Клонований" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "Значення за замовчуванням" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "Вага пошуку" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "Логіка фільтра" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "Вага дисплея" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "Видимий інтерфейс користувача" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "Редагований інтерфейс користувача" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "Правила перевірки" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "Мінімальне значення" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "Максимальне значення" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "Регулярний вираз" @@ -12729,11 +13236,11 @@ msgstr "Клас кнопок" msgid "Assigned Models" msgstr "Призначені моделі" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "Текст посилання" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "URL-адреса посилання" @@ -12758,6 +13265,14 @@ msgstr "" "Ця зміна зачіпає тільки вашу особисту інформаційну панель, і не " "вплине на інших користувачів." +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "конфігурація віджетів" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "Закрити віджет" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "Додати віджет" @@ -12790,13 +13305,9 @@ msgstr "Виникла проблема з отриманням RSS-каналу msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "Початок роботи" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "Завершення роботи" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "Умови" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12838,20 +13349,15 @@ msgstr "Результати очікуються" msgid "Journal Entry" msgstr "Запис журналу" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "Зберігання журналу змін" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "днів" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "Група повідомлень" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "Невизначений" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Не призначено" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12865,52 +13371,6 @@ msgstr "Джерело контекстів" msgid "New Journal Entry" msgstr "Новий запис журналу" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "Змінити" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "Різниця" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "Попередній" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "Наступний" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "Об'єкт створений" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "Об'єкт видалений" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "Немає змін" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "Дані перед зміною" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "Попередження: Порівняння неатомних змін з попереднім записом змін" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "Дані після зміни" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "Дивитись все %(count)s Зміни" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "Звіт" @@ -12921,7 +13381,7 @@ msgstr "У вас немає дозволу на запуск скриптів" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "Запустити скрипт" @@ -12934,27 +13394,27 @@ msgstr "Помилка завантаження сценарію" msgid "Script no longer exists in the source file." msgstr "Скрипт більше не існує у вихідному файлі." -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "Останній запуск" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "Скрипт більше не присутній у вихідному файлі" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "Ніколи" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "Запустіть знову" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "Скриптів не знайдено" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -12969,6 +13429,14 @@ msgstr "" msgid "Results" msgstr "Результати" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "Поріг журналу" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "Усе" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "Позначені предмети" @@ -13001,11 +13469,11 @@ msgstr "Тип вмісту HTTP" msgid "SSL Verification" msgstr "Перевірка SSL" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "Додаткові заголовки" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "Шаблон тіла" @@ -13081,6 +13549,10 @@ msgstr "Параметри поля" msgid "Accessor" msgstr "Аксесуар" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "вибір" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "Імпортна вартість" @@ -13247,6 +13719,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "Наступні об'єкти будуть видалені в результаті цієї дії." +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "тому" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "Немає непрочитаних повідомлень" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "Усі повідомлення" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "Вибрати" @@ -13314,15 +13798,23 @@ msgstr "Швидкий пошук" msgid "Saved filter" msgstr "Збережений фільтр" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "Почистити замовлення" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "Довідковий центр" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Джанго Адміністратор" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "Вийти" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "Увійти" @@ -13370,10 +13862,6 @@ msgstr "Масове створення" msgid "Create Group" msgstr "Створити групу" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "Призначити групу" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "Віртуальні IP-адреси" @@ -13507,10 +13995,6 @@ msgstr "Додати префікс" msgid "Add VLAN" msgstr "Додати VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "Дозволені відеоролики" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "Відмінник маршруту" @@ -13519,20 +14003,16 @@ msgstr "Відмінник маршруту" msgid "Unique IP Space" msgstr "Унікальний IP простір" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "Логотип NetBox" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "Помилки" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "Увійти" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "Або" @@ -13609,11 +14089,6 @@ msgstr "Назва" msgid "Phone" msgstr "Телефон" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "Завдання" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13653,7 +14128,7 @@ msgstr "Призначені дозволи" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "Дозвіл" @@ -13675,23 +14150,21 @@ msgid "Allocated Resources" msgstr "Виділені ресурси" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "Віртуальні процесори" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "Пам'ять" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "Місце на диску" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "ГБ" @@ -13732,7 +14205,7 @@ msgid "Cluster Group" msgstr "Кластерна група" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "Тип кластера" @@ -13741,13 +14214,13 @@ msgstr "Тип кластера" msgid "Virtual Disk" msgstr "Віртуальний диск" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "Ресурси" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "Додати віртуальний диск" @@ -13929,17 +14402,16 @@ msgstr "Додати групу бездротової локальної мер msgid "Link Properties" msgstr "Властивості посилання" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "Третинний" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "Неактивний" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "Відстань" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" -msgstr "Батьківська контактна група (ID)" +msgstr "Батьківська контактна група (ідентіфікатор)" #: netbox/tenancy/filtersets.py:35 msgid "Parent contact group (slug)" @@ -13948,7 +14420,7 @@ msgstr "Батьківська контактна група (скореченн #: netbox/tenancy/filtersets.py:41 netbox/tenancy/filtersets.py:68 #: netbox/tenancy/filtersets.py:111 msgid "Contact group (ID)" -msgstr "Контактна група (ID)" +msgstr "Контактна група (ідентіфікатор)" #: netbox/tenancy/filtersets.py:48 netbox/tenancy/filtersets.py:75 #: netbox/tenancy/filtersets.py:118 @@ -13957,11 +14429,11 @@ msgstr "Контактна група (скоречення)" #: netbox/tenancy/filtersets.py:105 msgid "Contact (ID)" -msgstr "Контакт (ID)" +msgstr "Контакт (ідентіфікатор)" #: netbox/tenancy/filtersets.py:122 msgid "Contact role (ID)" -msgstr "Роль контакту (ID)" +msgstr "Роль контакту (ідентіфікатор)" #: netbox/tenancy/filtersets.py:128 msgid "Contact role (slug)" @@ -13973,7 +14445,7 @@ msgstr "Контактна група" #: netbox/tenancy/filtersets.py:170 msgid "Parent tenant group (ID)" -msgstr "Батьківська група орендарів (ID)" +msgstr "Батьківська група орендарів (ідентіфікатор)" #: netbox/tenancy/filtersets.py:176 msgid "Parent tenant group (slug)" @@ -13981,11 +14453,11 @@ msgstr "Батьківська група орендарів (скореченн #: netbox/tenancy/filtersets.py:182 netbox/tenancy/filtersets.py:202 msgid "Tenant group (ID)" -msgstr "Група орендарів (ID)" +msgstr "Група орендарів (ідентіфікатор)" #: netbox/tenancy/filtersets.py:235 msgid "Tenant Group (ID)" -msgstr "Група орендарів (ID)" +msgstr "Група орендарів (ідентіфікатор)" #: netbox/tenancy/filtersets.py:242 msgid "Tenant Group (slug)" @@ -14100,13 +14572,13 @@ msgstr "Посилання на контакт" msgid "Contact Description" msgstr "Опис контакту" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" -msgstr "Дозвіл (ID)" +msgstr "Дозвіл (ідентіфікатор)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "Група (назва)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "Група повідомлень (ідентіфікатор)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -14128,27 +14600,27 @@ msgstr "Статус суперкористувача" msgid "If no key is provided, one will be generated automatically." msgstr "Якщо ключ не надано, він буде згенерований автоматично." -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "Чи є персонал" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "Є суперкористувачем" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "Може переглядати" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "Можете додати" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "Може змінитися" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "Може видалити" @@ -14241,47 +14713,47 @@ msgstr "дозвіл" msgid "permissions" msgstr "дозволи" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "налаштування користувача" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Ключ '{path}'є листовим вузлом; не вдається призначити нові ключі" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "" "Ключ '{path}'є словником; не може призначити значення, яке не є словником" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "спливає" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "востаннє використаний" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "ключ" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "запис увімкнено" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "" "Дозволити створення/оновлення/видалення операцій за допомогою цього ключа" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "дозволені IP-адреси" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -14290,11 +14762,11 @@ msgstr "" "порожнім без обмежень. Наприклад: \"10.1.1.0/24, 192.168.10.16/32, " "2001:DB8:1: :/64\"" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "токен" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "жетонів" @@ -14302,18 +14774,10 @@ msgstr "жетонів" msgid "group" msgstr "групи" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "груп" - #: netbox/users/models/users.py:92 msgid "user" msgstr "користувач" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "користувачів" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "Користувач з цим ім'ям користувача вже існує." @@ -14449,7 +14913,7 @@ msgstr "" "Невірні дані YAML. Дані повинні бути у вигляді декількох документів або " "одного документа, що містить перелік словників." -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " @@ -14458,6 +14922,22 @@ msgstr "" "Невірний список ({value}). Повинен бути числовим, а діапазони повинні бути в" " порядку зростання." +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "" +"Вкажіть один або кілька числових діапазонів, розділених комами. Приклад: " +"1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "" +"Недійсні діапазони ({value}). Повинен бути діапазон цілих чисел у порядку " +"зростання." + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14623,6 +15103,26 @@ msgstr "" "Відсутнє необхідне значення для параметра статичного запиту: " "'{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "Пароль повинен мати хоча б одну цифру." + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "Пароль повинен мати хоча б одну велику літеру." + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "Пароль повинен мати хоча б одну малу літеру." + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "" +"Ваш пароль повинен містити принаймні одну цифру, одну велику літеру та одну " +"малу літеру." + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14679,6 +15179,14 @@ msgstr "Додати шаблон експорту" msgid "Import" msgstr "Імпорт" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "Відписатися" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "Підписатися" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "Копіювати в буфер обміну" @@ -14719,15 +15227,11 @@ msgstr "Пошук у NetBox" msgid "Open selector" msgstr "Відкрити селектор" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "Не призначено" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "Написати" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "Тест повинен визначити csv_update_data." @@ -14736,18 +15240,18 @@ msgstr "Тест повинен визначити csv_update_data." msgid "{value} is not a valid regular expression." msgstr "{value} не є дійсним регулярним виразом." -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "" "{self.__class__.__name__} повинен реалізувати get_required_permissions ()" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name} повинен реалізувати get_required_permissions ()" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14759,7 +15263,7 @@ msgstr "" #: netbox/virtualization/filtersets.py:79 msgid "Parent group (ID)" -msgstr "Батьківська група (ID)" +msgstr "Батьківська група (ідентіфікатор)" #: netbox/virtualization/filtersets.py:85 msgid "Parent group (slug)" @@ -14768,12 +15272,12 @@ msgstr "Батьківська група (скоречення)" #: netbox/virtualization/filtersets.py:89 #: netbox/virtualization/filtersets.py:141 msgid "Cluster type (ID)" -msgstr "Тип кластера (ID)" +msgstr "Тип кластера (ідентіфікатор)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" -msgstr "Кластер (ID)" +msgstr "Кластер (ідентіфікатор)" #: netbox/virtualization/forms/bulk_edit.py:166 #: netbox/virtualization/models/virtualmachines.py:115 @@ -14789,7 +15293,7 @@ msgid "Disk (GB)" msgstr "Диск (ГБ)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "Розмір (ГБ)" @@ -14809,6 +15313,10 @@ msgstr "Призначений кластер" msgid "Assigned device within cluster" msgstr "Призначений пристрій у кластері" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "Серійний номер" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14835,6 +15343,7 @@ msgstr "" "дисків." #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "Диск" @@ -14876,46 +15385,46 @@ msgid "memory (MB)" msgstr "пам'ять (МБ)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "диск (ГБ)" +msgid "disk (MB)" +msgstr "диск (МБ)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "Ім'я віртуальної машини має бути унікальним для кожного кластера." -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "віртуальна машина" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "віртуальні машини" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "" "Віртуальна машина повинна бути призначена для тех. майданчику та/або " "кластеру." -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "" "Вибраний кластер ({cluster}) не присвоюється цьому тех. майданчику ({site})." -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "Необхідно вказати кластер при призначенні хост-пристрою." -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "" "Обраний пристрій ({device}) не присвоюється цьому кластеру ({cluster})." -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " @@ -14924,17 +15433,17 @@ msgstr "" "Зазначений розмір диска ({size}) повинен відповідати сукупному розміру " "призначених віртуальних дисків ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "Повинен бути IPV{family} адреса. ({ip} є IPV{version} адреса.)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "Зазначена IP-адреса ({ip}) не присвоюється цій ВМ." -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " @@ -14943,7 +15452,7 @@ msgstr "" "Вибраний батьківський інтерфейс ({parent}) належить до іншої віртуальної " "машини ({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " @@ -14952,7 +15461,7 @@ msgstr "" "Вибраний інтерфейс моста ({bridge}) належить до іншої віртуальної машини " "({virtual_machine})." -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " @@ -14962,24 +15471,24 @@ msgstr "" " і батьківська віртуальна машина інтерфейсу, або ж вона повинна бути " "глобальною." -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "розмір (ГБ)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "розмір (МБ)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "віртуальний диск" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "віртуальні диски" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "Додано {count} пристрої для кластеризації {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "Вилучено {count} пристрої з кластера {cluster}" @@ -15066,7 +15575,7 @@ msgstr "Віртуальне приватне дерево Ethernet" #: netbox/vpn/filtersets.py:41 msgid "Tunnel group (ID)" -msgstr "Тунельна група (ID)" +msgstr "Тунельна група (ідентіфікатор)" #: netbox/vpn/filtersets.py:47 msgid "Tunnel group (slug)" @@ -15082,7 +15591,7 @@ msgstr "Профіль IPsec (ім'я)" #: netbox/vpn/filtersets.py:81 msgid "Tunnel (ID)" -msgstr "Тунель (ID)" +msgstr "Тунель (ідентіфікатор)" #: netbox/vpn/filtersets.py:87 msgid "Tunnel (name)" @@ -15090,35 +15599,35 @@ msgstr "Тунель (назва)" #: netbox/vpn/filtersets.py:118 msgid "Outside IP (ID)" -msgstr "Зовнішній IP (ID)" +msgstr "Зовнішній IP (ідентіфікатор)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" -msgstr "Політика IKE (ID)" +msgstr "Політика IKE (ідентіфікатор)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "Політика IKE (назва)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "Політика IPsec (ідентифікатор)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "Політика IPsec (назва)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN (скоречення)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" -msgstr "Інтерфейс віртуальної машини (ID)" +msgstr "Інтерфейс віртуальної машини (ідентіфікатор)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN (назва)" @@ -15292,7 +15801,7 @@ msgstr "версія" msgid "proposals" msgstr "пропозиції" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "попередньо спільний ключ" @@ -15474,17 +15983,24 @@ msgstr "Підприємство WPA" msgid "Authentication cipher" msgstr "Аутентифікаційний шифр" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "Одиниця відстані" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "Мостові VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "Інтерфейс A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "Інтерфейс B" @@ -15492,39 +16008,51 @@ msgstr "Інтерфейс B" msgid "Side B" msgstr "Сторона B" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "шифр аутентифікації" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "група бездротової локальної мережі" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "групи бездротових локальних мереж" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "бездротова локальна мережа" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "інтерфейс А" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "інтерфейс B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "відстань" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "одиниця відстані" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "бездротова зв'язок" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "бездротові зв'язки" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "Необхідно вказати одиницю виміру при установці бездротової відстані" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} не є бездротовим інтерфейсом." diff --git a/netbox/translations/zh/LC_MESSAGES/django.mo b/netbox/translations/zh/LC_MESSAGES/django.mo index 22cc82f8d14..74fec4f742f 100644 Binary files a/netbox/translations/zh/LC_MESSAGES/django.mo and b/netbox/translations/zh/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/zh/LC_MESSAGES/django.po b/netbox/translations/zh/LC_MESSAGES/django.po index 50c963366ed..ad19ef97c99 100644 --- a/netbox/translations/zh/LC_MESSAGES/django.po +++ b/netbox/translations/zh/LC_MESSAGES/django.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-30 05:02+0000\n" +"POT-Creation-Date: 2024-09-12 05:02+0000\n" "PO-Revision-Date: 2023-10-30 17:48+0000\n" "Last-Translator: Jeremy Stretch, 2024\n" "Language-Team: Chinese (https://app.transifex.com/netbox-community/teams/178115/zh/)\n" @@ -37,16 +37,17 @@ msgstr "" msgid "Key" msgstr "令牌" -#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:133 +#: netbox/account/tables.py:31 netbox/users/forms/filtersets.py:132 msgid "Write Enabled" msgstr "可写" -#: netbox/account/tables.py:35 netbox/core/tables/jobs.py:29 -#: netbox/core/tables/tasks.py:79 netbox/extras/choices.py:142 -#: netbox/extras/tables/tables.py:506 netbox/templates/account/token.html:43 +#: netbox/account/tables.py:35 netbox/core/choices.py:86 +#: netbox/core/tables/jobs.py:29 netbox/core/tables/tasks.py:79 +#: netbox/extras/tables/tables.py:335 netbox/extras/tables/tables.py:566 +#: netbox/templates/account/token.html:43 #: netbox/templates/core/configrevision.html:26 #: netbox/templates/core/configrevision_restore.html:12 -#: netbox/templates/core/job.html:63 netbox/templates/core/rq_task.html:16 +#: netbox/templates/core/job.html:69 netbox/templates/core/rq_task.html:16 #: netbox/templates/core/rq_task.html:73 #: netbox/templates/core/rq_worker.html:14 #: netbox/templates/extras/htmx/script_result.html:12 @@ -58,11 +59,11 @@ msgstr "已创建" #: netbox/account/tables.py:39 netbox/templates/account/token.html:47 #: netbox/templates/users/token.html:39 netbox/users/forms/bulk_edit.py:117 -#: netbox/users/forms/filtersets.py:137 +#: netbox/users/forms/filtersets.py:136 msgid "Expires" msgstr "过期" -#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:142 +#: netbox/account/tables.py:42 netbox/users/forms/filtersets.py:141 msgid "Last Used" msgstr "最后使用" @@ -72,45 +73,45 @@ msgstr "最后使用" msgid "Allowed IPs" msgstr "允许的IP" -#: netbox/account/views.py:112 +#: netbox/account/views.py:114 #, python-brace-format msgid "Logged in as {user}." msgstr "以身份登录 {user}。" -#: netbox/account/views.py:162 +#: netbox/account/views.py:164 msgid "You have logged out." msgstr "您已注销。" -#: netbox/account/views.py:214 +#: netbox/account/views.py:216 msgid "Your preferences have been updated." msgstr "你的首选项已更新。" -#: netbox/account/views.py:237 +#: netbox/account/views.py:239 msgid "LDAP-authenticated user credentials cannot be changed within NetBox." msgstr "无法在 Netbox 中更改经过 LDAP 身份验证的用户凭据。" -#: netbox/account/views.py:252 +#: netbox/account/views.py:254 msgid "Your password has been changed successfully." msgstr "您的密码已成功更改。" #: netbox/circuits/choices.py:21 netbox/dcim/choices.py:20 -#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:174 -#: netbox/dcim/choices.py:220 netbox/dcim/choices.py:1461 -#: netbox/dcim/choices.py:1537 netbox/dcim/choices.py:1587 +#: netbox/dcim/choices.py:102 netbox/dcim/choices.py:185 +#: netbox/dcim/choices.py:231 netbox/dcim/choices.py:1518 +#: netbox/dcim/choices.py:1594 netbox/dcim/choices.py:1644 #: netbox/virtualization/choices.py:20 netbox/virtualization/choices.py:45 #: netbox/vpn/choices.py:18 msgid "Planned" msgstr "已规划" -#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:290 +#: netbox/circuits/choices.py:22 netbox/netbox/navigation/menu.py:305 msgid "Provisioning" msgstr "置备" #: netbox/circuits/choices.py:23 netbox/core/tables/tasks.py:22 #: netbox/dcim/choices.py:22 netbox/dcim/choices.py:103 -#: netbox/dcim/choices.py:173 netbox/dcim/choices.py:219 -#: netbox/dcim/choices.py:1536 netbox/dcim/choices.py:1586 -#: netbox/extras/tables/tables.py:392 netbox/ipam/choices.py:31 +#: netbox/dcim/choices.py:184 netbox/dcim/choices.py:230 +#: netbox/dcim/choices.py:1593 netbox/dcim/choices.py:1643 +#: netbox/extras/tables/tables.py:495 netbox/ipam/choices.py:31 #: netbox/ipam/choices.py:49 netbox/ipam/choices.py:69 #: netbox/ipam/choices.py:154 netbox/templates/extras/configcontext.html:25 #: netbox/templates/users/user.html:37 netbox/users/forms/bulk_edit.py:38 @@ -119,9 +120,9 @@ msgstr "置备" msgid "Active" msgstr "在线" -#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:172 -#: netbox/dcim/choices.py:218 netbox/dcim/choices.py:1535 -#: netbox/dcim/choices.py:1588 netbox/virtualization/choices.py:24 +#: netbox/circuits/choices.py:24 netbox/dcim/choices.py:183 +#: netbox/dcim/choices.py:229 netbox/dcim/choices.py:1592 +#: netbox/dcim/choices.py:1645 netbox/virtualization/choices.py:24 #: netbox/virtualization/choices.py:43 msgid "Offline" msgstr "离线" @@ -134,98 +135,116 @@ msgstr "预留" msgid "Decommissioned" msgstr "退役" -#: netbox/circuits/filtersets.py:29 netbox/circuits/filtersets.py:196 -#: netbox/dcim/filtersets.py:97 netbox/dcim/filtersets.py:151 -#: netbox/dcim/filtersets.py:211 netbox/dcim/filtersets.py:297 -#: netbox/dcim/filtersets.py:406 netbox/dcim/filtersets.py:969 -#: netbox/dcim/filtersets.py:1316 netbox/dcim/filtersets.py:1847 -#: netbox/dcim/filtersets.py:2090 netbox/dcim/filtersets.py:2148 -#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:945 +#: netbox/circuits/choices.py:90 netbox/dcim/choices.py:1605 +#: netbox/tenancy/choices.py:17 +msgid "Primary" +msgstr "主要联系人" + +#: netbox/circuits/choices.py:91 netbox/ipam/choices.py:90 +#: netbox/tenancy/choices.py:18 +msgid "Secondary" +msgstr "次要联系人" + +#: netbox/circuits/choices.py:92 netbox/tenancy/choices.py:19 +msgid "Tertiary" +msgstr "第三级联系人" + +#: netbox/circuits/choices.py:93 netbox/tenancy/choices.py:20 +msgid "Inactive" +msgstr "已失效" + +#: netbox/circuits/filtersets.py:31 netbox/circuits/filtersets.py:198 +#: netbox/dcim/filtersets.py:98 netbox/dcim/filtersets.py:152 +#: netbox/dcim/filtersets.py:212 netbox/dcim/filtersets.py:333 +#: netbox/dcim/filtersets.py:464 netbox/dcim/filtersets.py:1021 +#: netbox/dcim/filtersets.py:1368 netbox/dcim/filtersets.py:1903 +#: netbox/dcim/filtersets.py:2146 netbox/dcim/filtersets.py:2204 +#: netbox/ipam/filtersets.py:339 netbox/ipam/filtersets.py:959 #: netbox/virtualization/filtersets.py:45 -#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:377 +#: netbox/virtualization/filtersets.py:173 netbox/vpn/filtersets.py:369 msgid "Region (ID)" msgstr "区域(ID)" -#: netbox/circuits/filtersets.py:36 netbox/circuits/filtersets.py:203 -#: netbox/dcim/filtersets.py:104 netbox/dcim/filtersets.py:157 -#: netbox/dcim/filtersets.py:218 netbox/dcim/filtersets.py:304 -#: netbox/dcim/filtersets.py:413 netbox/dcim/filtersets.py:976 -#: netbox/dcim/filtersets.py:1323 netbox/dcim/filtersets.py:1854 -#: netbox/dcim/filtersets.py:2097 netbox/dcim/filtersets.py:2155 -#: netbox/extras/filtersets.py:461 netbox/ipam/filtersets.py:346 -#: netbox/ipam/filtersets.py:952 netbox/virtualization/filtersets.py:52 -#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:372 +#: netbox/circuits/filtersets.py:38 netbox/circuits/filtersets.py:205 +#: netbox/dcim/filtersets.py:105 netbox/dcim/filtersets.py:158 +#: netbox/dcim/filtersets.py:219 netbox/dcim/filtersets.py:340 +#: netbox/dcim/filtersets.py:471 netbox/dcim/filtersets.py:1028 +#: netbox/dcim/filtersets.py:1375 netbox/dcim/filtersets.py:1910 +#: netbox/dcim/filtersets.py:2153 netbox/dcim/filtersets.py:2211 +#: netbox/extras/filtersets.py:509 netbox/ipam/filtersets.py:346 +#: netbox/ipam/filtersets.py:966 netbox/virtualization/filtersets.py:52 +#: netbox/virtualization/filtersets.py:180 netbox/vpn/filtersets.py:364 msgid "Region (slug)" msgstr "地区(缩写)" -#: netbox/circuits/filtersets.py:42 netbox/circuits/filtersets.py:209 -#: netbox/dcim/filtersets.py:127 netbox/dcim/filtersets.py:224 -#: netbox/dcim/filtersets.py:310 netbox/dcim/filtersets.py:419 -#: netbox/dcim/filtersets.py:982 netbox/dcim/filtersets.py:1329 -#: netbox/dcim/filtersets.py:1860 netbox/dcim/filtersets.py:2103 -#: netbox/dcim/filtersets.py:2161 netbox/ipam/filtersets.py:352 -#: netbox/ipam/filtersets.py:958 netbox/virtualization/filtersets.py:58 +#: netbox/circuits/filtersets.py:44 netbox/circuits/filtersets.py:211 +#: netbox/dcim/filtersets.py:128 netbox/dcim/filtersets.py:225 +#: netbox/dcim/filtersets.py:346 netbox/dcim/filtersets.py:477 +#: netbox/dcim/filtersets.py:1034 netbox/dcim/filtersets.py:1381 +#: netbox/dcim/filtersets.py:1916 netbox/dcim/filtersets.py:2159 +#: netbox/dcim/filtersets.py:2217 netbox/ipam/filtersets.py:352 +#: netbox/ipam/filtersets.py:972 netbox/virtualization/filtersets.py:58 #: netbox/virtualization/filtersets.py:186 msgid "Site group (ID)" msgstr "站点组(ID)" -#: netbox/circuits/filtersets.py:49 netbox/circuits/filtersets.py:216 -#: netbox/dcim/filtersets.py:134 netbox/dcim/filtersets.py:231 -#: netbox/dcim/filtersets.py:317 netbox/dcim/filtersets.py:426 -#: netbox/dcim/filtersets.py:989 netbox/dcim/filtersets.py:1336 -#: netbox/dcim/filtersets.py:1867 netbox/dcim/filtersets.py:2110 -#: netbox/dcim/filtersets.py:2168 netbox/extras/filtersets.py:467 -#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:965 +#: netbox/circuits/filtersets.py:51 netbox/circuits/filtersets.py:218 +#: netbox/dcim/filtersets.py:135 netbox/dcim/filtersets.py:232 +#: netbox/dcim/filtersets.py:353 netbox/dcim/filtersets.py:484 +#: netbox/dcim/filtersets.py:1041 netbox/dcim/filtersets.py:1388 +#: netbox/dcim/filtersets.py:1923 netbox/dcim/filtersets.py:2166 +#: netbox/dcim/filtersets.py:2224 netbox/extras/filtersets.py:515 +#: netbox/ipam/filtersets.py:359 netbox/ipam/filtersets.py:979 #: netbox/virtualization/filtersets.py:65 #: netbox/virtualization/filtersets.py:193 msgid "Site group (slug)" msgstr "站点组(缩写)" -#: netbox/circuits/filtersets.py:54 netbox/circuits/forms/bulk_edit.py:186 -#: netbox/circuits/forms/bulk_edit.py:214 -#: netbox/circuits/forms/bulk_import.py:123 -#: netbox/circuits/forms/filtersets.py:49 -#: netbox/circuits/forms/filtersets.py:169 -#: netbox/circuits/forms/filtersets.py:207 -#: netbox/circuits/forms/model_forms.py:136 -#: netbox/circuits/forms/model_forms.py:152 -#: netbox/circuits/tables/circuits.py:107 netbox/dcim/forms/bulk_edit.py:167 -#: netbox/dcim/forms/bulk_edit.py:239 netbox/dcim/forms/bulk_edit.py:575 -#: netbox/dcim/forms/bulk_edit.py:771 netbox/dcim/forms/bulk_import.py:130 -#: netbox/dcim/forms/bulk_import.py:181 netbox/dcim/forms/bulk_import.py:254 -#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1250 -#: netbox/dcim/forms/bulk_import.py:1278 netbox/dcim/forms/filtersets.py:86 -#: netbox/dcim/forms/filtersets.py:224 netbox/dcim/forms/filtersets.py:275 -#: netbox/dcim/forms/filtersets.py:384 netbox/dcim/forms/filtersets.py:693 -#: netbox/dcim/forms/filtersets.py:937 netbox/dcim/forms/filtersets.py:961 -#: netbox/dcim/forms/filtersets.py:1051 netbox/dcim/forms/filtersets.py:1089 -#: netbox/dcim/forms/filtersets.py:1524 netbox/dcim/forms/filtersets.py:1548 -#: netbox/dcim/forms/filtersets.py:1572 netbox/dcim/forms/model_forms.py:136 -#: netbox/dcim/forms/model_forms.py:164 netbox/dcim/forms/model_forms.py:206 -#: netbox/dcim/forms/model_forms.py:406 netbox/dcim/forms/model_forms.py:671 +#: netbox/circuits/filtersets.py:56 netbox/circuits/forms/bulk_edit.py:188 +#: netbox/circuits/forms/bulk_edit.py:216 +#: netbox/circuits/forms/bulk_import.py:125 +#: netbox/circuits/forms/filtersets.py:51 +#: netbox/circuits/forms/filtersets.py:171 +#: netbox/circuits/forms/filtersets.py:209 +#: netbox/circuits/forms/model_forms.py:138 +#: netbox/circuits/forms/model_forms.py:154 +#: netbox/circuits/tables/circuits.py:113 netbox/dcim/forms/bulk_edit.py:168 +#: netbox/dcim/forms/bulk_edit.py:329 netbox/dcim/forms/bulk_edit.py:677 +#: netbox/dcim/forms/bulk_edit.py:873 netbox/dcim/forms/bulk_import.py:131 +#: netbox/dcim/forms/bulk_import.py:230 netbox/dcim/forms/bulk_import.py:309 +#: netbox/dcim/forms/bulk_import.py:540 netbox/dcim/forms/bulk_import.py:1311 +#: netbox/dcim/forms/bulk_import.py:1339 netbox/dcim/forms/filtersets.py:87 +#: netbox/dcim/forms/filtersets.py:225 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:753 +#: netbox/dcim/forms/filtersets.py:997 netbox/dcim/forms/filtersets.py:1021 +#: netbox/dcim/forms/filtersets.py:1111 netbox/dcim/forms/filtersets.py:1149 +#: netbox/dcim/forms/filtersets.py:1584 netbox/dcim/forms/filtersets.py:1608 +#: netbox/dcim/forms/filtersets.py:1632 netbox/dcim/forms/model_forms.py:137 +#: netbox/dcim/forms/model_forms.py:165 netbox/dcim/forms/model_forms.py:238 +#: netbox/dcim/forms/model_forms.py:463 netbox/dcim/forms/model_forms.py:723 #: netbox/dcim/forms/object_create.py:391 netbox/dcim/tables/devices.py:153 #: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93 -#: netbox/dcim/tables/racks.py:62 netbox/dcim/tables/racks.py:138 -#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:477 -#: netbox/ipam/forms/bulk_edit.py:216 netbox/ipam/forms/bulk_edit.py:283 -#: netbox/ipam/forms/bulk_edit.py:462 netbox/ipam/forms/bulk_edit.py:536 -#: netbox/ipam/forms/bulk_import.py:170 netbox/ipam/forms/bulk_import.py:437 +#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207 +#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525 +#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284 +#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529 +#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429 #: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231 -#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:496 -#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:633 -#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:114 -#: netbox/ipam/tables/vlans.py:217 +#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489 +#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636 +#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118 +#: netbox/ipam/tables/vlans.py:221 #: netbox/templates/circuits/inc/circuit_termination_fields.html:6 #: netbox/templates/dcim/device.html:22 #: netbox/templates/dcim/inc/cable_termination.html:8 #: netbox/templates/dcim/inc/cable_termination.html:33 #: netbox/templates/dcim/location.html:37 -#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:22 +#: netbox/templates/dcim/powerpanel.html:22 netbox/templates/dcim/rack.html:20 #: netbox/templates/dcim/rackreservation.html:28 #: netbox/templates/dcim/site.html:28 netbox/templates/ipam/prefix.html:56 #: netbox/templates/ipam/vlan.html:23 netbox/templates/ipam/vlan_edit.html:40 #: netbox/templates/virtualization/cluster.html:42 -#: netbox/templates/virtualization/virtualmachine.html:91 +#: netbox/templates/virtualization/virtualmachine.html:95 #: netbox/virtualization/forms/bulk_edit.py:91 #: netbox/virtualization/forms/bulk_edit.py:109 #: netbox/virtualization/forms/bulk_edit.py:124 @@ -237,172 +256,197 @@ msgstr "站点组(缩写)" #: netbox/virtualization/forms/model_forms.py:104 #: netbox/virtualization/forms/model_forms.py:171 #: netbox/virtualization/tables/clusters.py:77 -#: netbox/virtualization/tables/virtualmachines.py:62 +#: netbox/virtualization/tables/virtualmachines.py:63 #: netbox/vpn/forms/filtersets.py:266 netbox/wireless/forms/model_forms.py:76 #: netbox/wireless/forms/model_forms.py:118 msgid "Site" msgstr "站点" -#: netbox/circuits/filtersets.py:60 netbox/circuits/filtersets.py:227 -#: netbox/circuits/filtersets.py:272 netbox/dcim/filtersets.py:241 -#: netbox/dcim/filtersets.py:327 netbox/dcim/filtersets.py:400 -#: netbox/extras/filtersets.py:483 netbox/ipam/filtersets.py:238 -#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:975 +#: netbox/circuits/filtersets.py:62 netbox/circuits/filtersets.py:229 +#: netbox/circuits/filtersets.py:274 netbox/dcim/filtersets.py:242 +#: netbox/dcim/filtersets.py:363 netbox/dcim/filtersets.py:458 +#: netbox/extras/filtersets.py:531 netbox/ipam/filtersets.py:238 +#: netbox/ipam/filtersets.py:369 netbox/ipam/filtersets.py:989 #: netbox/virtualization/filtersets.py:75 -#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:382 +#: netbox/virtualization/filtersets.py:203 netbox/vpn/filtersets.py:374 msgid "Site (slug)" msgstr "站点(缩写)" -#: netbox/circuits/filtersets.py:65 +#: netbox/circuits/filtersets.py:67 msgid "ASN (ID)" msgstr "ASN(ID)" -#: netbox/circuits/filtersets.py:71 netbox/circuits/forms/filtersets.py:29 +#: netbox/circuits/filtersets.py:73 netbox/circuits/forms/filtersets.py:31 #: netbox/ipam/forms/model_forms.py:159 netbox/ipam/models/asns.py:108 #: netbox/ipam/models/asns.py:125 netbox/ipam/tables/asn.py:41 #: netbox/templates/ipam/asn.html:20 msgid "ASN" msgstr "自治系统编号/AS编号" -#: netbox/circuits/filtersets.py:93 netbox/circuits/filtersets.py:120 -#: netbox/circuits/filtersets.py:154 netbox/circuits/filtersets.py:281 -#: netbox/ipam/filtersets.py:243 +#: netbox/circuits/filtersets.py:95 netbox/circuits/filtersets.py:122 +#: netbox/circuits/filtersets.py:156 netbox/circuits/filtersets.py:283 +#: netbox/circuits/filtersets.py:325 netbox/ipam/filtersets.py:243 msgid "Provider (ID)" msgstr "运营商(ID)" -#: netbox/circuits/filtersets.py:99 netbox/circuits/filtersets.py:126 -#: netbox/circuits/filtersets.py:160 netbox/circuits/filtersets.py:287 -#: netbox/ipam/filtersets.py:249 +#: netbox/circuits/filtersets.py:101 netbox/circuits/filtersets.py:128 +#: netbox/circuits/filtersets.py:162 netbox/circuits/filtersets.py:289 +#: netbox/circuits/filtersets.py:331 netbox/ipam/filtersets.py:249 msgid "Provider (slug)" msgstr "运营商(缩写)" -#: netbox/circuits/filtersets.py:165 +#: netbox/circuits/filtersets.py:167 msgid "Provider account (ID)" msgstr "运营商帐户(ID)" -#: netbox/circuits/filtersets.py:171 +#: netbox/circuits/filtersets.py:173 msgid "Provider account (account)" msgstr "供应商(账户)" -#: netbox/circuits/filtersets.py:176 +#: netbox/circuits/filtersets.py:178 msgid "Provider network (ID)" msgstr "运营商网络(ID)" -#: netbox/circuits/filtersets.py:180 +#: netbox/circuits/filtersets.py:182 msgid "Circuit type (ID)" msgstr "线路类型 (ID)" -#: netbox/circuits/filtersets.py:186 +#: netbox/circuits/filtersets.py:188 msgid "Circuit type (slug)" msgstr "线路类型(缩写)" -#: netbox/circuits/filtersets.py:221 netbox/circuits/filtersets.py:266 -#: netbox/dcim/filtersets.py:235 netbox/dcim/filtersets.py:321 -#: netbox/dcim/filtersets.py:394 netbox/dcim/filtersets.py:993 -#: netbox/dcim/filtersets.py:1341 netbox/dcim/filtersets.py:1872 -#: netbox/dcim/filtersets.py:2114 netbox/dcim/filtersets.py:2173 +#: netbox/circuits/filtersets.py:223 netbox/circuits/filtersets.py:268 +#: netbox/dcim/filtersets.py:236 netbox/dcim/filtersets.py:357 +#: netbox/dcim/filtersets.py:452 netbox/dcim/filtersets.py:1045 +#: netbox/dcim/filtersets.py:1393 netbox/dcim/filtersets.py:1928 +#: netbox/dcim/filtersets.py:2170 netbox/dcim/filtersets.py:2229 #: netbox/ipam/filtersets.py:232 netbox/ipam/filtersets.py:363 -#: netbox/ipam/filtersets.py:969 netbox/virtualization/filtersets.py:69 -#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:387 +#: netbox/ipam/filtersets.py:983 netbox/virtualization/filtersets.py:69 +#: netbox/virtualization/filtersets.py:197 netbox/vpn/filtersets.py:379 msgid "Site (ID)" msgstr "站点(ID)" -#: netbox/circuits/filtersets.py:231 netbox/circuits/filtersets.py:235 +#: netbox/circuits/filtersets.py:233 netbox/circuits/filtersets.py:237 msgid "Termination A (ID)" msgstr "接入点A (ID)" -#: netbox/circuits/filtersets.py:258 netbox/core/filtersets.py:73 -#: netbox/core/filtersets.py:132 netbox/dcim/filtersets.py:693 -#: netbox/dcim/filtersets.py:1310 netbox/dcim/filtersets.py:2221 +#: netbox/circuits/filtersets.py:260 netbox/circuits/filtersets.py:320 +#: netbox/core/filtersets.py:77 netbox/core/filtersets.py:136 +#: netbox/core/filtersets.py:173 netbox/dcim/filtersets.py:751 +#: netbox/dcim/filtersets.py:1362 netbox/dcim/filtersets.py:2277 #: netbox/extras/filtersets.py:41 netbox/extras/filtersets.py:63 -#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:127 -#: netbox/extras/filtersets.py:176 netbox/extras/filtersets.py:204 -#: netbox/extras/filtersets.py:234 netbox/extras/filtersets.py:271 -#: netbox/extras/filtersets.py:343 netbox/extras/filtersets.py:390 -#: netbox/extras/filtersets.py:450 netbox/extras/filtersets.py:613 -#: netbox/extras/filtersets.py:655 netbox/extras/filtersets.py:696 -#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:275 +#: netbox/extras/filtersets.py:92 netbox/extras/filtersets.py:132 +#: netbox/extras/filtersets.py:181 netbox/extras/filtersets.py:209 +#: netbox/extras/filtersets.py:239 netbox/extras/filtersets.py:276 +#: netbox/extras/filtersets.py:348 netbox/extras/filtersets.py:391 +#: netbox/extras/filtersets.py:438 netbox/extras/filtersets.py:498 +#: netbox/extras/filtersets.py:657 netbox/extras/filtersets.py:703 +#: netbox/ipam/forms/model_forms.py:449 netbox/netbox/filtersets.py:277 #: netbox/netbox/forms/__init__.py:22 netbox/netbox/forms/base.py:167 #: netbox/templates/htmx/object_selector.html:28 #: netbox/templates/inc/filter_list.html:45 #: netbox/templates/ipam/ipaddress_assign.html:29 #: netbox/templates/search.html:7 netbox/templates/search.html:26 #: netbox/tenancy/filtersets.py:100 netbox/users/filtersets.py:23 -#: netbox/users/filtersets.py:52 netbox/users/filtersets.py:92 -#: netbox/users/filtersets.py:140 netbox/utilities/forms/forms.py:104 +#: netbox/users/filtersets.py:57 netbox/users/filtersets.py:102 +#: netbox/users/filtersets.py:150 netbox/utilities/forms/forms.py:104 #: netbox/utilities/templates/navigation/menu.html:16 msgid "Search" msgstr "搜索" -#: netbox/circuits/filtersets.py:262 netbox/circuits/forms/bulk_edit.py:170 -#: netbox/circuits/forms/bulk_import.py:114 -#: netbox/circuits/forms/filtersets.py:196 -#: netbox/circuits/forms/filtersets.py:212 -#: netbox/circuits/forms/model_forms.py:109 -#: netbox/circuits/forms/model_forms.py:131 -#: netbox/circuits/tables/circuits.py:98 netbox/dcim/forms/connections.py:73 +#: netbox/circuits/filtersets.py:264 netbox/circuits/forms/bulk_edit.py:172 +#: netbox/circuits/forms/bulk_edit.py:246 +#: netbox/circuits/forms/bulk_import.py:116 +#: netbox/circuits/forms/filtersets.py:198 +#: netbox/circuits/forms/filtersets.py:214 +#: netbox/circuits/forms/filtersets.py:260 +#: netbox/circuits/forms/model_forms.py:111 +#: netbox/circuits/forms/model_forms.py:133 +#: netbox/circuits/forms/model_forms.py:199 +#: netbox/circuits/tables/circuits.py:104 +#: netbox/circuits/tables/circuits.py:164 netbox/dcim/forms/connections.py:73 #: netbox/templates/circuits/circuit.html:15 +#: netbox/templates/circuits/circuitgroupassignment.html:26 #: netbox/templates/circuits/circuittermination.html:19 #: netbox/templates/dcim/inc/cable_termination.html:55 #: netbox/templates/dcim/trace/circuit.html:4 msgid "Circuit" msgstr "线路" -#: netbox/circuits/filtersets.py:276 +#: netbox/circuits/filtersets.py:278 msgid "ProviderNetwork (ID)" msgstr "运营商网络 (ID)" -#: netbox/circuits/forms/bulk_edit.py:28 -#: netbox/circuits/forms/filtersets.py:54 -#: netbox/circuits/forms/model_forms.py:27 -#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:127 -#: netbox/dcim/forms/filtersets.py:194 netbox/dcim/forms/model_forms.py:122 +#: netbox/circuits/filtersets.py:335 +msgid "Circuit (ID)" +msgstr "电路 (ID)" + +#: netbox/circuits/filtersets.py:341 +msgid "Circuit (CID)" +msgstr "电路 (CID)" + +#: netbox/circuits/filtersets.py:345 +msgid "Circuit group (ID)" +msgstr "电路组 (ID)" + +#: netbox/circuits/filtersets.py:351 +msgid "Circuit group (slug)" +msgstr "电路组(slug)" + +#: netbox/circuits/forms/bulk_edit.py:30 +#: netbox/circuits/forms/filtersets.py:56 +#: netbox/circuits/forms/model_forms.py:29 +#: netbox/circuits/tables/providers.py:33 netbox/dcim/forms/bulk_edit.py:128 +#: netbox/dcim/forms/filtersets.py:195 netbox/dcim/forms/model_forms.py:123 #: netbox/dcim/tables/sites.py:94 netbox/ipam/models/asns.py:126 #: netbox/ipam/tables/asn.py:27 netbox/ipam/views.py:213 -#: netbox/netbox/navigation/menu.py:159 netbox/netbox/navigation/menu.py:162 +#: netbox/netbox/navigation/menu.py:172 netbox/netbox/navigation/menu.py:175 #: netbox/templates/circuits/provider.html:23 msgid "ASNs" msgstr "自治系统编号/AS编号" -#: netbox/circuits/forms/bulk_edit.py:32 netbox/circuits/forms/bulk_edit.py:54 -#: netbox/circuits/forms/bulk_edit.py:81 -#: netbox/circuits/forms/bulk_edit.py:102 -#: netbox/circuits/forms/bulk_edit.py:162 -#: netbox/circuits/forms/bulk_edit.py:181 netbox/core/forms/bulk_edit.py:28 -#: netbox/core/tables/plugins.py:29 netbox/dcim/forms/bulk_create.py:35 -#: netbox/dcim/forms/bulk_edit.py:72 netbox/dcim/forms/bulk_edit.py:91 -#: netbox/dcim/forms/bulk_edit.py:150 netbox/dcim/forms/bulk_edit.py:191 -#: netbox/dcim/forms/bulk_edit.py:209 netbox/dcim/forms/bulk_edit.py:337 -#: netbox/dcim/forms/bulk_edit.py:373 netbox/dcim/forms/bulk_edit.py:388 -#: netbox/dcim/forms/bulk_edit.py:447 netbox/dcim/forms/bulk_edit.py:486 -#: netbox/dcim/forms/bulk_edit.py:516 netbox/dcim/forms/bulk_edit.py:540 -#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:665 -#: netbox/dcim/forms/bulk_edit.py:717 netbox/dcim/forms/bulk_edit.py:740 -#: netbox/dcim/forms/bulk_edit.py:788 netbox/dcim/forms/bulk_edit.py:858 -#: netbox/dcim/forms/bulk_edit.py:911 netbox/dcim/forms/bulk_edit.py:946 -#: netbox/dcim/forms/bulk_edit.py:986 netbox/dcim/forms/bulk_edit.py:1030 -#: netbox/dcim/forms/bulk_edit.py:1075 netbox/dcim/forms/bulk_edit.py:1102 -#: netbox/dcim/forms/bulk_edit.py:1120 netbox/dcim/forms/bulk_edit.py:1138 -#: netbox/dcim/forms/bulk_edit.py:1156 netbox/dcim/forms/bulk_edit.py:1580 -#: netbox/extras/forms/bulk_edit.py:36 netbox/extras/forms/bulk_edit.py:124 -#: netbox/extras/forms/bulk_edit.py:153 netbox/extras/forms/bulk_edit.py:183 -#: netbox/extras/forms/bulk_edit.py:264 netbox/extras/forms/bulk_edit.py:288 -#: netbox/extras/forms/bulk_edit.py:302 netbox/extras/tables/tables.py:60 -#: netbox/ipam/forms/bulk_edit.py:51 netbox/ipam/forms/bulk_edit.py:71 -#: netbox/ipam/forms/bulk_edit.py:91 netbox/ipam/forms/bulk_edit.py:115 -#: netbox/ipam/forms/bulk_edit.py:144 netbox/ipam/forms/bulk_edit.py:173 -#: netbox/ipam/forms/bulk_edit.py:192 netbox/ipam/forms/bulk_edit.py:274 -#: netbox/ipam/forms/bulk_edit.py:319 netbox/ipam/forms/bulk_edit.py:367 -#: netbox/ipam/forms/bulk_edit.py:410 netbox/ipam/forms/bulk_edit.py:438 -#: netbox/ipam/forms/bulk_edit.py:568 netbox/ipam/forms/bulk_edit.py:599 +#: netbox/circuits/forms/bulk_edit.py:34 netbox/circuits/forms/bulk_edit.py:56 +#: netbox/circuits/forms/bulk_edit.py:83 +#: netbox/circuits/forms/bulk_edit.py:104 +#: netbox/circuits/forms/bulk_edit.py:164 +#: netbox/circuits/forms/bulk_edit.py:183 +#: netbox/circuits/forms/bulk_edit.py:228 netbox/core/forms/bulk_edit.py:28 +#: netbox/dcim/forms/bulk_create.py:35 netbox/dcim/forms/bulk_edit.py:73 +#: netbox/dcim/forms/bulk_edit.py:92 netbox/dcim/forms/bulk_edit.py:151 +#: netbox/dcim/forms/bulk_edit.py:192 netbox/dcim/forms/bulk_edit.py:210 +#: netbox/dcim/forms/bulk_edit.py:288 netbox/dcim/forms/bulk_edit.py:432 +#: netbox/dcim/forms/bulk_edit.py:466 netbox/dcim/forms/bulk_edit.py:481 +#: netbox/dcim/forms/bulk_edit.py:540 netbox/dcim/forms/bulk_edit.py:584 +#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_edit.py:642 +#: netbox/dcim/forms/bulk_edit.py:715 netbox/dcim/forms/bulk_edit.py:767 +#: netbox/dcim/forms/bulk_edit.py:819 netbox/dcim/forms/bulk_edit.py:842 +#: netbox/dcim/forms/bulk_edit.py:890 netbox/dcim/forms/bulk_edit.py:960 +#: netbox/dcim/forms/bulk_edit.py:1013 netbox/dcim/forms/bulk_edit.py:1048 +#: netbox/dcim/forms/bulk_edit.py:1088 netbox/dcim/forms/bulk_edit.py:1132 +#: netbox/dcim/forms/bulk_edit.py:1177 netbox/dcim/forms/bulk_edit.py:1204 +#: netbox/dcim/forms/bulk_edit.py:1222 netbox/dcim/forms/bulk_edit.py:1240 +#: netbox/dcim/forms/bulk_edit.py:1258 netbox/dcim/forms/bulk_edit.py:1682 +#: netbox/extras/forms/bulk_edit.py:39 netbox/extras/forms/bulk_edit.py:149 +#: netbox/extras/forms/bulk_edit.py:178 netbox/extras/forms/bulk_edit.py:208 +#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274 +#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312 +#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79 +#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72 +#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116 +#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174 +#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275 +#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368 +#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427 +#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592 #: netbox/templates/account/token.html:35 #: netbox/templates/circuits/circuit.html:59 +#: netbox/templates/circuits/circuitgroup.html:32 #: netbox/templates/circuits/circuittype.html:26 #: netbox/templates/circuits/inc/circuit_termination_fields.html:88 #: netbox/templates/circuits/provider.html:33 #: netbox/templates/circuits/providernetwork.html:32 #: netbox/templates/core/datasource.html:54 -#: netbox/templates/dcim/cable.html:36 +#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36 #: netbox/templates/dcim/consoleport.html:44 #: netbox/templates/dcim/consoleserverport.html:44 #: netbox/templates/dcim/device.html:94 @@ -415,16 +459,17 @@ msgstr "自治系统编号/AS编号" #: netbox/templates/dcim/inventoryitemrole.html:22 #: netbox/templates/dcim/location.html:33 #: netbox/templates/dcim/manufacturer.html:40 -#: netbox/templates/dcim/module.html:70 -#: netbox/templates/dcim/modulebay.html:38 +#: netbox/templates/dcim/module.html:73 +#: netbox/templates/dcim/modulebay.html:42 #: netbox/templates/dcim/moduletype.html:26 #: netbox/templates/dcim/platform.html:33 #: netbox/templates/dcim/powerfeed.html:40 #: netbox/templates/dcim/poweroutlet.html:40 #: netbox/templates/dcim/powerpanel.html:30 -#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:51 +#: netbox/templates/dcim/powerport.html:40 netbox/templates/dcim/rack.html:53 #: netbox/templates/dcim/rackreservation.html:62 #: netbox/templates/dcim/rackrole.html:26 +#: netbox/templates/dcim/racktype.html:24 #: netbox/templates/dcim/rearport.html:54 netbox/templates/dcim/region.html:33 #: netbox/templates/dcim/site.html:60 netbox/templates/dcim/sitegroup.html:33 #: netbox/templates/dcim/virtualchassis.html:31 @@ -434,8 +479,9 @@ msgstr "自治系统编号/AS编号" #: netbox/templates/extras/dashboard/widget_add.html:14 #: netbox/templates/extras/eventrule.html:21 #: netbox/templates/extras/exporttemplate.html:19 +#: netbox/templates/extras/notificationgroup.html:20 #: netbox/templates/extras/savedfilter.html:17 -#: netbox/templates/extras/script_list.html:47 +#: netbox/templates/extras/script_list.html:45 #: netbox/templates/extras/tag.html:20 netbox/templates/extras/webhook.html:17 #: netbox/templates/generic/bulk_import.html:120 #: netbox/templates/ipam/aggregate.html:43 netbox/templates/ipam/asn.html:42 @@ -488,26 +534,28 @@ msgstr "自治系统编号/AS编号" #: netbox/vpn/forms/bulk_edit.py:190 netbox/vpn/forms/bulk_edit.py:215 #: netbox/vpn/forms/bulk_edit.py:247 netbox/vpn/forms/bulk_edit.py:274 #: netbox/wireless/forms/bulk_edit.py:29 netbox/wireless/forms/bulk_edit.py:82 -#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/bulk_edit.py:140 msgid "Description" msgstr "描述" -#: netbox/circuits/forms/bulk_edit.py:49 netbox/circuits/forms/bulk_edit.py:71 -#: netbox/circuits/forms/bulk_edit.py:121 -#: netbox/circuits/forms/bulk_import.py:35 -#: netbox/circuits/forms/bulk_import.py:50 -#: netbox/circuits/forms/bulk_import.py:73 -#: netbox/circuits/forms/filtersets.py:68 -#: netbox/circuits/forms/filtersets.py:86 -#: netbox/circuits/forms/filtersets.py:114 -#: netbox/circuits/forms/filtersets.py:129 -#: netbox/circuits/forms/filtersets.py:197 -#: netbox/circuits/forms/filtersets.py:230 -#: netbox/circuits/forms/model_forms.py:45 -#: netbox/circuits/forms/model_forms.py:59 -#: netbox/circuits/forms/model_forms.py:91 -#: netbox/circuits/tables/circuits.py:56 -#: netbox/circuits/tables/circuits.py:102 +#: netbox/circuits/forms/bulk_edit.py:51 netbox/circuits/forms/bulk_edit.py:73 +#: netbox/circuits/forms/bulk_edit.py:123 +#: netbox/circuits/forms/bulk_import.py:37 +#: netbox/circuits/forms/bulk_import.py:52 +#: netbox/circuits/forms/bulk_import.py:75 +#: netbox/circuits/forms/filtersets.py:70 +#: netbox/circuits/forms/filtersets.py:88 +#: netbox/circuits/forms/filtersets.py:116 +#: netbox/circuits/forms/filtersets.py:131 +#: netbox/circuits/forms/filtersets.py:199 +#: netbox/circuits/forms/filtersets.py:232 +#: netbox/circuits/forms/filtersets.py:255 +#: netbox/circuits/forms/model_forms.py:47 +#: netbox/circuits/forms/model_forms.py:61 +#: netbox/circuits/forms/model_forms.py:93 +#: netbox/circuits/tables/circuits.py:58 +#: netbox/circuits/tables/circuits.py:108 +#: netbox/circuits/tables/circuits.py:160 #: netbox/circuits/tables/providers.py:72 #: netbox/circuits/tables/providers.py:103 #: netbox/templates/circuits/circuit.html:18 @@ -519,22 +567,22 @@ msgstr "描述" msgid "Provider" msgstr "运营商" -#: netbox/circuits/forms/bulk_edit.py:78 -#: netbox/circuits/forms/filtersets.py:89 +#: netbox/circuits/forms/bulk_edit.py:80 +#: netbox/circuits/forms/filtersets.py:91 #: netbox/templates/circuits/providernetwork.html:28 msgid "Service ID" msgstr "服务ID" -#: netbox/circuits/forms/bulk_edit.py:98 -#: netbox/circuits/forms/filtersets.py:105 netbox/dcim/forms/bulk_edit.py:205 -#: netbox/dcim/forms/bulk_edit.py:502 netbox/dcim/forms/bulk_edit.py:702 -#: netbox/dcim/forms/bulk_edit.py:1071 netbox/dcim/forms/bulk_edit.py:1098 -#: netbox/dcim/forms/bulk_edit.py:1576 netbox/dcim/forms/filtersets.py:1004 -#: netbox/dcim/forms/filtersets.py:1395 netbox/dcim/forms/filtersets.py:1419 -#: netbox/dcim/tables/devices.py:697 netbox/dcim/tables/devices.py:754 -#: netbox/dcim/tables/devices.py:979 netbox/dcim/tables/devicetypes.py:250 -#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:32 -#: netbox/extras/forms/bulk_edit.py:260 netbox/extras/tables/tables.py:340 +#: netbox/circuits/forms/bulk_edit.py:100 +#: netbox/circuits/forms/filtersets.py:107 netbox/dcim/forms/bulk_edit.py:206 +#: netbox/dcim/forms/bulk_edit.py:604 netbox/dcim/forms/bulk_edit.py:804 +#: netbox/dcim/forms/bulk_edit.py:1173 netbox/dcim/forms/bulk_edit.py:1200 +#: netbox/dcim/forms/bulk_edit.py:1678 netbox/dcim/forms/filtersets.py:1064 +#: netbox/dcim/forms/filtersets.py:1455 netbox/dcim/forms/filtersets.py:1479 +#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devices.py:757 +#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devicetypes.py:250 +#: netbox/dcim/tables/devicetypes.py:265 netbox/dcim/tables/racks.py:33 +#: netbox/extras/forms/bulk_edit.py:270 netbox/extras/tables/tables.py:443 #: netbox/templates/circuits/circuittype.html:30 #: netbox/templates/dcim/cable.html:40 #: netbox/templates/dcim/devicerole.html:34 @@ -545,33 +593,33 @@ msgstr "服务ID" msgid "Color" msgstr "颜色" -#: netbox/circuits/forms/bulk_edit.py:116 -#: netbox/circuits/forms/bulk_import.py:86 -#: netbox/circuits/forms/filtersets.py:124 netbox/core/forms/bulk_edit.py:18 -#: netbox/core/forms/filtersets.py:30 netbox/core/tables/data.py:20 -#: netbox/core/tables/jobs.py:18 netbox/dcim/forms/bulk_edit.py:282 -#: netbox/dcim/forms/bulk_edit.py:680 netbox/dcim/forms/bulk_edit.py:819 -#: netbox/dcim/forms/bulk_edit.py:887 netbox/dcim/forms/bulk_edit.py:906 -#: netbox/dcim/forms/bulk_edit.py:929 netbox/dcim/forms/bulk_edit.py:971 -#: netbox/dcim/forms/bulk_edit.py:1015 netbox/dcim/forms/bulk_edit.py:1066 -#: netbox/dcim/forms/bulk_edit.py:1093 netbox/dcim/forms/bulk_import.py:211 -#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/bulk_import.py:673 -#: netbox/dcim/forms/bulk_import.py:699 netbox/dcim/forms/bulk_import.py:719 -#: netbox/dcim/forms/bulk_import.py:802 netbox/dcim/forms/bulk_import.py:896 -#: netbox/dcim/forms/bulk_import.py:938 netbox/dcim/forms/bulk_import.py:1152 -#: netbox/dcim/forms/bulk_import.py:1315 netbox/dcim/forms/filtersets.py:297 -#: netbox/dcim/forms/filtersets.py:895 netbox/dcim/forms/filtersets.py:994 -#: netbox/dcim/forms/filtersets.py:1115 netbox/dcim/forms/filtersets.py:1187 -#: netbox/dcim/forms/filtersets.py:1212 netbox/dcim/forms/filtersets.py:1236 -#: netbox/dcim/forms/filtersets.py:1256 netbox/dcim/forms/filtersets.py:1293 -#: netbox/dcim/forms/filtersets.py:1390 netbox/dcim/forms/filtersets.py:1414 -#: netbox/dcim/forms/model_forms.py:646 netbox/dcim/forms/model_forms.py:652 +#: netbox/circuits/forms/bulk_edit.py:118 +#: netbox/circuits/forms/bulk_import.py:88 +#: netbox/circuits/forms/filtersets.py:126 netbox/core/forms/bulk_edit.py:18 +#: netbox/core/forms/filtersets.py:33 netbox/core/tables/change_logging.py:32 +#: netbox/core/tables/data.py:20 netbox/core/tables/jobs.py:18 +#: netbox/dcim/forms/bulk_edit.py:782 netbox/dcim/forms/bulk_edit.py:921 +#: netbox/dcim/forms/bulk_edit.py:989 netbox/dcim/forms/bulk_edit.py:1008 +#: netbox/dcim/forms/bulk_edit.py:1031 netbox/dcim/forms/bulk_edit.py:1073 +#: netbox/dcim/forms/bulk_edit.py:1117 netbox/dcim/forms/bulk_edit.py:1168 +#: netbox/dcim/forms/bulk_edit.py:1195 netbox/dcim/forms/bulk_import.py:188 +#: netbox/dcim/forms/bulk_import.py:260 netbox/dcim/forms/bulk_import.py:708 +#: netbox/dcim/forms/bulk_import.py:734 netbox/dcim/forms/bulk_import.py:760 +#: netbox/dcim/forms/bulk_import.py:780 netbox/dcim/forms/bulk_import.py:863 +#: netbox/dcim/forms/bulk_import.py:957 netbox/dcim/forms/bulk_import.py:999 +#: netbox/dcim/forms/bulk_import.py:1213 netbox/dcim/forms/bulk_import.py:1376 +#: netbox/dcim/forms/filtersets.py:955 netbox/dcim/forms/filtersets.py:1054 +#: netbox/dcim/forms/filtersets.py:1175 netbox/dcim/forms/filtersets.py:1247 +#: netbox/dcim/forms/filtersets.py:1272 netbox/dcim/forms/filtersets.py:1296 +#: netbox/dcim/forms/filtersets.py:1316 netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1450 netbox/dcim/forms/filtersets.py:1474 +#: netbox/dcim/forms/model_forms.py:703 netbox/dcim/forms/model_forms.py:709 #: netbox/dcim/forms/object_import.py:84 #: netbox/dcim/forms/object_import.py:113 #: netbox/dcim/forms/object_import.py:145 netbox/dcim/tables/devices.py:178 -#: netbox/dcim/tables/devices.py:807 netbox/dcim/tables/power.py:77 -#: netbox/extras/forms/bulk_import.py:39 netbox/extras/tables/tables.py:290 -#: netbox/extras/tables/tables.py:362 netbox/extras/tables/tables.py:480 +#: netbox/dcim/tables/devices.py:810 netbox/dcim/tables/power.py:77 +#: netbox/dcim/tables/racks.py:138 netbox/extras/forms/bulk_import.py:42 +#: netbox/extras/tables/tables.py:405 netbox/extras/tables/tables.py:465 #: netbox/netbox/tables/tables.py:240 #: netbox/templates/circuits/circuit.html:30 #: netbox/templates/core/datasource.html:38 @@ -584,9 +632,9 @@ msgstr "颜色" #: netbox/templates/dcim/interface.html:311 #: netbox/templates/dcim/powerfeed.html:32 #: netbox/templates/dcim/poweroutlet.html:36 -#: netbox/templates/dcim/powerport.html:36 netbox/templates/dcim/rack.html:76 +#: netbox/templates/dcim/powerport.html:36 #: netbox/templates/dcim/rearport.html:36 -#: netbox/templates/extras/eventrule.html:80 +#: netbox/templates/extras/eventrule.html:74 #: netbox/templates/virtualization/cluster.html:17 #: netbox/templates/vpn/l2vpn.html:22 #: netbox/templates/wireless/inc/authentication_attrs.html:8 @@ -602,52 +650,52 @@ msgstr "颜色" msgid "Type" msgstr "类型" -#: netbox/circuits/forms/bulk_edit.py:126 -#: netbox/circuits/forms/bulk_import.py:79 -#: netbox/circuits/forms/filtersets.py:137 -#: netbox/circuits/forms/model_forms.py:96 +#: netbox/circuits/forms/bulk_edit.py:128 +#: netbox/circuits/forms/bulk_import.py:81 +#: netbox/circuits/forms/filtersets.py:139 +#: netbox/circuits/forms/model_forms.py:98 msgid "Provider account" msgstr "运营商账户" -#: netbox/circuits/forms/bulk_edit.py:134 -#: netbox/circuits/forms/bulk_import.py:92 -#: netbox/circuits/forms/filtersets.py:148 netbox/core/forms/filtersets.py:35 -#: netbox/core/forms/filtersets.py:76 netbox/core/tables/data.py:23 +#: netbox/circuits/forms/bulk_edit.py:136 +#: netbox/circuits/forms/bulk_import.py:94 +#: netbox/circuits/forms/filtersets.py:150 netbox/core/forms/filtersets.py:38 +#: netbox/core/forms/filtersets.py:79 netbox/core/tables/data.py:23 #: netbox/core/tables/jobs.py:26 netbox/core/tables/tasks.py:88 -#: netbox/dcim/forms/bulk_edit.py:105 netbox/dcim/forms/bulk_edit.py:180 -#: netbox/dcim/forms/bulk_edit.py:261 netbox/dcim/forms/bulk_edit.py:598 -#: netbox/dcim/forms/bulk_edit.py:654 netbox/dcim/forms/bulk_edit.py:686 -#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_edit.py:1599 -#: netbox/dcim/forms/bulk_import.py:87 netbox/dcim/forms/bulk_import.py:146 -#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:444 -#: netbox/dcim/forms/bulk_import.py:598 netbox/dcim/forms/bulk_import.py:1146 -#: netbox/dcim/forms/bulk_import.py:1310 netbox/dcim/forms/bulk_import.py:1374 -#: netbox/dcim/forms/filtersets.py:177 netbox/dcim/forms/filtersets.py:236 -#: netbox/dcim/forms/filtersets.py:292 netbox/dcim/forms/filtersets.py:739 -#: netbox/dcim/forms/filtersets.py:864 netbox/dcim/forms/filtersets.py:898 -#: netbox/dcim/forms/filtersets.py:999 netbox/dcim/forms/filtersets.py:1110 -#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:810 -#: netbox/dcim/tables/devices.py:1039 netbox/dcim/tables/modules.py:69 -#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:66 +#: netbox/dcim/forms/bulk_edit.py:106 netbox/dcim/forms/bulk_edit.py:181 +#: netbox/dcim/forms/bulk_edit.py:351 netbox/dcim/forms/bulk_edit.py:700 +#: netbox/dcim/forms/bulk_edit.py:756 netbox/dcim/forms/bulk_edit.py:788 +#: netbox/dcim/forms/bulk_edit.py:915 netbox/dcim/forms/bulk_edit.py:1701 +#: netbox/dcim/forms/bulk_import.py:88 netbox/dcim/forms/bulk_import.py:147 +#: netbox/dcim/forms/bulk_import.py:248 netbox/dcim/forms/bulk_import.py:505 +#: netbox/dcim/forms/bulk_import.py:659 netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1371 netbox/dcim/forms/bulk_import.py:1435 +#: netbox/dcim/forms/filtersets.py:178 netbox/dcim/forms/filtersets.py:237 +#: netbox/dcim/forms/filtersets.py:359 netbox/dcim/forms/filtersets.py:799 +#: netbox/dcim/forms/filtersets.py:924 netbox/dcim/forms/filtersets.py:958 +#: netbox/dcim/forms/filtersets.py:1059 netbox/dcim/forms/filtersets.py:1170 +#: netbox/dcim/tables/devices.py:140 netbox/dcim/tables/devices.py:813 +#: netbox/dcim/tables/devices.py:1059 netbox/dcim/tables/modules.py:69 +#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126 #: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138 -#: netbox/ipam/forms/bulk_edit.py:254 netbox/ipam/forms/bulk_edit.py:304 -#: netbox/ipam/forms/bulk_edit.py:352 netbox/ipam/forms/bulk_edit.py:558 -#: netbox/ipam/forms/bulk_import.py:191 netbox/ipam/forms/bulk_import.py:256 -#: netbox/ipam/forms/bulk_import.py:292 netbox/ipam/forms/bulk_import.py:458 +#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305 +#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551 +#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257 +#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450 #: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281 -#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:508 +#: netbox/ipam/forms/filtersets.py:355 netbox/ipam/forms/filtersets.py:501 #: netbox/ipam/forms/model_forms.py:468 netbox/ipam/tables/ip.py:237 #: netbox/ipam/tables/ip.py:312 netbox/ipam/tables/ip.py:363 #: netbox/ipam/tables/ip.py:426 netbox/ipam/tables/ip.py:453 -#: netbox/ipam/tables/vlans.py:122 netbox/ipam/tables/vlans.py:228 +#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:232 #: netbox/templates/circuits/circuit.html:34 -#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:42 +#: netbox/templates/core/datasource.html:46 netbox/templates/core/job.html:48 #: netbox/templates/core/rq_task.html:81 netbox/templates/core/system.html:18 #: netbox/templates/dcim/cable.html:19 netbox/templates/dcim/device.html:178 -#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:66 -#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:43 +#: netbox/templates/dcim/location.html:45 netbox/templates/dcim/module.html:69 +#: netbox/templates/dcim/powerfeed.html:36 netbox/templates/dcim/rack.html:41 #: netbox/templates/dcim/site.html:43 -#: netbox/templates/extras/script_list.html:49 +#: netbox/templates/extras/script_list.html:47 #: netbox/templates/ipam/ipaddress.html:37 #: netbox/templates/ipam/iprange.html:54 netbox/templates/ipam/prefix.html:73 #: netbox/templates/ipam/vlan.html:48 @@ -656,7 +704,7 @@ msgstr "运营商账户" #: netbox/templates/vpn/tunnel.html:25 #: netbox/templates/wireless/wirelesslan.html:22 #: netbox/templates/wireless/wirelesslink.html:17 -#: netbox/users/forms/filtersets.py:33 netbox/users/forms/model_forms.py:195 +#: netbox/users/forms/filtersets.py:32 netbox/users/forms/model_forms.py:195 #: netbox/virtualization/forms/bulk_edit.py:70 #: netbox/virtualization/forms/bulk_edit.py:118 #: netbox/virtualization/forms/bulk_import.py:54 @@ -664,7 +712,7 @@ msgstr "运营商账户" #: netbox/virtualization/forms/filtersets.py:62 #: netbox/virtualization/forms/filtersets.py:160 #: netbox/virtualization/tables/clusters.py:74 -#: netbox/virtualization/tables/virtualmachines.py:59 +#: netbox/virtualization/tables/virtualmachines.py:60 #: netbox/vpn/forms/bulk_edit.py:39 netbox/vpn/forms/bulk_import.py:37 #: netbox/vpn/forms/filtersets.py:47 netbox/vpn/tables/tunnels.py:48 #: netbox/wireless/forms/bulk_edit.py:43 @@ -674,45 +722,49 @@ msgstr "运营商账户" #: netbox/wireless/forms/filtersets.py:49 #: netbox/wireless/forms/filtersets.py:83 #: netbox/wireless/tables/wirelesslan.py:52 -#: netbox/wireless/tables/wirelesslink.py:19 +#: netbox/wireless/tables/wirelesslink.py:20 msgid "Status" msgstr "状态" -#: netbox/circuits/forms/bulk_edit.py:140 -#: netbox/circuits/forms/bulk_import.py:97 -#: netbox/circuits/forms/filtersets.py:117 netbox/dcim/forms/bulk_edit.py:121 -#: netbox/dcim/forms/bulk_edit.py:186 netbox/dcim/forms/bulk_edit.py:256 -#: netbox/dcim/forms/bulk_edit.py:368 netbox/dcim/forms/bulk_edit.py:588 -#: netbox/dcim/forms/bulk_edit.py:692 netbox/dcim/forms/bulk_edit.py:1604 -#: netbox/dcim/forms/bulk_import.py:106 netbox/dcim/forms/bulk_import.py:151 -#: netbox/dcim/forms/bulk_import.py:192 netbox/dcim/forms/bulk_import.py:279 -#: netbox/dcim/forms/bulk_import.py:418 netbox/dcim/forms/bulk_import.py:1158 -#: netbox/dcim/forms/bulk_import.py:1367 netbox/dcim/forms/filtersets.py:172 -#: netbox/dcim/forms/filtersets.py:204 netbox/dcim/forms/filtersets.py:259 -#: netbox/dcim/forms/filtersets.py:344 netbox/dcim/forms/filtersets.py:365 -#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:856 -#: netbox/dcim/forms/filtersets.py:918 netbox/dcim/forms/filtersets.py:948 -#: netbox/dcim/forms/filtersets.py:1070 netbox/dcim/tables/power.py:88 -#: netbox/extras/filtersets.py:564 netbox/extras/forms/filtersets.py:332 -#: netbox/extras/forms/filtersets.py:405 netbox/ipam/forms/bulk_edit.py:41 -#: netbox/ipam/forms/bulk_edit.py:66 netbox/ipam/forms/bulk_edit.py:110 -#: netbox/ipam/forms/bulk_edit.py:139 netbox/ipam/forms/bulk_edit.py:164 -#: netbox/ipam/forms/bulk_edit.py:249 netbox/ipam/forms/bulk_edit.py:299 -#: netbox/ipam/forms/bulk_edit.py:347 netbox/ipam/forms/bulk_edit.py:553 -#: netbox/ipam/forms/bulk_import.py:37 netbox/ipam/forms/bulk_import.py:66 -#: netbox/ipam/forms/bulk_import.py:94 netbox/ipam/forms/bulk_import.py:114 -#: netbox/ipam/forms/bulk_import.py:134 netbox/ipam/forms/bulk_import.py:163 -#: netbox/ipam/forms/bulk_import.py:249 netbox/ipam/forms/bulk_import.py:285 -#: netbox/ipam/forms/bulk_import.py:451 netbox/ipam/forms/filtersets.py:48 +#: netbox/circuits/forms/bulk_edit.py:142 +#: netbox/circuits/forms/bulk_edit.py:233 +#: netbox/circuits/forms/bulk_import.py:99 +#: netbox/circuits/forms/bulk_import.py:159 +#: netbox/circuits/forms/filtersets.py:119 +#: netbox/circuits/forms/filtersets.py:241 netbox/dcim/forms/bulk_edit.py:122 +#: netbox/dcim/forms/bulk_edit.py:187 netbox/dcim/forms/bulk_edit.py:346 +#: netbox/dcim/forms/bulk_edit.py:461 netbox/dcim/forms/bulk_edit.py:690 +#: netbox/dcim/forms/bulk_edit.py:794 netbox/dcim/forms/bulk_edit.py:1706 +#: netbox/dcim/forms/bulk_import.py:107 netbox/dcim/forms/bulk_import.py:152 +#: netbox/dcim/forms/bulk_import.py:241 netbox/dcim/forms/bulk_import.py:334 +#: netbox/dcim/forms/bulk_import.py:479 netbox/dcim/forms/bulk_import.py:1219 +#: netbox/dcim/forms/bulk_import.py:1428 netbox/dcim/forms/filtersets.py:173 +#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:323 +#: netbox/dcim/forms/filtersets.py:399 netbox/dcim/forms/filtersets.py:420 +#: netbox/dcim/forms/filtersets.py:722 netbox/dcim/forms/filtersets.py:916 +#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88 +#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323 +#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42 +#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111 +#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165 +#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300 +#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546 +#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67 +#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115 +#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164 +#: netbox/ipam/forms/bulk_import.py:250 netbox/ipam/forms/bulk_import.py:286 +#: netbox/ipam/forms/bulk_import.py:443 netbox/ipam/forms/filtersets.py:48 #: netbox/ipam/forms/filtersets.py:68 netbox/ipam/forms/filtersets.py:100 #: netbox/ipam/forms/filtersets.py:120 netbox/ipam/forms/filtersets.py:143 #: netbox/ipam/forms/filtersets.py:174 netbox/ipam/forms/filtersets.py:267 -#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:476 -#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:225 +#: netbox/ipam/forms/filtersets.py:310 netbox/ipam/forms/filtersets.py:469 +#: netbox/ipam/tables/ip.py:456 netbox/ipam/tables/vlans.py:229 #: netbox/templates/circuits/circuit.html:38 +#: netbox/templates/circuits/circuitgroup.html:36 #: netbox/templates/dcim/cable.html:23 netbox/templates/dcim/device.html:79 #: netbox/templates/dcim/location.html:49 -#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:34 +#: netbox/templates/dcim/powerfeed.html:44 netbox/templates/dcim/rack.html:32 #: netbox/templates/dcim/rackreservation.html:49 #: netbox/templates/dcim/site.html:47 #: netbox/templates/dcim/virtualdevicecontext.html:52 @@ -724,7 +776,7 @@ msgstr "状态" #: netbox/templates/ipam/vlan.html:39 netbox/templates/ipam/vrf.html:20 #: netbox/templates/tenancy/tenant.html:17 #: netbox/templates/virtualization/cluster.html:33 -#: netbox/templates/virtualization/virtualmachine.html:35 +#: netbox/templates/virtualization/virtualmachine.html:39 #: netbox/templates/vpn/l2vpn.html:30 netbox/templates/vpn/tunnel.html:49 #: netbox/templates/wireless/wirelesslan.html:34 #: netbox/templates/wireless/wirelesslink.html:25 @@ -747,36 +799,37 @@ msgstr "状态" msgid "Tenant" msgstr "租户" -#: netbox/circuits/forms/bulk_edit.py:145 -#: netbox/circuits/forms/filtersets.py:172 +#: netbox/circuits/forms/bulk_edit.py:147 +#: netbox/circuits/forms/filtersets.py:174 msgid "Install date" msgstr "安装日期" -#: netbox/circuits/forms/bulk_edit.py:150 -#: netbox/circuits/forms/filtersets.py:177 +#: netbox/circuits/forms/bulk_edit.py:152 +#: netbox/circuits/forms/filtersets.py:179 msgid "Termination date" msgstr "终止日期" -#: netbox/circuits/forms/bulk_edit.py:156 -#: netbox/circuits/forms/filtersets.py:184 +#: netbox/circuits/forms/bulk_edit.py:158 +#: netbox/circuits/forms/filtersets.py:186 msgid "Commit rate (Kbps)" msgstr "承诺速率(Kbps)" -#: netbox/circuits/forms/bulk_edit.py:171 -#: netbox/circuits/forms/model_forms.py:110 +#: netbox/circuits/forms/bulk_edit.py:173 +#: netbox/circuits/forms/model_forms.py:112 msgid "Service Parameters" msgstr "服务参数" -#: netbox/circuits/forms/bulk_edit.py:172 -#: netbox/circuits/forms/model_forms.py:111 -#: netbox/dcim/forms/model_forms.py:138 netbox/dcim/forms/model_forms.py:180 -#: netbox/dcim/forms/model_forms.py:228 netbox/dcim/forms/model_forms.py:267 -#: netbox/dcim/forms/model_forms.py:716 netbox/dcim/forms/model_forms.py:1639 +#: netbox/circuits/forms/bulk_edit.py:174 +#: netbox/circuits/forms/model_forms.py:113 +#: netbox/circuits/forms/model_forms.py:183 +#: netbox/dcim/forms/model_forms.py:139 netbox/dcim/forms/model_forms.py:181 +#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/forms/model_forms.py:323 +#: netbox/dcim/forms/model_forms.py:768 netbox/dcim/forms/model_forms.py:1691 #: netbox/ipam/forms/model_forms.py:64 netbox/ipam/forms/model_forms.py:81 #: netbox/ipam/forms/model_forms.py:115 netbox/ipam/forms/model_forms.py:136 #: netbox/ipam/forms/model_forms.py:160 netbox/ipam/forms/model_forms.py:232 #: netbox/ipam/forms/model_forms.py:261 netbox/ipam/forms/model_forms.py:316 -#: netbox/netbox/navigation/menu.py:37 +#: netbox/netbox/navigation/menu.py:24 #: netbox/templates/dcim/device_edit.html:85 #: netbox/templates/dcim/htmx/cable_edit.html:72 #: netbox/templates/ipam/ipaddress_bulk_add.html:27 @@ -786,37 +839,37 @@ msgstr "服务参数" #: netbox/vpn/forms/bulk_edit.py:78 netbox/vpn/forms/filtersets.py:44 #: netbox/vpn/forms/model_forms.py:62 netbox/vpn/forms/model_forms.py:147 #: netbox/vpn/forms/model_forms.py:411 netbox/wireless/forms/model_forms.py:54 -#: netbox/wireless/forms/model_forms.py:163 +#: netbox/wireless/forms/model_forms.py:170 msgid "Tenancy" msgstr "租户" -#: netbox/circuits/forms/bulk_edit.py:191 -#: netbox/circuits/forms/bulk_edit.py:215 -#: netbox/circuits/forms/model_forms.py:153 -#: netbox/circuits/tables/circuits.py:111 +#: netbox/circuits/forms/bulk_edit.py:193 +#: netbox/circuits/forms/bulk_edit.py:217 +#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/tables/circuits.py:117 #: netbox/templates/circuits/inc/circuit_termination_fields.html:62 #: netbox/templates/circuits/providernetwork.html:17 msgid "Provider Network" msgstr "运营商网络" -#: netbox/circuits/forms/bulk_edit.py:197 +#: netbox/circuits/forms/bulk_edit.py:199 msgid "Port speed (Kbps)" msgstr "端口速度 (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:201 +#: netbox/circuits/forms/bulk_edit.py:203 msgid "Upstream speed (Kbps)" msgstr "上行速度 (Kbps)" -#: netbox/circuits/forms/bulk_edit.py:204 netbox/dcim/forms/bulk_edit.py:849 -#: netbox/dcim/forms/bulk_edit.py:1213 netbox/dcim/forms/bulk_edit.py:1230 -#: netbox/dcim/forms/bulk_edit.py:1247 netbox/dcim/forms/bulk_edit.py:1265 -#: netbox/dcim/forms/bulk_edit.py:1353 netbox/dcim/forms/bulk_edit.py:1492 -#: netbox/dcim/forms/bulk_edit.py:1509 +#: netbox/circuits/forms/bulk_edit.py:206 netbox/dcim/forms/bulk_edit.py:951 +#: netbox/dcim/forms/bulk_edit.py:1315 netbox/dcim/forms/bulk_edit.py:1332 +#: netbox/dcim/forms/bulk_edit.py:1349 netbox/dcim/forms/bulk_edit.py:1367 +#: netbox/dcim/forms/bulk_edit.py:1455 netbox/dcim/forms/bulk_edit.py:1594 +#: netbox/dcim/forms/bulk_edit.py:1611 msgid "Mark connected" msgstr "标记已连接" -#: netbox/circuits/forms/bulk_edit.py:217 -#: netbox/circuits/forms/model_forms.py:155 +#: netbox/circuits/forms/bulk_edit.py:219 +#: netbox/circuits/forms/model_forms.py:157 #: netbox/templates/circuits/inc/circuit_termination_fields.html:54 #: netbox/templates/dcim/frontport.html:121 #: netbox/templates/dcim/interface.html:193 @@ -824,46 +877,60 @@ msgstr "标记已连接" msgid "Circuit Termination" msgstr "线路终端" -#: netbox/circuits/forms/bulk_edit.py:219 -#: netbox/circuits/forms/model_forms.py:157 +#: netbox/circuits/forms/bulk_edit.py:221 +#: netbox/circuits/forms/model_forms.py:159 msgid "Termination Details" msgstr "终端详情" -#: netbox/circuits/forms/bulk_import.py:38 -#: netbox/circuits/forms/bulk_import.py:53 -#: netbox/circuits/forms/bulk_import.py:76 +#: netbox/circuits/forms/bulk_edit.py:251 +#: netbox/circuits/forms/filtersets.py:268 +#: netbox/circuits/tables/circuits.py:168 netbox/dcim/forms/model_forms.py:551 +#: netbox/templates/circuits/circuitgroupassignment.html:30 +#: netbox/templates/dcim/device.html:133 +#: netbox/templates/dcim/virtualchassis.html:68 +#: netbox/templates/dcim/virtualchassis_edit.html:56 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 +#: netbox/tenancy/forms/bulk_edit.py:147 +#: netbox/tenancy/forms/filtersets.py:110 +msgid "Priority" +msgstr "优先级" + +#: netbox/circuits/forms/bulk_import.py:40 +#: netbox/circuits/forms/bulk_import.py:55 +#: netbox/circuits/forms/bulk_import.py:78 msgid "Assigned provider" msgstr "指定的运营商" -#: netbox/circuits/forms/bulk_import.py:82 +#: netbox/circuits/forms/bulk_import.py:84 msgid "Assigned provider account" msgstr "指定的运营商账户" -#: netbox/circuits/forms/bulk_import.py:89 +#: netbox/circuits/forms/bulk_import.py:91 msgid "Type of circuit" msgstr "线路类型" -#: netbox/circuits/forms/bulk_import.py:94 netbox/dcim/forms/bulk_import.py:89 -#: netbox/dcim/forms/bulk_import.py:148 netbox/dcim/forms/bulk_import.py:201 -#: netbox/dcim/forms/bulk_import.py:446 netbox/dcim/forms/bulk_import.py:600 -#: netbox/dcim/forms/bulk_import.py:1312 netbox/ipam/forms/bulk_import.py:193 -#: netbox/ipam/forms/bulk_import.py:258 netbox/ipam/forms/bulk_import.py:294 -#: netbox/ipam/forms/bulk_import.py:460 +#: netbox/circuits/forms/bulk_import.py:96 netbox/dcim/forms/bulk_import.py:90 +#: netbox/dcim/forms/bulk_import.py:149 netbox/dcim/forms/bulk_import.py:250 +#: netbox/dcim/forms/bulk_import.py:507 netbox/dcim/forms/bulk_import.py:661 +#: netbox/dcim/forms/bulk_import.py:1373 netbox/ipam/forms/bulk_import.py:194 +#: netbox/ipam/forms/bulk_import.py:259 netbox/ipam/forms/bulk_import.py:295 +#: netbox/ipam/forms/bulk_import.py:452 #: netbox/virtualization/forms/bulk_import.py:56 #: netbox/virtualization/forms/bulk_import.py:82 #: netbox/vpn/forms/bulk_import.py:39 netbox/wireless/forms/bulk_import.py:45 msgid "Operational status" msgstr "运行状态" -#: netbox/circuits/forms/bulk_import.py:101 -#: netbox/dcim/forms/bulk_import.py:110 netbox/dcim/forms/bulk_import.py:155 -#: netbox/dcim/forms/bulk_import.py:283 netbox/dcim/forms/bulk_import.py:422 -#: netbox/dcim/forms/bulk_import.py:1162 netbox/dcim/forms/bulk_import.py:1307 -#: netbox/dcim/forms/bulk_import.py:1371 netbox/ipam/forms/bulk_import.py:41 -#: netbox/ipam/forms/bulk_import.py:70 netbox/ipam/forms/bulk_import.py:98 -#: netbox/ipam/forms/bulk_import.py:118 netbox/ipam/forms/bulk_import.py:138 -#: netbox/ipam/forms/bulk_import.py:167 netbox/ipam/forms/bulk_import.py:253 -#: netbox/ipam/forms/bulk_import.py:289 netbox/ipam/forms/bulk_import.py:455 +#: netbox/circuits/forms/bulk_import.py:103 +#: netbox/circuits/forms/bulk_import.py:163 +#: netbox/dcim/forms/bulk_import.py:111 netbox/dcim/forms/bulk_import.py:156 +#: netbox/dcim/forms/bulk_import.py:338 netbox/dcim/forms/bulk_import.py:483 +#: netbox/dcim/forms/bulk_import.py:1223 netbox/dcim/forms/bulk_import.py:1368 +#: netbox/dcim/forms/bulk_import.py:1432 netbox/ipam/forms/bulk_import.py:42 +#: netbox/ipam/forms/bulk_import.py:71 netbox/ipam/forms/bulk_import.py:99 +#: netbox/ipam/forms/bulk_import.py:119 netbox/ipam/forms/bulk_import.py:139 +#: netbox/ipam/forms/bulk_import.py:168 netbox/ipam/forms/bulk_import.py:254 +#: netbox/ipam/forms/bulk_import.py:290 netbox/ipam/forms/bulk_import.py:447 #: netbox/virtualization/forms/bulk_import.py:70 #: netbox/virtualization/forms/bulk_import.py:119 #: netbox/vpn/forms/bulk_import.py:63 netbox/wireless/forms/bulk_import.py:59 @@ -871,7 +938,7 @@ msgstr "运行状态" msgid "Assigned tenant" msgstr "已分配租户" -#: netbox/circuits/forms/bulk_import.py:119 +#: netbox/circuits/forms/bulk_import.py:121 #: netbox/templates/circuits/inc/circuit_termination.html:6 #: netbox/templates/circuits/inc/circuit_termination_fields.html:15 #: netbox/templates/dcim/cable.html:68 netbox/templates/dcim/cable.html:72 @@ -879,44 +946,44 @@ msgstr "已分配租户" msgid "Termination" msgstr "终端" -#: netbox/circuits/forms/bulk_import.py:129 -#: netbox/circuits/forms/filtersets.py:145 -#: netbox/circuits/forms/filtersets.py:225 -#: netbox/circuits/forms/model_forms.py:142 +#: netbox/circuits/forms/bulk_import.py:131 +#: netbox/circuits/forms/filtersets.py:147 +#: netbox/circuits/forms/filtersets.py:227 +#: netbox/circuits/forms/model_forms.py:144 msgid "Provider network" msgstr "运营商网络" -#: netbox/circuits/forms/filtersets.py:28 -#: netbox/circuits/forms/filtersets.py:116 -#: netbox/circuits/forms/filtersets.py:198 netbox/dcim/forms/bulk_edit.py:248 -#: netbox/dcim/forms/bulk_edit.py:346 netbox/dcim/forms/bulk_edit.py:580 -#: netbox/dcim/forms/bulk_edit.py:627 netbox/dcim/forms/bulk_edit.py:780 -#: netbox/dcim/forms/bulk_import.py:186 netbox/dcim/forms/bulk_import.py:260 -#: netbox/dcim/forms/bulk_import.py:485 netbox/dcim/forms/bulk_import.py:1256 -#: netbox/dcim/forms/bulk_import.py:1290 netbox/dcim/forms/filtersets.py:94 -#: netbox/dcim/forms/filtersets.py:256 netbox/dcim/forms/filtersets.py:289 -#: netbox/dcim/forms/filtersets.py:341 netbox/dcim/forms/filtersets.py:392 -#: netbox/dcim/forms/filtersets.py:659 netbox/dcim/forms/filtersets.py:702 -#: netbox/dcim/forms/filtersets.py:917 netbox/dcim/forms/filtersets.py:946 -#: netbox/dcim/forms/filtersets.py:966 netbox/dcim/forms/filtersets.py:1030 -#: netbox/dcim/forms/filtersets.py:1060 netbox/dcim/forms/filtersets.py:1069 -#: netbox/dcim/forms/filtersets.py:1180 netbox/dcim/forms/filtersets.py:1204 -#: netbox/dcim/forms/filtersets.py:1229 netbox/dcim/forms/filtersets.py:1248 -#: netbox/dcim/forms/filtersets.py:1271 netbox/dcim/forms/filtersets.py:1382 -#: netbox/dcim/forms/filtersets.py:1406 netbox/dcim/forms/filtersets.py:1430 -#: netbox/dcim/forms/filtersets.py:1448 netbox/dcim/forms/filtersets.py:1465 -#: netbox/dcim/forms/model_forms.py:179 netbox/dcim/forms/model_forms.py:211 -#: netbox/dcim/forms/model_forms.py:411 netbox/dcim/forms/model_forms.py:676 +#: netbox/circuits/forms/filtersets.py:30 +#: netbox/circuits/forms/filtersets.py:118 +#: netbox/circuits/forms/filtersets.py:200 netbox/dcim/forms/bulk_edit.py:338 +#: netbox/dcim/forms/bulk_edit.py:441 netbox/dcim/forms/bulk_edit.py:682 +#: netbox/dcim/forms/bulk_edit.py:729 netbox/dcim/forms/bulk_edit.py:882 +#: netbox/dcim/forms/bulk_import.py:235 netbox/dcim/forms/bulk_import.py:315 +#: netbox/dcim/forms/bulk_import.py:546 netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1351 netbox/dcim/forms/filtersets.py:95 +#: netbox/dcim/forms/filtersets.py:322 netbox/dcim/forms/filtersets.py:356 +#: netbox/dcim/forms/filtersets.py:396 netbox/dcim/forms/filtersets.py:447 +#: netbox/dcim/forms/filtersets.py:719 netbox/dcim/forms/filtersets.py:762 +#: netbox/dcim/forms/filtersets.py:977 netbox/dcim/forms/filtersets.py:1006 +#: netbox/dcim/forms/filtersets.py:1026 netbox/dcim/forms/filtersets.py:1090 +#: netbox/dcim/forms/filtersets.py:1120 netbox/dcim/forms/filtersets.py:1129 +#: netbox/dcim/forms/filtersets.py:1240 netbox/dcim/forms/filtersets.py:1264 +#: netbox/dcim/forms/filtersets.py:1289 netbox/dcim/forms/filtersets.py:1308 +#: netbox/dcim/forms/filtersets.py:1331 netbox/dcim/forms/filtersets.py:1442 +#: netbox/dcim/forms/filtersets.py:1466 netbox/dcim/forms/filtersets.py:1490 +#: netbox/dcim/forms/filtersets.py:1508 netbox/dcim/forms/filtersets.py:1525 +#: netbox/dcim/forms/model_forms.py:180 netbox/dcim/forms/model_forms.py:243 +#: netbox/dcim/forms/model_forms.py:468 netbox/dcim/forms/model_forms.py:728 #: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30 -#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:143 -#: netbox/extras/filtersets.py:488 netbox/extras/forms/filtersets.py:329 -#: netbox/ipam/forms/bulk_edit.py:471 netbox/ipam/forms/filtersets.py:173 +#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212 +#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320 +#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173 #: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437 -#: netbox/ipam/forms/filtersets.py:474 netbox/templates/dcim/device.html:26 +#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26 #: netbox/templates/dcim/device_edit.html:30 #: netbox/templates/dcim/inc/cable_termination.html:12 #: netbox/templates/dcim/location.html:26 -#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:26 +#: netbox/templates/dcim/powerpanel.html:26 netbox/templates/dcim/rack.html:24 #: netbox/templates/dcim/rackreservation.html:32 #: netbox/virtualization/forms/filtersets.py:46 #: netbox/virtualization/forms/filtersets.py:100 @@ -925,13 +992,13 @@ msgstr "运营商网络" msgid "Location" msgstr "位置" -#: netbox/circuits/forms/filtersets.py:30 -#: netbox/circuits/forms/filtersets.py:118 netbox/dcim/forms/filtersets.py:143 -#: netbox/dcim/forms/filtersets.py:157 netbox/dcim/forms/filtersets.py:173 -#: netbox/dcim/forms/filtersets.py:205 netbox/dcim/forms/filtersets.py:260 -#: netbox/dcim/forms/filtersets.py:345 netbox/dcim/forms/filtersets.py:416 -#: netbox/dcim/forms/filtersets.py:663 netbox/dcim/forms/filtersets.py:1031 -#: netbox/netbox/navigation/menu.py:44 netbox/netbox/navigation/menu.py:46 +#: netbox/circuits/forms/filtersets.py:32 +#: netbox/circuits/forms/filtersets.py:120 netbox/dcim/forms/filtersets.py:144 +#: netbox/dcim/forms/filtersets.py:158 netbox/dcim/forms/filtersets.py:174 +#: netbox/dcim/forms/filtersets.py:206 netbox/dcim/forms/filtersets.py:328 +#: netbox/dcim/forms/filtersets.py:400 netbox/dcim/forms/filtersets.py:471 +#: netbox/dcim/forms/filtersets.py:723 netbox/dcim/forms/filtersets.py:1091 +#: netbox/netbox/navigation/menu.py:31 netbox/netbox/navigation/menu.py:33 #: netbox/tenancy/forms/filtersets.py:42 netbox/tenancy/tables/columns.py:70 #: netbox/tenancy/tables/contacts.py:25 netbox/tenancy/views.py:19 #: netbox/virtualization/forms/filtersets.py:37 @@ -940,22 +1007,22 @@ msgstr "位置" msgid "Contacts" msgstr "联系" -#: netbox/circuits/forms/filtersets.py:35 -#: netbox/circuits/forms/filtersets.py:155 netbox/dcim/forms/bulk_edit.py:111 -#: netbox/dcim/forms/bulk_edit.py:223 netbox/dcim/forms/bulk_edit.py:755 -#: netbox/dcim/forms/bulk_import.py:92 netbox/dcim/forms/filtersets.py:72 -#: netbox/dcim/forms/filtersets.py:184 netbox/dcim/forms/filtersets.py:210 -#: netbox/dcim/forms/filtersets.py:267 netbox/dcim/forms/filtersets.py:370 -#: netbox/dcim/forms/filtersets.py:679 netbox/dcim/forms/filtersets.py:923 -#: netbox/dcim/forms/filtersets.py:953 netbox/dcim/forms/filtersets.py:1037 -#: netbox/dcim/forms/filtersets.py:1076 netbox/dcim/forms/filtersets.py:1516 -#: netbox/dcim/forms/filtersets.py:1540 netbox/dcim/forms/filtersets.py:1564 -#: netbox/dcim/forms/model_forms.py:111 netbox/dcim/forms/object_create.py:375 +#: netbox/circuits/forms/filtersets.py:37 +#: netbox/circuits/forms/filtersets.py:157 netbox/dcim/forms/bulk_edit.py:112 +#: netbox/dcim/forms/bulk_edit.py:313 netbox/dcim/forms/bulk_edit.py:857 +#: netbox/dcim/forms/bulk_import.py:93 netbox/dcim/forms/filtersets.py:73 +#: netbox/dcim/forms/filtersets.py:185 netbox/dcim/forms/filtersets.py:211 +#: netbox/dcim/forms/filtersets.py:334 netbox/dcim/forms/filtersets.py:425 +#: netbox/dcim/forms/filtersets.py:739 netbox/dcim/forms/filtersets.py:983 +#: netbox/dcim/forms/filtersets.py:1013 netbox/dcim/forms/filtersets.py:1097 +#: netbox/dcim/forms/filtersets.py:1136 netbox/dcim/forms/filtersets.py:1576 +#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624 +#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375 #: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85 -#: netbox/extras/filtersets.py:455 netbox/ipam/forms/bulk_edit.py:206 -#: netbox/ipam/forms/bulk_edit.py:452 netbox/ipam/forms/bulk_edit.py:526 +#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207 +#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519 #: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422 -#: netbox/ipam/forms/filtersets.py:482 netbox/templates/dcim/device.html:18 +#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18 #: netbox/templates/dcim/rack.html:16 #: netbox/templates/dcim/rackreservation.html:22 #: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31 @@ -968,17 +1035,17 @@ msgstr "联系" msgid "Region" msgstr "地区" -#: netbox/circuits/forms/filtersets.py:40 -#: netbox/circuits/forms/filtersets.py:160 netbox/dcim/forms/bulk_edit.py:231 -#: netbox/dcim/forms/bulk_edit.py:763 netbox/dcim/forms/filtersets.py:77 -#: netbox/dcim/forms/filtersets.py:189 netbox/dcim/forms/filtersets.py:215 -#: netbox/dcim/forms/filtersets.py:280 netbox/dcim/forms/filtersets.py:375 -#: netbox/dcim/forms/filtersets.py:684 netbox/dcim/forms/filtersets.py:928 -#: netbox/dcim/forms/filtersets.py:1042 netbox/dcim/forms/filtersets.py:1081 -#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:472 -#: netbox/ipam/forms/bulk_edit.py:211 netbox/ipam/forms/bulk_edit.py:459 -#: netbox/ipam/forms/bulk_edit.py:531 netbox/ipam/forms/filtersets.py:222 -#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:487 +#: netbox/circuits/forms/filtersets.py:42 +#: netbox/circuits/forms/filtersets.py:162 netbox/dcim/forms/bulk_edit.py:321 +#: netbox/dcim/forms/bulk_edit.py:865 netbox/dcim/forms/filtersets.py:78 +#: netbox/dcim/forms/filtersets.py:190 netbox/dcim/forms/filtersets.py:216 +#: netbox/dcim/forms/filtersets.py:347 netbox/dcim/forms/filtersets.py:430 +#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988 +#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141 +#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520 +#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448 +#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222 +#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480 #: netbox/virtualization/forms/bulk_edit.py:86 #: netbox/virtualization/forms/filtersets.py:69 #: netbox/virtualization/forms/filtersets.py:138 @@ -986,211 +1053,295 @@ msgstr "地区" msgid "Site group" msgstr "站点组" -#: netbox/circuits/forms/filtersets.py:63 -#: netbox/circuits/forms/filtersets.py:81 -#: netbox/circuits/forms/filtersets.py:100 -#: netbox/circuits/forms/filtersets.py:115 netbox/core/forms/filtersets.py:64 -#: netbox/dcim/forms/bulk_edit.py:726 netbox/dcim/forms/filtersets.py:171 -#: netbox/dcim/forms/filtersets.py:203 netbox/dcim/forms/filtersets.py:855 -#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1071 -#: netbox/dcim/forms/filtersets.py:1179 netbox/dcim/forms/filtersets.py:1203 -#: netbox/dcim/forms/filtersets.py:1228 netbox/dcim/forms/filtersets.py:1247 -#: netbox/dcim/forms/filtersets.py:1267 netbox/dcim/forms/filtersets.py:1381 -#: netbox/dcim/forms/filtersets.py:1405 netbox/dcim/forms/filtersets.py:1429 -#: netbox/dcim/forms/filtersets.py:1447 netbox/dcim/forms/filtersets.py:1463 -#: netbox/extras/forms/filtersets.py:43 netbox/extras/forms/filtersets.py:112 -#: netbox/extras/forms/filtersets.py:143 netbox/extras/forms/filtersets.py:183 -#: netbox/extras/forms/filtersets.py:199 netbox/extras/forms/filtersets.py:230 -#: netbox/extras/forms/filtersets.py:254 netbox/extras/forms/filtersets.py:450 -#: netbox/extras/forms/filtersets.py:485 netbox/ipam/forms/filtersets.py:99 -#: netbox/ipam/forms/filtersets.py:266 netbox/ipam/forms/filtersets.py:307 -#: netbox/ipam/forms/filtersets.py:382 netbox/ipam/forms/filtersets.py:475 -#: netbox/ipam/forms/filtersets.py:534 netbox/ipam/forms/filtersets.py:552 -#: netbox/netbox/tables/tables.py:256 +#: netbox/circuits/forms/filtersets.py:65 +#: netbox/circuits/forms/filtersets.py:83 +#: netbox/circuits/forms/filtersets.py:102 +#: netbox/circuits/forms/filtersets.py:117 netbox/core/forms/filtersets.py:67 +#: netbox/core/forms/filtersets.py:135 netbox/dcim/forms/bulk_edit.py:828 +#: netbox/dcim/forms/filtersets.py:172 netbox/dcim/forms/filtersets.py:204 +#: netbox/dcim/forms/filtersets.py:915 netbox/dcim/forms/filtersets.py:1007 +#: netbox/dcim/forms/filtersets.py:1131 netbox/dcim/forms/filtersets.py:1239 +#: netbox/dcim/forms/filtersets.py:1263 netbox/dcim/forms/filtersets.py:1288 +#: netbox/dcim/forms/filtersets.py:1307 netbox/dcim/forms/filtersets.py:1327 +#: netbox/dcim/forms/filtersets.py:1441 netbox/dcim/forms/filtersets.py:1465 +#: netbox/dcim/forms/filtersets.py:1489 netbox/dcim/forms/filtersets.py:1507 +#: netbox/dcim/forms/filtersets.py:1523 netbox/extras/forms/bulk_edit.py:90 +#: netbox/extras/forms/filtersets.py:44 netbox/extras/forms/filtersets.py:134 +#: netbox/extras/forms/filtersets.py:165 netbox/extras/forms/filtersets.py:205 +#: netbox/extras/forms/filtersets.py:221 netbox/extras/forms/filtersets.py:252 +#: netbox/extras/forms/filtersets.py:276 netbox/extras/forms/filtersets.py:441 +#: netbox/ipam/forms/filtersets.py:99 netbox/ipam/forms/filtersets.py:266 +#: netbox/ipam/forms/filtersets.py:307 netbox/ipam/forms/filtersets.py:382 +#: netbox/ipam/forms/filtersets.py:468 netbox/ipam/forms/filtersets.py:527 +#: netbox/ipam/forms/filtersets.py:545 netbox/netbox/tables/tables.py:256 #: netbox/virtualization/forms/filtersets.py:45 #: netbox/virtualization/forms/filtersets.py:103 -#: netbox/virtualization/forms/filtersets.py:194 -#: netbox/virtualization/forms/filtersets.py:239 -#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/filtersets.py:34 +#: netbox/virtualization/forms/filtersets.py:198 +#: netbox/virtualization/forms/filtersets.py:243 +#: netbox/vpn/forms/filtersets.py:213 netbox/wireless/forms/bulk_edit.py:150 +#: netbox/wireless/forms/filtersets.py:34 #: netbox/wireless/forms/filtersets.py:74 msgid "Attributes" msgstr "属性" -#: netbox/circuits/forms/filtersets.py:71 -#: netbox/circuits/tables/circuits.py:61 +#: netbox/circuits/forms/filtersets.py:73 +#: netbox/circuits/tables/circuits.py:63 #: netbox/circuits/tables/providers.py:66 #: netbox/templates/circuits/circuit.html:22 #: netbox/templates/circuits/provideraccount.html:24 msgid "Account" msgstr "账户" -#: netbox/circuits/forms/filtersets.py:215 +#: netbox/circuits/forms/filtersets.py:217 msgid "Term Side" msgstr "线路终端侧" -#: netbox/circuits/models/circuits.py:25 netbox/dcim/models/cables.py:67 -#: netbox/dcim/models/device_component_templates.py:491 -#: netbox/dcim/models/device_component_templates.py:591 +#: netbox/circuits/forms/filtersets.py:250 +#: netbox/extras/forms/model_forms.py:582 netbox/ipam/forms/filtersets.py:142 +#: netbox/ipam/forms/filtersets.py:546 netbox/ipam/forms/model_forms.py:323 +#: netbox/templates/extras/configcontext.html:60 +#: netbox/templates/ipam/ipaddress.html:59 +#: netbox/templates/ipam/vlan_edit.html:30 +#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 +msgid "Assignment" +msgstr "分配" + +#: netbox/circuits/forms/filtersets.py:265 +#: netbox/circuits/forms/model_forms.py:195 +#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117 +#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117 +#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480 +#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538 +#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528 +#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122 +#: netbox/ipam/tables/vlans.py:226 +#: netbox/templates/circuits/circuitgroupassignment.html:22 +#: netbox/templates/dcim/interface.html:284 netbox/templates/dcim/site.html:37 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 +#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 +#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 +#: netbox/templates/users/group.html:14 +#: netbox/templates/virtualization/cluster.html:29 +#: netbox/templates/vpn/tunnel.html:29 +#: netbox/templates/wireless/wirelesslan.html:18 +#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 +#: netbox/tenancy/forms/bulk_import.py:40 +#: netbox/tenancy/forms/bulk_import.py:81 +#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 +#: netbox/tenancy/forms/filtersets.py:97 +#: netbox/tenancy/forms/model_forms.py:45 +#: netbox/tenancy/forms/model_forms.py:97 +#: netbox/tenancy/forms/model_forms.py:122 +#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 +#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:62 +#: netbox/users/filtersets.py:185 netbox/users/forms/filtersets.py:31 +#: netbox/users/forms/filtersets.py:37 netbox/users/forms/filtersets.py:79 +#: netbox/virtualization/forms/bulk_edit.py:65 +#: netbox/virtualization/forms/bulk_import.py:47 +#: netbox/virtualization/forms/filtersets.py:85 +#: netbox/virtualization/forms/model_forms.py:66 +#: netbox/virtualization/tables/clusters.py:70 +#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 +#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 +#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 +#: netbox/wireless/forms/bulk_import.py:36 +#: netbox/wireless/forms/filtersets.py:46 +#: netbox/wireless/forms/model_forms.py:40 +#: netbox/wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "组" + +#: netbox/circuits/forms/model_forms.py:182 +#: netbox/templates/circuits/circuitgroup.html:25 +msgid "Circuit Group" +msgstr "电路组" + +#: netbox/circuits/models/circuits.py:27 netbox/dcim/models/cables.py:67 +#: netbox/dcim/models/device_component_templates.py:518 +#: netbox/dcim/models/device_component_templates.py:618 #: netbox/dcim/models/device_components.py:976 #: netbox/dcim/models/device_components.py:1050 -#: netbox/dcim/models/device_components.py:1166 -#: netbox/dcim/models/devices.py:469 netbox/dcim/models/racks.py:44 +#: netbox/dcim/models/device_components.py:1205 +#: netbox/dcim/models/devices.py:479 netbox/dcim/models/racks.py:224 #: netbox/extras/models/tags.py:28 msgid "color" msgstr "颜色" -#: netbox/circuits/models/circuits.py:34 +#: netbox/circuits/models/circuits.py:36 msgid "circuit type" msgstr "线路类型" -#: netbox/circuits/models/circuits.py:35 +#: netbox/circuits/models/circuits.py:37 msgid "circuit types" msgstr "线路类型" -#: netbox/circuits/models/circuits.py:46 +#: netbox/circuits/models/circuits.py:48 msgid "circuit ID" msgstr "线路ID" -#: netbox/circuits/models/circuits.py:47 +#: netbox/circuits/models/circuits.py:49 msgid "Unique circuit ID" msgstr "唯一线路 ID" -#: netbox/circuits/models/circuits.py:67 netbox/core/models/data.py:55 -#: netbox/core/models/jobs.py:85 netbox/dcim/models/cables.py:49 -#: netbox/dcim/models/devices.py:643 netbox/dcim/models/devices.py:1155 -#: netbox/dcim/models/devices.py:1364 netbox/dcim/models/power.py:96 -#: netbox/dcim/models/racks.py:98 netbox/dcim/models/sites.py:154 +#: netbox/circuits/models/circuits.py:69 netbox/core/models/data.py:52 +#: netbox/core/models/jobs.py:86 netbox/dcim/models/cables.py:49 +#: netbox/dcim/models/devices.py:653 netbox/dcim/models/devices.py:1166 +#: netbox/dcim/models/devices.py:1392 netbox/dcim/models/power.py:96 +#: netbox/dcim/models/racks.py:297 netbox/dcim/models/sites.py:154 #: netbox/dcim/models/sites.py:266 netbox/ipam/models/ip.py:253 #: netbox/ipam/models/ip.py:522 netbox/ipam/models/ip.py:730 -#: netbox/ipam/models/vlans.py:175 netbox/virtualization/models/clusters.py:74 +#: netbox/ipam/models/vlans.py:195 netbox/virtualization/models/clusters.py:74 #: netbox/virtualization/models/virtualmachines.py:84 -#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:94 -#: netbox/wireless/models.py:158 +#: netbox/vpn/models/tunnels.py:40 netbox/wireless/models.py:95 +#: netbox/wireless/models.py:159 msgid "status" msgstr "状态" -#: netbox/circuits/models/circuits.py:82 +#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19 msgid "installed" msgstr "安装时间" -#: netbox/circuits/models/circuits.py:87 +#: netbox/circuits/models/circuits.py:89 msgid "terminates" msgstr "结束时间" -#: netbox/circuits/models/circuits.py:92 +#: netbox/circuits/models/circuits.py:94 msgid "commit rate (Kbps)" msgstr "承诺速率(Kbps)" -#: netbox/circuits/models/circuits.py:93 +#: netbox/circuits/models/circuits.py:95 msgid "Committed rate" msgstr "承诺速率" -#: netbox/circuits/models/circuits.py:135 +#: netbox/circuits/models/circuits.py:137 msgid "circuit" msgstr "线路" -#: netbox/circuits/models/circuits.py:136 +#: netbox/circuits/models/circuits.py:138 msgid "circuits" msgstr "广域网线路" -#: netbox/circuits/models/circuits.py:169 +#: netbox/circuits/models/circuits.py:170 +msgid "circuit group" +msgstr "电路组" + +#: netbox/circuits/models/circuits.py:171 +msgid "circuit groups" +msgstr "电路组" + +#: netbox/circuits/models/circuits.py:195 netbox/ipam/models/fhrp.py:93 +#: netbox/tenancy/models/contacts.py:134 +msgid "priority" +msgstr "优先级" + +#: netbox/circuits/models/circuits.py:213 +msgid "Circuit group assignment" +msgstr "电路组分配" + +#: netbox/circuits/models/circuits.py:214 +msgid "Circuit group assignments" +msgstr "电路组分配" + +#: netbox/circuits/models/circuits.py:240 msgid "termination" msgstr "接入终端" -#: netbox/circuits/models/circuits.py:186 +#: netbox/circuits/models/circuits.py:257 msgid "port speed (Kbps)" msgstr "接口速率(Kpbs)" -#: netbox/circuits/models/circuits.py:189 +#: netbox/circuits/models/circuits.py:260 msgid "Physical circuit speed" msgstr "物理线路速率" -#: netbox/circuits/models/circuits.py:194 +#: netbox/circuits/models/circuits.py:265 msgid "upstream speed (Kbps)" msgstr "上行速率(Kbps)" -#: netbox/circuits/models/circuits.py:195 +#: netbox/circuits/models/circuits.py:266 msgid "Upstream speed, if different from port speed" msgstr "上行速度(如果与端口速度不同)" -#: netbox/circuits/models/circuits.py:200 +#: netbox/circuits/models/circuits.py:271 msgid "cross-connect ID" msgstr "交叉连接ID" -#: netbox/circuits/models/circuits.py:201 +#: netbox/circuits/models/circuits.py:272 msgid "ID of the local cross-connect" msgstr "本地交叉连接ID" -#: netbox/circuits/models/circuits.py:206 +#: netbox/circuits/models/circuits.py:277 msgid "patch panel/port(s)" msgstr "配线架/端口" -#: netbox/circuits/models/circuits.py:207 +#: netbox/circuits/models/circuits.py:278 msgid "Patch panel ID and port number(s)" msgstr "配线架 ID 和端口号" -#: netbox/circuits/models/circuits.py:210 +#: netbox/circuits/models/circuits.py:281 #: netbox/dcim/models/device_component_templates.py:61 -#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:538 +#: netbox/dcim/models/device_components.py:69 netbox/dcim/models/racks.py:685 #: netbox/extras/models/configs.py:45 netbox/extras/models/configs.py:219 -#: netbox/extras/models/customfields.py:124 netbox/extras/models/models.py:60 -#: netbox/extras/models/models.py:186 netbox/extras/models/models.py:424 -#: netbox/extras/models/models.py:539 netbox/extras/models/staging.py:32 -#: netbox/extras/models/tags.py:32 netbox/netbox/models/__init__.py:109 -#: netbox/netbox/models/__init__.py:144 netbox/netbox/models/__init__.py:190 -#: netbox/users/models/permissions.py:24 netbox/users/models/tokens.py:58 -#: netbox/users/models/users.py:33 -#: netbox/virtualization/models/virtualmachines.py:284 +#: netbox/extras/models/customfields.py:125 netbox/extras/models/models.py:61 +#: netbox/extras/models/models.py:158 netbox/extras/models/models.py:396 +#: netbox/extras/models/models.py:511 +#: netbox/extras/models/notifications.py:131 +#: netbox/extras/models/staging.py:31 netbox/extras/models/tags.py:32 +#: netbox/netbox/models/__init__.py:110 netbox/netbox/models/__init__.py:145 +#: netbox/netbox/models/__init__.py:191 netbox/users/models/permissions.py:24 +#: netbox/users/models/tokens.py:57 netbox/users/models/users.py:33 +#: netbox/virtualization/models/virtualmachines.py:289 msgid "description" msgstr "描述" -#: netbox/circuits/models/circuits.py:223 +#: netbox/circuits/models/circuits.py:294 msgid "circuit termination" msgstr "线路接入" -#: netbox/circuits/models/circuits.py:224 +#: netbox/circuits/models/circuits.py:295 msgid "circuit terminations" msgstr "线路接入" -#: netbox/circuits/models/circuits.py:237 +#: netbox/circuits/models/circuits.py:308 msgid "" "A circuit termination must attach to either a site or a provider network." msgstr "线路终结必须连接到站点或运营商网络。" -#: netbox/circuits/models/circuits.py:239 +#: netbox/circuits/models/circuits.py:310 msgid "" "A circuit termination cannot attach to both a site and a provider network." msgstr "线路终结不能同时连接到站点和运营商网络。" #: netbox/circuits/models/providers.py:22 #: netbox/circuits/models/providers.py:66 -#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:42 -#: netbox/core/models/jobs.py:46 +#: netbox/circuits/models/providers.py:104 netbox/core/models/data.py:39 +#: netbox/core/models/jobs.py:47 #: netbox/dcim/models/device_component_templates.py:43 #: netbox/dcim/models/device_components.py:54 -#: netbox/dcim/models/devices.py:583 netbox/dcim/models/devices.py:1295 -#: netbox/dcim/models/devices.py:1360 netbox/dcim/models/power.py:39 -#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:63 +#: netbox/dcim/models/devices.py:593 netbox/dcim/models/devices.py:1323 +#: netbox/dcim/models/devices.py:1388 netbox/dcim/models/power.py:39 +#: netbox/dcim/models/power.py:92 netbox/dcim/models/racks.py:262 #: netbox/dcim/models/sites.py:138 netbox/extras/models/configs.py:36 -#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:91 -#: netbox/extras/models/models.py:55 netbox/extras/models/models.py:181 -#: netbox/extras/models/models.py:324 netbox/extras/models/models.py:420 -#: netbox/extras/models/models.py:529 netbox/extras/models/models.py:624 -#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:27 +#: netbox/extras/models/configs.py:215 netbox/extras/models/customfields.py:92 +#: netbox/extras/models/models.py:56 netbox/extras/models/models.py:153 +#: netbox/extras/models/models.py:296 netbox/extras/models/models.py:392 +#: netbox/extras/models/models.py:501 netbox/extras/models/models.py:596 +#: netbox/extras/models/notifications.py:126 +#: netbox/extras/models/scripts.py:30 netbox/extras/models/staging.py:26 #: netbox/ipam/models/asns.py:18 netbox/ipam/models/fhrp.py:25 #: netbox/ipam/models/services.py:52 netbox/ipam/models/services.py:88 -#: netbox/ipam/models/vlans.py:26 netbox/ipam/models/vlans.py:164 +#: netbox/ipam/models/vlans.py:36 netbox/ipam/models/vlans.py:184 #: netbox/ipam/models/vrfs.py:22 netbox/ipam/models/vrfs.py:79 -#: netbox/netbox/models/__init__.py:136 netbox/netbox/models/__init__.py:180 +#: netbox/netbox/models/__init__.py:137 netbox/netbox/models/__init__.py:181 #: netbox/tenancy/models/contacts.py:64 netbox/tenancy/models/tenants.py:20 #: netbox/tenancy/models/tenants.py:45 netbox/users/models/permissions.py:20 #: netbox/users/models/users.py:28 netbox/virtualization/models/clusters.py:57 #: netbox/virtualization/models/virtualmachines.py:72 -#: netbox/virtualization/models/virtualmachines.py:274 +#: netbox/virtualization/models/virtualmachines.py:279 #: netbox/vpn/models/crypto.py:24 netbox/vpn/models/crypto.py:71 #: netbox/vpn/models/crypto.py:131 netbox/vpn/models/crypto.py:183 #: netbox/vpn/models/crypto.py:221 netbox/vpn/models/l2vpn.py:22 -#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:50 +#: netbox/vpn/models/tunnels.py:35 netbox/wireless/models.py:51 msgid "name" msgstr "名称" @@ -1199,11 +1350,12 @@ msgid "Full name of the provider" msgstr "运营商全称" #: netbox/circuits/models/providers.py:28 netbox/dcim/models/devices.py:86 -#: netbox/dcim/models/sites.py:149 netbox/extras/models/models.py:534 -#: netbox/ipam/models/asns.py:23 netbox/ipam/models/vlans.py:30 -#: netbox/netbox/models/__init__.py:140 netbox/netbox/models/__init__.py:185 -#: netbox/tenancy/models/tenants.py:25 netbox/tenancy/models/tenants.py:49 -#: netbox/vpn/models/l2vpn.py:27 netbox/wireless/models.py:55 +#: netbox/dcim/models/racks.py:137 netbox/dcim/models/sites.py:149 +#: netbox/extras/models/models.py:506 netbox/ipam/models/asns.py:23 +#: netbox/ipam/models/vlans.py:40 netbox/netbox/models/__init__.py:141 +#: netbox/netbox/models/__init__.py:186 netbox/tenancy/models/tenants.py:25 +#: netbox/tenancy/models/tenants.py:49 netbox/vpn/models/l2vpn.py:27 +#: netbox/wireless/models.py:56 msgid "slug" msgstr "缩写" @@ -1239,40 +1391,45 @@ msgstr "运营商网络" msgid "provider networks" msgstr "运营商网络" -#: netbox/circuits/tables/circuits.py:30 +#: netbox/circuits/tables/circuits.py:32 +#: netbox/circuits/tables/circuits.py:132 #: netbox/circuits/tables/providers.py:18 #: netbox/circuits/tables/providers.py:69 #: netbox/circuits/tables/providers.py:99 netbox/core/tables/data.py:16 -#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:13 +#: netbox/core/tables/jobs.py:14 netbox/core/tables/plugins.py:44 #: netbox/core/tables/tasks.py:11 netbox/core/tables/tasks.py:115 -#: netbox/dcim/forms/filtersets.py:62 netbox/dcim/forms/object_create.py:43 +#: netbox/dcim/forms/filtersets.py:63 netbox/dcim/forms/object_create.py:43 #: netbox/dcim/tables/devices.py:52 netbox/dcim/tables/devices.py:92 #: netbox/dcim/tables/devices.py:134 netbox/dcim/tables/devices.py:289 -#: netbox/dcim/tables/devices.py:389 netbox/dcim/tables/devices.py:430 -#: netbox/dcim/tables/devices.py:479 netbox/dcim/tables/devices.py:528 -#: netbox/dcim/tables/devices.py:642 netbox/dcim/tables/devices.py:724 -#: netbox/dcim/tables/devices.py:771 netbox/dcim/tables/devices.py:834 -#: netbox/dcim/tables/devices.py:950 netbox/dcim/tables/devices.py:970 -#: netbox/dcim/tables/devices.py:999 netbox/dcim/tables/devices.py:1029 -#: netbox/dcim/tables/devicetypes.py:32 netbox/dcim/tables/power.py:22 -#: netbox/dcim/tables/power.py:62 netbox/dcim/tables/racks.py:23 -#: netbox/dcim/tables/racks.py:53 netbox/dcim/tables/sites.py:24 -#: netbox/dcim/tables/sites.py:51 netbox/dcim/tables/sites.py:78 -#: netbox/dcim/tables/sites.py:130 netbox/extras/forms/filtersets.py:191 -#: netbox/extras/tables/tables.py:43 netbox/extras/tables/tables.py:91 -#: netbox/extras/tables/tables.py:124 netbox/extras/tables/tables.py:149 -#: netbox/extras/tables/tables.py:215 netbox/extras/tables/tables.py:263 -#: netbox/extras/tables/tables.py:286 netbox/extras/tables/tables.py:336 -#: netbox/extras/tables/tables.py:388 netbox/extras/tables/tables.py:411 -#: netbox/ipam/forms/bulk_edit.py:405 netbox/ipam/forms/filtersets.py:386 +#: netbox/dcim/tables/devices.py:392 netbox/dcim/tables/devices.py:433 +#: netbox/dcim/tables/devices.py:482 netbox/dcim/tables/devices.py:531 +#: netbox/dcim/tables/devices.py:645 netbox/dcim/tables/devices.py:727 +#: netbox/dcim/tables/devices.py:774 netbox/dcim/tables/devices.py:837 +#: netbox/dcim/tables/devices.py:907 netbox/dcim/tables/devices.py:970 +#: netbox/dcim/tables/devices.py:990 netbox/dcim/tables/devices.py:1019 +#: netbox/dcim/tables/devices.py:1049 netbox/dcim/tables/devicetypes.py:32 +#: netbox/dcim/tables/power.py:22 netbox/dcim/tables/power.py:62 +#: netbox/dcim/tables/racks.py:24 netbox/dcim/tables/racks.py:113 +#: netbox/dcim/tables/sites.py:24 netbox/dcim/tables/sites.py:51 +#: netbox/dcim/tables/sites.py:78 netbox/dcim/tables/sites.py:130 +#: netbox/extras/forms/filtersets.py:213 netbox/extras/tables/tables.py:58 +#: netbox/extras/tables/tables.py:122 netbox/extras/tables/tables.py:155 +#: netbox/extras/tables/tables.py:180 netbox/extras/tables/tables.py:246 +#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378 +#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439 +#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514 +#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386 #: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85 #: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15 #: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64 -#: netbox/ipam/tables/vlans.py:110 netbox/ipam/tables/vrfs.py:26 -#: netbox/ipam/tables/vrfs.py:68 netbox/templates/circuits/circuittype.html:22 +#: netbox/ipam/tables/vlans.py:114 netbox/ipam/tables/vrfs.py:26 +#: netbox/ipam/tables/vrfs.py:68 +#: netbox/templates/circuits/circuitgroup.html:28 +#: netbox/templates/circuits/circuittype.html:22 #: netbox/templates/circuits/provideraccount.html:28 #: netbox/templates/circuits/providernetwork.html:24 -#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:38 +#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44 +#: netbox/templates/core/plugin.html:53 #: netbox/templates/core/rq_worker.html:43 #: netbox/templates/dcim/consoleport.html:28 #: netbox/templates/dcim/consoleserverport.html:28 @@ -1287,7 +1444,7 @@ msgstr "运营商网络" #: netbox/templates/dcim/inventoryitemrole.html:18 #: netbox/templates/dcim/location.html:29 #: netbox/templates/dcim/manufacturer.html:36 -#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:30 #: netbox/templates/dcim/platform.html:29 #: netbox/templates/dcim/poweroutlet.html:28 #: netbox/templates/dcim/powerport.html:28 @@ -1301,8 +1458,9 @@ msgstr "运营商网络" #: netbox/templates/extras/customlink.html:13 #: netbox/templates/extras/eventrule.html:13 #: netbox/templates/extras/exporttemplate.html:15 +#: netbox/templates/extras/notificationgroup.html:14 #: netbox/templates/extras/savedfilter.html:13 -#: netbox/templates/extras/script_list.html:46 +#: netbox/templates/extras/script_list.html:44 #: netbox/templates/extras/tag.html:14 netbox/templates/extras/webhook.html:13 #: netbox/templates/ipam/asnrange.html:15 #: netbox/templates/ipam/fhrpgroup.html:30 netbox/templates/ipam/rir.html:22 @@ -1342,9 +1500,9 @@ msgstr "运营商网络" #: netbox/virtualization/tables/clusters.py:17 #: netbox/virtualization/tables/clusters.py:39 #: netbox/virtualization/tables/clusters.py:62 -#: netbox/virtualization/tables/virtualmachines.py:54 -#: netbox/virtualization/tables/virtualmachines.py:132 -#: netbox/virtualization/tables/virtualmachines.py:187 +#: netbox/virtualization/tables/virtualmachines.py:55 +#: netbox/virtualization/tables/virtualmachines.py:139 +#: netbox/virtualization/tables/virtualmachines.py:194 #: netbox/vpn/tables/crypto.py:18 netbox/vpn/tables/crypto.py:57 #: netbox/vpn/tables/crypto.py:93 netbox/vpn/tables/crypto.py:129 #: netbox/vpn/tables/crypto.py:158 netbox/vpn/tables/l2vpn.py:23 @@ -1354,56 +1512,57 @@ msgstr "运营商网络" msgid "Name" msgstr "名称" -#: netbox/circuits/tables/circuits.py:39 +#: netbox/circuits/tables/circuits.py:41 +#: netbox/circuits/tables/circuits.py:138 #: netbox/circuits/tables/providers.py:45 -#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:253 -#: netbox/netbox/navigation/menu.py:257 netbox/netbox/navigation/menu.py:259 +#: netbox/circuits/tables/providers.py:79 netbox/netbox/navigation/menu.py:266 +#: netbox/netbox/navigation/menu.py:270 netbox/netbox/navigation/menu.py:272 #: netbox/templates/circuits/provider.html:57 #: netbox/templates/circuits/provideraccount.html:44 #: netbox/templates/circuits/providernetwork.html:50 msgid "Circuits" msgstr "广域网线路" -#: netbox/circuits/tables/circuits.py:53 +#: netbox/circuits/tables/circuits.py:55 #: netbox/templates/circuits/circuit.html:26 msgid "Circuit ID" msgstr "线路ID" -#: netbox/circuits/tables/circuits.py:67 +#: netbox/circuits/tables/circuits.py:69 #: netbox/wireless/forms/model_forms.py:160 msgid "Side A" msgstr "A端" -#: netbox/circuits/tables/circuits.py:72 +#: netbox/circuits/tables/circuits.py:74 msgid "Side Z" msgstr "Z端" -#: netbox/circuits/tables/circuits.py:75 +#: netbox/circuits/tables/circuits.py:77 #: netbox/templates/circuits/circuit.html:55 msgid "Commit Rate" msgstr "承诺速率" -#: netbox/circuits/tables/circuits.py:78 +#: netbox/circuits/tables/circuits.py:80 #: netbox/circuits/tables/providers.py:48 #: netbox/circuits/tables/providers.py:82 -#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1012 +#: netbox/circuits/tables/providers.py:107 netbox/dcim/tables/devices.py:1032 #: netbox/dcim/tables/devicetypes.py:93 netbox/dcim/tables/modules.py:29 #: netbox/dcim/tables/modules.py:72 netbox/dcim/tables/power.py:39 -#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:76 -#: netbox/dcim/tables/racks.py:156 netbox/dcim/tables/sites.py:108 -#: netbox/extras/tables/tables.py:522 netbox/ipam/tables/asn.py:69 -#: netbox/ipam/tables/fhrp.py:34 netbox/ipam/tables/ip.py:136 -#: netbox/ipam/tables/ip.py:275 netbox/ipam/tables/ip.py:329 -#: netbox/ipam/tables/ip.py:397 netbox/ipam/tables/services.py:24 -#: netbox/ipam/tables/services.py:54 netbox/ipam/tables/vlans.py:141 -#: netbox/ipam/tables/vrfs.py:47 netbox/ipam/tables/vrfs.py:72 -#: netbox/templates/dcim/htmx/cable_edit.html:89 +#: netbox/dcim/tables/power.py:96 netbox/dcim/tables/racks.py:84 +#: netbox/dcim/tables/racks.py:145 netbox/dcim/tables/racks.py:225 +#: netbox/dcim/tables/sites.py:108 netbox/extras/tables/tables.py:582 +#: netbox/ipam/tables/asn.py:69 netbox/ipam/tables/fhrp.py:34 +#: netbox/ipam/tables/ip.py:136 netbox/ipam/tables/ip.py:275 +#: netbox/ipam/tables/ip.py:329 netbox/ipam/tables/ip.py:397 +#: netbox/ipam/tables/services.py:24 netbox/ipam/tables/services.py:54 +#: netbox/ipam/tables/vlans.py:145 netbox/ipam/tables/vrfs.py:47 +#: netbox/ipam/tables/vrfs.py:72 netbox/templates/dcim/htmx/cable_edit.html:89 #: netbox/templates/generic/bulk_edit.html:86 -#: netbox/templates/inc/panels/comments.html:6 +#: netbox/templates/inc/panels/comments.html:5 #: netbox/tenancy/tables/contacts.py:68 netbox/tenancy/tables/tenants.py:46 #: netbox/utilities/forms/fields/fields.py:29 #: netbox/virtualization/tables/clusters.py:91 -#: netbox/virtualization/tables/virtualmachines.py:81 +#: netbox/virtualization/tables/virtualmachines.py:82 #: netbox/vpn/tables/crypto.py:37 netbox/vpn/tables/crypto.py:74 #: netbox/vpn/tables/crypto.py:109 netbox/vpn/tables/crypto.py:140 #: netbox/vpn/tables/crypto.py:173 netbox/vpn/tables/l2vpn.py:37 @@ -1412,6 +1571,12 @@ msgstr "承诺速率" msgid "Comments" msgstr "评论" +#: netbox/circuits/tables/circuits.py:86 +#: netbox/templates/tenancy/contact.html:84 +#: netbox/tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "分配" + #: netbox/circuits/tables/providers.py:23 msgid "Accounts" msgstr "账户" @@ -1434,7 +1599,7 @@ msgstr "尚未为电路定义终端 {circuit}。" msgid "Swapped terminations for circuit {circuit}." msgstr "已将终端交换为电路 {circuit}。" -#: netbox/core/api/views.py:36 +#: netbox/core/api/views.py:39 msgid "This user does not have permission to synchronize this data source." msgstr "该用户无权同步该数据源。" @@ -1452,21 +1617,19 @@ msgid "Syncing" msgstr "正在同步" #: netbox/core/choices.py:21 netbox/core/choices.py:57 -#: netbox/core/tables/jobs.py:41 netbox/extras/choices.py:228 -#: netbox/templates/core/job.html:80 +#: netbox/core/tables/jobs.py:41 netbox/templates/core/job.html:86 msgid "Completed" msgstr "完成" #: netbox/core/choices.py:22 netbox/core/choices.py:59 #: netbox/core/constants.py:20 netbox/core/tables/tasks.py:34 -#: netbox/dcim/choices.py:176 netbox/dcim/choices.py:222 -#: netbox/dcim/choices.py:1538 netbox/extras/choices.py:230 -#: netbox/virtualization/choices.py:47 +#: netbox/dcim/choices.py:187 netbox/dcim/choices.py:233 +#: netbox/dcim/choices.py:1595 netbox/virtualization/choices.py:47 msgid "Failed" msgstr "故障" -#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:320 -#: netbox/netbox/navigation/menu.py:324 +#: netbox/core/choices.py:35 netbox/netbox/navigation/menu.py:335 +#: netbox/netbox/navigation/menu.py:339 #: netbox/templates/extras/script/base.html:14 #: netbox/templates/extras/script_list.html:7 #: netbox/templates/extras/script_list.html:12 @@ -1478,30 +1641,39 @@ msgstr "脚本" msgid "Reports" msgstr "报告" -#: netbox/core/choices.py:54 netbox/extras/choices.py:225 +#: netbox/core/choices.py:54 msgid "Pending" msgstr "正在挂起" #: netbox/core/choices.py:55 netbox/core/constants.py:23 #: netbox/core/tables/jobs.py:32 netbox/core/tables/tasks.py:38 -#: netbox/extras/choices.py:226 netbox/templates/core/job.html:67 +#: netbox/templates/core/job.html:73 msgid "Scheduled" msgstr "计划" -#: netbox/core/choices.py:56 netbox/extras/choices.py:227 +#: netbox/core/choices.py:56 msgid "Running" msgstr "运行中" -#: netbox/core/choices.py:58 netbox/extras/choices.py:229 +#: netbox/core/choices.py:58 msgid "Errored" msgstr "错误" +#: netbox/core/choices.py:87 netbox/core/tables/plugins.py:63 +#: netbox/templates/generic/object.html:61 +msgid "Updated" +msgstr "更新于" + +#: netbox/core/choices.py:88 +msgid "Deleted" +msgstr "删除" + #: netbox/core/constants.py:19 netbox/core/tables/tasks.py:30 msgid "Finished" msgstr "已完成" #: netbox/core/constants.py:21 netbox/core/tables/jobs.py:38 -#: netbox/templates/core/job.html:76 +#: netbox/templates/core/job.html:82 #: netbox/templates/extras/htmx/script_result.html:8 msgid "Started" msgstr "开始于" @@ -1518,11 +1690,13 @@ msgstr "已停止" msgid "Cancelled" msgstr "已取消" -#: netbox/core/data_backends.py:29 netbox/templates/dcim/interface.html:216 +#: netbox/core/data_backends.py:29 netbox/core/tables/plugins.py:51 +#: netbox/templates/core/plugin.html:87 +#: netbox/templates/dcim/interface.html:216 msgid "Local" msgstr "本地" -#: netbox/core/data_backends.py:47 netbox/extras/tables/tables.py:468 +#: netbox/core/data_backends.py:47 netbox/core/tables/change_logging.py:20 #: netbox/templates/account/profile.html:15 #: netbox/templates/users/user.html:17 netbox/users/tables.py:31 msgid "Username" @@ -1532,8 +1706,8 @@ msgstr "用户名" msgid "Only used for cloning with HTTP(S)" msgstr "仅用于通过 HTTP(S) 进行克隆" -#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:17 -#: netbox/templates/account/password.html:11 +#: netbox/core/data_backends.py:53 netbox/templates/account/base.html:23 +#: netbox/templates/account/password.html:12 #: netbox/users/forms/model_forms.py:171 msgid "Password" msgstr "密码" @@ -1555,24 +1729,63 @@ msgstr "AWS access key ID" msgid "AWS secret access key" msgstr "AWS secret access key" -#: netbox/core/filtersets.py:49 netbox/extras/filtersets.py:245 -#: netbox/extras/filtersets.py:585 netbox/extras/filtersets.py:617 +#: netbox/core/events.py:27 +msgid "Object created" +msgstr "对象已创建" + +#: netbox/core/events.py:28 +msgid "Object updated" +msgstr "对象已更新" + +#: netbox/core/events.py:29 +msgid "Object deleted" +msgstr "对象已删除" + +#: netbox/core/events.py:30 +msgid "Job started" +msgstr "工作已开始" + +#: netbox/core/events.py:31 +msgid "Job completed" +msgstr "任务已完成" + +#: netbox/core/events.py:32 +msgid "Job failed" +msgstr "作业失败" + +#: netbox/core/events.py:33 +msgid "Job errored" +msgstr "作业出错" + +#: netbox/core/filtersets.py:53 netbox/extras/filtersets.py:250 +#: netbox/extras/filtersets.py:633 netbox/extras/filtersets.py:661 msgid "Data source (ID)" msgstr "数据源 (ID)" -#: netbox/core/filtersets.py:55 +#: netbox/core/filtersets.py:59 msgid "Data source (name)" msgstr "数据源 (name)" -#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:40 -#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1020 -#: netbox/dcim/forms/bulk_edit.py:1298 netbox/dcim/forms/filtersets.py:1310 -#: netbox/dcim/tables/devices.py:550 netbox/dcim/tables/devicetypes.py:225 -#: netbox/extras/forms/bulk_edit.py:98 netbox/extras/forms/bulk_edit.py:162 -#: netbox/extras/forms/bulk_edit.py:221 netbox/extras/forms/filtersets.py:120 -#: netbox/extras/forms/filtersets.py:207 netbox/extras/forms/filtersets.py:268 -#: netbox/extras/tables/tables.py:131 netbox/extras/tables/tables.py:222 -#: netbox/extras/tables/tables.py:300 netbox/netbox/preferences.py:22 +#: netbox/core/filtersets.py:145 netbox/dcim/filtersets.py:501 +#: netbox/extras/filtersets.py:287 netbox/extras/filtersets.py:331 +#: netbox/extras/filtersets.py:353 netbox/extras/filtersets.py:413 +#: netbox/users/filtersets.py:28 +msgid "User (ID)" +msgstr "用户(ID)" + +#: netbox/core/filtersets.py:151 +msgid "User name" +msgstr "用户名" + +#: netbox/core/forms/bulk_edit.py:25 netbox/core/forms/filtersets.py:43 +#: netbox/core/tables/data.py:26 netbox/dcim/forms/bulk_edit.py:1122 +#: netbox/dcim/forms/bulk_edit.py:1400 netbox/dcim/forms/filtersets.py:1370 +#: netbox/dcim/tables/devices.py:553 netbox/dcim/tables/devicetypes.py:225 +#: netbox/extras/forms/bulk_edit.py:123 netbox/extras/forms/bulk_edit.py:187 +#: netbox/extras/forms/bulk_edit.py:246 netbox/extras/forms/filtersets.py:142 +#: netbox/extras/forms/filtersets.py:229 netbox/extras/forms/filtersets.py:294 +#: netbox/extras/tables/tables.py:162 netbox/extras/tables/tables.py:253 +#: netbox/extras/tables/tables.py:415 netbox/netbox/preferences.py:22 #: netbox/templates/core/datasource.html:42 #: netbox/templates/dcim/interface.html:61 #: netbox/templates/extras/customlink.html:17 @@ -1580,14 +1793,14 @@ msgstr "数据源 (name)" #: netbox/templates/extras/savedfilter.html:25 #: netbox/templates/users/objectpermission.html:25 #: netbox/templates/virtualization/vminterface.html:29 -#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:71 +#: netbox/users/forms/bulk_edit.py:89 netbox/users/forms/filtersets.py:70 #: netbox/users/tables.py:83 netbox/virtualization/forms/bulk_edit.py:217 -#: netbox/virtualization/forms/filtersets.py:211 +#: netbox/virtualization/forms/filtersets.py:215 msgid "Enabled" msgstr "已启用" -#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:211 -#: netbox/templates/extras/savedfilter.html:53 +#: netbox/core/forms/bulk_edit.py:34 netbox/extras/forms/model_forms.py:285 +#: netbox/templates/extras/savedfilter.html:52 #: netbox/vpn/forms/filtersets.py:97 netbox/vpn/forms/filtersets.py:127 #: netbox/vpn/forms/filtersets.py:151 netbox/vpn/forms/filtersets.py:170 #: netbox/vpn/forms/model_forms.py:301 netbox/vpn/forms/model_forms.py:321 @@ -1600,11 +1813,11 @@ msgstr "参数" msgid "Ignore rules" msgstr "忽略规则" -#: netbox/core/forms/filtersets.py:27 netbox/core/forms/model_forms.py:97 -#: netbox/extras/forms/model_forms.py:174 -#: netbox/extras/forms/model_forms.py:454 -#: netbox/extras/forms/model_forms.py:508 netbox/extras/tables/tables.py:160 -#: netbox/extras/tables/tables.py:380 netbox/extras/tables/tables.py:415 +#: netbox/core/forms/filtersets.py:30 netbox/core/forms/model_forms.py:97 +#: netbox/extras/forms/model_forms.py:248 +#: netbox/extras/forms/model_forms.py:578 +#: netbox/extras/forms/model_forms.py:632 netbox/extras/tables/tables.py:191 +#: netbox/extras/tables/tables.py:483 netbox/extras/tables/tables.py:518 #: netbox/templates/core/datasource.html:31 #: netbox/templates/dcim/device/render_config.html:18 #: netbox/templates/extras/configcontext.html:29 @@ -1614,76 +1827,99 @@ msgstr "忽略规则" msgid "Data Source" msgstr "数据源" -#: netbox/core/forms/filtersets.py:52 netbox/core/forms/mixins.py:21 +#: netbox/core/forms/filtersets.py:55 netbox/core/forms/mixins.py:21 msgid "File" msgstr "文件" -#: netbox/core/forms/filtersets.py:57 netbox/core/forms/mixins.py:16 -#: netbox/extras/forms/filtersets.py:148 netbox/extras/forms/filtersets.py:337 -#: netbox/extras/forms/filtersets.py:422 +#: netbox/core/forms/filtersets.py:60 netbox/core/forms/mixins.py:16 +#: netbox/extras/forms/filtersets.py:170 netbox/extras/forms/filtersets.py:328 +#: netbox/extras/forms/filtersets.py:413 msgid "Data source" msgstr "数据源" -#: netbox/core/forms/filtersets.py:67 netbox/extras/forms/filtersets.py:449 +#: netbox/core/forms/filtersets.py:70 netbox/extras/forms/filtersets.py:440 msgid "Creation" msgstr "创建" -#: netbox/core/forms/filtersets.py:71 netbox/extras/forms/filtersets.py:470 -#: netbox/extras/forms/filtersets.py:510 netbox/extras/tables/tables.py:189 -#: netbox/extras/tables/tables.py:511 netbox/templates/core/job.html:32 -#: netbox/templates/extras/objectchange.html:52 +#: netbox/core/forms/filtersets.py:74 netbox/core/forms/filtersets.py:160 +#: netbox/extras/forms/filtersets.py:461 netbox/extras/tables/tables.py:220 +#: netbox/extras/tables/tables.py:294 netbox/extras/tables/tables.py:326 +#: netbox/extras/tables/tables.py:571 netbox/templates/core/job.html:38 +#: netbox/templates/core/objectchange.html:52 #: netbox/tenancy/tables/contacts.py:90 netbox/vpn/tables/l2vpn.py:59 msgid "Object Type" msgstr "目标类型" -#: netbox/core/forms/filtersets.py:81 +#: netbox/core/forms/filtersets.py:84 msgid "Created after" msgstr "之后创建" -#: netbox/core/forms/filtersets.py:86 +#: netbox/core/forms/filtersets.py:89 msgid "Created before" msgstr "之前创建" -#: netbox/core/forms/filtersets.py:91 +#: netbox/core/forms/filtersets.py:94 msgid "Scheduled after" msgstr "计划在之后" -#: netbox/core/forms/filtersets.py:96 +#: netbox/core/forms/filtersets.py:99 msgid "Scheduled before" msgstr "计划在之前" -#: netbox/core/forms/filtersets.py:101 +#: netbox/core/forms/filtersets.py:104 msgid "Started after" msgstr "之后开始" -#: netbox/core/forms/filtersets.py:106 +#: netbox/core/forms/filtersets.py:109 msgid "Started before" msgstr "之前开始" -#: netbox/core/forms/filtersets.py:111 +#: netbox/core/forms/filtersets.py:114 msgid "Completed after" msgstr "完成后" -#: netbox/core/forms/filtersets.py:116 +#: netbox/core/forms/filtersets.py:119 msgid "Completed before" msgstr "完成后" -#: netbox/core/forms/filtersets.py:123 netbox/dcim/forms/bulk_edit.py:361 -#: netbox/dcim/forms/filtersets.py:363 netbox/dcim/forms/filtersets.py:407 -#: netbox/dcim/forms/model_forms.py:258 netbox/extras/forms/filtersets.py:465 -#: netbox/extras/forms/filtersets.py:505 +#: netbox/core/forms/filtersets.py:126 netbox/core/forms/filtersets.py:155 +#: netbox/dcim/forms/bulk_edit.py:456 netbox/dcim/forms/filtersets.py:418 +#: netbox/dcim/forms/filtersets.py:462 netbox/dcim/forms/model_forms.py:316 +#: netbox/extras/forms/filtersets.py:456 netbox/extras/forms/filtersets.py:475 +#: netbox/extras/tables/tables.py:302 netbox/extras/tables/tables.py:342 +#: netbox/templates/core/objectchange.html:36 #: netbox/templates/dcim/rackreservation.html:58 -#: netbox/templates/extras/objectchange.html:36 #: netbox/templates/extras/savedfilter.html:21 -#: netbox/templates/inc/user_menu.html:15 netbox/templates/users/token.html:21 +#: netbox/templates/inc/user_menu.html:33 netbox/templates/users/token.html:21 #: netbox/templates/users/user.html:6 netbox/templates/users/user.html:14 -#: netbox/users/filtersets.py:97 netbox/users/filtersets.py:164 -#: netbox/users/forms/filtersets.py:85 netbox/users/forms/filtersets.py:126 +#: netbox/users/filtersets.py:107 netbox/users/filtersets.py:174 +#: netbox/users/forms/filtersets.py:84 netbox/users/forms/filtersets.py:125 #: netbox/users/forms/model_forms.py:156 netbox/users/forms/model_forms.py:193 #: netbox/users/tables.py:19 msgid "User" msgstr "用户" +#: netbox/core/forms/filtersets.py:134 netbox/core/tables/change_logging.py:15 +#: netbox/extras/tables/tables.py:609 netbox/extras/tables/tables.py:646 +#: netbox/templates/core/objectchange.html:32 +msgid "Time" +msgstr "时间" + +#: netbox/core/forms/filtersets.py:139 netbox/extras/forms/filtersets.py:445 +msgid "After" +msgstr "之后" + +#: netbox/core/forms/filtersets.py:144 netbox/extras/forms/filtersets.py:450 +msgid "Before" +msgstr "之前" + +#: netbox/core/forms/filtersets.py:148 netbox/core/tables/change_logging.py:29 +#: netbox/extras/forms/model_forms.py:396 +#: netbox/templates/core/objectchange.html:46 +#: netbox/templates/extras/eventrule.html:71 +msgid "Action" +msgstr "动作" + #: netbox/core/forms/model_forms.py:54 netbox/core/tables/data.py:46 #: netbox/templates/core/datafile.html:27 #: netbox/templates/extras/report/base.html:33 @@ -1712,19 +1948,19 @@ msgstr "必须上传文件或选择数据文件进行同步" msgid "Rack Elevations" msgstr "机柜立面图" -#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1449 -#: netbox/dcim/forms/bulk_edit.py:867 netbox/dcim/forms/bulk_edit.py:1255 -#: netbox/dcim/forms/bulk_edit.py:1273 netbox/dcim/tables/racks.py:89 -#: netbox/netbox/navigation/menu.py:276 netbox/netbox/navigation/menu.py:280 +#: netbox/core/forms/model_forms.py:157 netbox/dcim/choices.py:1506 +#: netbox/dcim/forms/bulk_edit.py:969 netbox/dcim/forms/bulk_edit.py:1357 +#: netbox/dcim/forms/bulk_edit.py:1375 netbox/dcim/tables/racks.py:158 +#: netbox/netbox/navigation/menu.py:291 netbox/netbox/navigation/menu.py:295 msgid "Power" msgstr "电源" -#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:141 +#: netbox/core/forms/model_forms.py:159 netbox/netbox/navigation/menu.py:154 #: netbox/templates/core/inc/config_data.html:37 msgid "IPAM" msgstr "IP地址管理" -#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:217 +#: netbox/core/forms/model_forms.py:160 netbox/netbox/navigation/menu.py:230 #: netbox/templates/core/inc/config_data.html:50 #: netbox/vpn/forms/bulk_edit.py:77 netbox/vpn/forms/filtersets.py:43 #: netbox/vpn/forms/model_forms.py:61 netbox/vpn/forms/model_forms.py:146 @@ -1741,7 +1977,9 @@ msgstr "横幅" msgid "Pagination" msgstr "分页" -#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/model_forms.py:67 +#: netbox/core/forms/model_forms.py:163 netbox/extras/forms/bulk_edit.py:92 +#: netbox/extras/forms/filtersets.py:47 netbox/extras/forms/model_forms.py:116 +#: netbox/extras/forms/model_forms.py:129 #: netbox/templates/core/inc/config_data.html:93 msgid "Validation" msgstr "验证" @@ -1751,7 +1989,7 @@ msgstr "验证" msgid "User Preferences" msgstr "用户首选项" -#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:672 +#: netbox/core/forms/model_forms.py:167 netbox/dcim/forms/filtersets.py:732 #: netbox/templates/core/inc/config_data.html:127 #: netbox/users/forms/model_forms.py:65 msgid "Miscellaneous" @@ -1774,10 +2012,48 @@ msgstr "当前变量: {value}" msgid " (default)" msgstr "(默认)" -#: netbox/core/models/config.py:18 netbox/core/models/data.py:282 -#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:50 -#: netbox/extras/models/models.py:758 netbox/netbox/models/features.py:51 -#: netbox/users/models/tokens.py:33 +#: netbox/core/models/change_logging.py:29 +msgid "time" +msgstr "时间" + +#: netbox/core/models/change_logging.py:42 +msgid "user name" +msgstr "用户名" + +#: netbox/core/models/change_logging.py:47 +msgid "request ID" +msgstr "请求ID" + +#: netbox/core/models/change_logging.py:52 netbox/extras/models/staging.py:69 +msgid "action" +msgstr "动作" + +#: netbox/core/models/change_logging.py:86 +msgid "pre-change data" +msgstr "变更前配置" + +#: netbox/core/models/change_logging.py:92 +msgid "post-change data" +msgstr "变更后配置" + +#: netbox/core/models/change_logging.py:106 +msgid "object change" +msgstr "变更的对象" + +#: netbox/core/models/change_logging.py:107 +msgid "object changes" +msgstr "变更的对象" + +#: netbox/core/models/change_logging.py:123 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "此对象类型 ({type}) 不支持更改日志记录。" + +#: netbox/core/models/config.py:18 netbox/core/models/data.py:266 +#: netbox/core/models/files.py:27 netbox/core/models/jobs.py:51 +#: netbox/extras/models/models.py:730 netbox/extras/models/notifications.py:39 +#: netbox/extras/models/notifications.py:186 +#: netbox/netbox/models/features.py:53 netbox/users/models/tokens.py:32 msgid "created" msgstr "已创建" @@ -1810,14 +2086,14 @@ msgstr "当前配置" msgid "Config revision #{id}" msgstr "配置修订#{id}" -#: netbox/core/models/data.py:47 netbox/dcim/models/cables.py:43 -#: netbox/dcim/models/device_component_templates.py:177 -#: netbox/dcim/models/device_component_templates.py:211 -#: netbox/dcim/models/device_component_templates.py:246 -#: netbox/dcim/models/device_component_templates.py:308 -#: netbox/dcim/models/device_component_templates.py:387 -#: netbox/dcim/models/device_component_templates.py:486 -#: netbox/dcim/models/device_component_templates.py:586 +#: netbox/core/models/data.py:44 netbox/dcim/models/cables.py:43 +#: netbox/dcim/models/device_component_templates.py:204 +#: netbox/dcim/models/device_component_templates.py:238 +#: netbox/dcim/models/device_component_templates.py:273 +#: netbox/dcim/models/device_component_templates.py:335 +#: netbox/dcim/models/device_component_templates.py:414 +#: netbox/dcim/models/device_component_templates.py:513 +#: netbox/dcim/models/device_component_templates.py:613 #: netbox/dcim/models/device_components.py:284 #: netbox/dcim/models/device_components.py:313 #: netbox/dcim/models/device_components.py:346 @@ -1825,107 +2101,108 @@ msgstr "配置修订#{id}" #: netbox/dcim/models/device_components.py:606 #: netbox/dcim/models/device_components.py:971 #: netbox/dcim/models/device_components.py:1045 -#: netbox/dcim/models/power.py:102 netbox/dcim/models/racks.py:128 -#: netbox/extras/models/customfields.py:77 netbox/extras/models/search.py:41 +#: netbox/dcim/models/power.py:102 netbox/extras/models/customfields.py:78 +#: netbox/extras/models/search.py:41 #: netbox/virtualization/models/clusters.py:61 netbox/vpn/models/l2vpn.py:32 msgid "type" msgstr "类型" -#: netbox/core/models/data.py:52 netbox/extras/choices.py:37 -#: netbox/extras/models/models.py:192 netbox/extras/tables/tables.py:596 +#: netbox/core/models/data.py:49 netbox/extras/choices.py:37 +#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656 #: netbox/templates/core/datasource.html:58 +#: netbox/templates/core/plugin.html:65 msgid "URL" msgstr "URL" -#: netbox/core/models/data.py:62 -#: netbox/dcim/models/device_component_templates.py:392 +#: netbox/core/models/data.py:59 +#: netbox/dcim/models/device_component_templates.py:419 #: netbox/dcim/models/device_components.py:513 -#: netbox/extras/models/models.py:90 netbox/extras/models/models.py:329 -#: netbox/extras/models/models.py:554 netbox/users/models/permissions.py:29 +#: netbox/extras/models/models.py:70 netbox/extras/models/models.py:301 +#: netbox/extras/models/models.py:526 netbox/users/models/permissions.py:29 msgid "enabled" msgstr "已启用" -#: netbox/core/models/data.py:66 +#: netbox/core/models/data.py:63 msgid "ignore rules" msgstr "忽略规则" -#: netbox/core/models/data.py:68 +#: netbox/core/models/data.py:65 msgid "Patterns (one per line) matching files to ignore when syncing" msgstr "模式(每行一个)匹配同步时要忽略的文件" -#: netbox/core/models/data.py:71 netbox/extras/models/models.py:562 +#: netbox/core/models/data.py:68 netbox/extras/models/models.py:534 msgid "parameters" msgstr "参数" -#: netbox/core/models/data.py:76 +#: netbox/core/models/data.py:73 msgid "last synced" msgstr "最后同步" -#: netbox/core/models/data.py:84 +#: netbox/core/models/data.py:81 msgid "data source" msgstr "数据源" -#: netbox/core/models/data.py:85 +#: netbox/core/models/data.py:82 msgid "data sources" msgstr "数据源" -#: netbox/core/models/data.py:125 +#: netbox/core/models/data.py:122 #, python-brace-format msgid "Unknown backend type: {type}" msgstr "未知后端类型: {type}" -#: netbox/core/models/data.py:180 +#: netbox/core/models/data.py:164 msgid "Cannot initiate sync; syncing already in progress." msgstr "无法启动同步; 同步已在进行中。" -#: netbox/core/models/data.py:193 +#: netbox/core/models/data.py:177 msgid "" "There was an error initializing the backend. A dependency needs to be " "installed: " msgstr "初始化后端时出错。 需要安装依赖:" -#: netbox/core/models/data.py:286 netbox/core/models/files.py:31 -#: netbox/netbox/models/features.py:57 +#: netbox/core/models/data.py:270 netbox/core/models/files.py:31 +#: netbox/netbox/models/features.py:59 msgid "last updated" msgstr "最后更新" -#: netbox/core/models/data.py:296 netbox/dcim/models/cables.py:444 +#: netbox/core/models/data.py:280 netbox/dcim/models/cables.py:444 msgid "path" msgstr "路径" -#: netbox/core/models/data.py:299 +#: netbox/core/models/data.py:283 msgid "File path relative to the data source's root" msgstr "相对于数据源根目录的文件路径" -#: netbox/core/models/data.py:303 netbox/ipam/models/ip.py:503 +#: netbox/core/models/data.py:287 netbox/ipam/models/ip.py:503 msgid "size" msgstr "大小" -#: netbox/core/models/data.py:306 +#: netbox/core/models/data.py:290 msgid "hash" msgstr "哈希值" -#: netbox/core/models/data.py:310 +#: netbox/core/models/data.py:294 msgid "Length must be 64 hexadecimal characters." msgstr "长度必须为 64 个十六进制字符。" -#: netbox/core/models/data.py:312 +#: netbox/core/models/data.py:296 msgid "SHA256 hash of the file data" msgstr "文件数据的 SHA256 哈希值" -#: netbox/core/models/data.py:329 +#: netbox/core/models/data.py:313 msgid "data file" msgstr "数据文件" -#: netbox/core/models/data.py:330 +#: netbox/core/models/data.py:314 msgid "data files" msgstr "数据文件" -#: netbox/core/models/data.py:417 +#: netbox/core/models/data.py:401 msgid "auto sync record" msgstr "自动同步记录" -#: netbox/core/models/data.py:418 +#: netbox/core/models/data.py:402 msgid "auto sync records" msgstr "自动同步记录" @@ -1949,58 +2226,92 @@ msgstr "托管文件" msgid "managed files" msgstr "托管文件" -#: netbox/core/models/jobs.py:54 +#: netbox/core/models/jobs.py:55 msgid "scheduled" msgstr "计划" -#: netbox/core/models/jobs.py:59 +#: netbox/core/models/jobs.py:60 msgid "interval" msgstr "间隔" -#: netbox/core/models/jobs.py:65 +#: netbox/core/models/jobs.py:66 msgid "Recurrence interval (in minutes)" msgstr "重复间隔(以分钟为单位)" -#: netbox/core/models/jobs.py:68 +#: netbox/core/models/jobs.py:69 msgid "started" msgstr "已经开始" -#: netbox/core/models/jobs.py:73 +#: netbox/core/models/jobs.py:74 msgid "completed" msgstr "已经完成" -#: netbox/core/models/jobs.py:91 netbox/extras/models/models.py:121 -#: netbox/extras/models/staging.py:88 +#: netbox/core/models/jobs.py:92 netbox/extras/models/models.py:101 +#: netbox/extras/models/staging.py:87 msgid "data" msgstr "数据" -#: netbox/core/models/jobs.py:96 +#: netbox/core/models/jobs.py:97 msgid "error" msgstr "错误" -#: netbox/core/models/jobs.py:101 +#: netbox/core/models/jobs.py:102 msgid "job ID" msgstr "任务ID" -#: netbox/core/models/jobs.py:112 +#: netbox/core/models/jobs.py:113 msgid "job" msgstr "任务" -#: netbox/core/models/jobs.py:113 +#: netbox/core/models/jobs.py:114 msgid "jobs" msgstr "任务" -#: netbox/core/models/jobs.py:135 +#: netbox/core/models/jobs.py:136 #, python-brace-format msgid "Jobs cannot be assigned to this object type ({type})." msgstr "任务不能分配给此对象类型 ({type})" -#: netbox/core/models/jobs.py:185 +#: netbox/core/models/jobs.py:186 #, python-brace-format msgid "Invalid status for job termination. Choices are: {choices}" msgstr "作业终止状态无效。选项有:{choices}" -#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:45 +#: netbox/core/models/jobs.py:217 +msgid "" +"enqueue() cannot be called with values for both schedule_at and immediate." +msgstr "不能使用 schedule_at 和 immediate 的值调用 enqueue ()。" + +#: netbox/core/signals.py:126 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "保护规则阻止删除: {message}" + +#: netbox/core/tables/change_logging.py:25 +#: netbox/templates/account/profile.html:19 +#: netbox/templates/users/user.html:21 +msgid "Full Name" +msgstr "全名" + +#: netbox/core/tables/change_logging.py:37 netbox/core/tables/jobs.py:21 +#: netbox/extras/choices.py:41 netbox/extras/tables/tables.py:279 +#: netbox/extras/tables/tables.py:297 netbox/extras/tables/tables.py:329 +#: netbox/extras/tables/tables.py:409 netbox/extras/tables/tables.py:470 +#: netbox/extras/tables/tables.py:576 netbox/extras/tables/tables.py:616 +#: netbox/extras/tables/tables.py:653 netbox/netbox/tables/tables.py:244 +#: netbox/templates/core/objectchange.html:58 +#: netbox/templates/extras/eventrule.html:78 +#: netbox/templates/extras/journalentry.html:18 +#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "对象" + +#: netbox/core/tables/change_logging.py:42 +#: netbox/templates/core/objectchange.html:68 +msgid "Request ID" +msgstr "请求ID" + +#: netbox/core/tables/config.py:21 netbox/users/forms/filtersets.py:44 #: netbox/users/tables.py:39 msgid "Is Active" msgstr "激活的" @@ -2015,51 +2326,63 @@ msgid "Last updated" msgstr "最后更新日期" #: netbox/core/tables/jobs.py:10 netbox/core/tables/tasks.py:76 -#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:185 -#: netbox/extras/tables/tables.py:357 netbox/netbox/tables/tables.py:189 +#: netbox/dcim/tables/devicetypes.py:165 netbox/extras/tables/tables.py:216 +#: netbox/extras/tables/tables.py:460 netbox/netbox/tables/tables.py:189 #: netbox/templates/dcim/virtualchassis_edit.html:52 #: netbox/utilities/forms/forms.py:73 -#: netbox/wireless/tables/wirelesslink.py:16 +#: netbox/wireless/tables/wirelesslink.py:17 msgid "ID" msgstr "ID" -#: netbox/core/tables/jobs.py:21 netbox/extras/choices.py:41 -#: netbox/extras/tables/tables.py:248 netbox/extras/tables/tables.py:294 -#: netbox/extras/tables/tables.py:367 netbox/extras/tables/tables.py:485 -#: netbox/extras/tables/tables.py:516 netbox/extras/tables/tables.py:556 -#: netbox/extras/tables/tables.py:593 netbox/netbox/tables/tables.py:244 -#: netbox/templates/extras/eventrule.html:84 -#: netbox/templates/extras/journalentry.html:18 -#: netbox/templates/extras/objectchange.html:58 -#: netbox/tenancy/tables/contacts.py:93 netbox/vpn/tables/l2vpn.py:64 -msgid "Object" -msgstr "对象" - #: netbox/core/tables/jobs.py:35 msgid "Interval" msgstr "间隔" -#: netbox/core/tables/plugins.py:16 netbox/templates/vpn/ipsecprofile.html:44 +#: netbox/core/tables/plugins.py:14 netbox/templates/vpn/ipsecprofile.html:44 #: netbox/vpn/forms/bulk_edit.py:141 netbox/vpn/forms/bulk_import.py:172 #: netbox/vpn/tables/crypto.py:61 msgid "Version" msgstr "版本" -#: netbox/core/tables/plugins.py:20 -msgid "Package" -msgstr "软件包" +#: netbox/core/tables/plugins.py:19 netbox/templates/core/datafile.html:38 +msgid "Last Updated" +msgstr "最后更新" #: netbox/core/tables/plugins.py:23 +msgid "Minimum NetBox Version" +msgstr "Netbox 最低版本" + +#: netbox/core/tables/plugins.py:27 +msgid "Maximum NetBox Version" +msgstr "Netbox 最高版本" + +#: netbox/core/tables/plugins.py:31 netbox/core/tables/plugins.py:74 +msgid "No plugin data found" +msgstr "未找到插件数据" + +#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61 msgid "Author" msgstr "作者" -#: netbox/core/tables/plugins.py:26 -msgid "Author Email" -msgstr "作者电子邮箱" +#: netbox/core/tables/plugins.py:54 +msgid "Installed" +msgstr "已安装" + +#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83 +msgid "Certified" +msgstr "已认证" + +#: netbox/core/tables/plugins.py:60 +msgid "Published" +msgstr "已出版" -#: netbox/core/tables/plugins.py:33 -msgid "No plugins found" -msgstr "没有找到插件" +#: netbox/core/tables/plugins.py:66 +msgid "Installed Version" +msgstr "已安装的版本" + +#: netbox/core/tables/plugins.py:70 +msgid "Latest Version" +msgstr "最新版本" #: netbox/core/tables/tasks.py:18 msgid "Oldest Task" @@ -2073,7 +2396,7 @@ msgstr "Workers" msgid "Host" msgstr "主机" -#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:542 +#: netbox/core/tables/tasks.py:50 netbox/ipam/forms/filtersets.py:535 msgid "Port" msgstr "端口" @@ -2121,62 +2444,72 @@ msgstr "PID" msgid "No workers found" msgstr "没有找到workers" -#: netbox/core/views.py:83 +#: netbox/core/views.py:90 #, python-brace-format msgid "Queued job #{id} to sync {datasource}" msgstr "已排队的作业 #{id} 同步 {datasource}" -#: netbox/core/views.py:243 +#: netbox/core/views.py:319 #, python-brace-format msgid "Restored configuration revision #{id}" msgstr "已恢复配置修订版 #{id}" -#: netbox/core/views.py:336 netbox/core/views.py:379 netbox/core/views.py:455 +#: netbox/core/views.py:412 netbox/core/views.py:455 netbox/core/views.py:531 #, python-brace-format msgid "Job {job_id} not found" msgstr "任务{job_id} 未发现" -#: netbox/core/views.py:387 +#: netbox/core/views.py:463 #, python-brace-format msgid "Job {id} has been deleted." msgstr "工作 {id} 已被删除。" -#: netbox/core/views.py:389 +#: netbox/core/views.py:465 #, python-brace-format msgid "Error deleting job {id}: {error}" msgstr "删除任务时出错 {id}: {error}" -#: netbox/core/views.py:402 netbox/core/views.py:420 +#: netbox/core/views.py:478 netbox/core/views.py:496 #, python-brace-format msgid "Job {id} not found." msgstr "工作 {id} 未找到。" -#: netbox/core/views.py:408 +#: netbox/core/views.py:484 #, python-brace-format msgid "Job {id} has been re-enqueued." msgstr "工作 {id} 已重新排队。" -#: netbox/core/views.py:443 +#: netbox/core/views.py:519 #, python-brace-format msgid "Job {id} has been enqueued." msgstr "工作 {id} 已被排队。" -#: netbox/core/views.py:462 +#: netbox/core/views.py:538 #, python-brace-format msgid "Job {id} has been stopped." msgstr "工作 {id} 已停止。" -#: netbox/core/views.py:464 +#: netbox/core/views.py:540 #, python-brace-format msgid "Failed to stop job {id}" msgstr "无法停止作业 {id}" -#: netbox/dcim/api/serializers_/devices.py:50 -#: netbox/dcim/api/serializers_/devicetypes.py:26 +#: netbox/core/views.py:678 +msgid "Plugins catalog could not be loaded" +msgstr "无法加载插件目录" + +#: netbox/core/views.py:712 +#, python-brace-format +msgid "Plugin {name} not found" +msgstr "插件 {name} 未找到" + +#: netbox/dcim/api/serializers_/devices.py:49 +#: netbox/dcim/api/serializers_/devicetypes.py:25 msgid "Position (U)" msgstr "具体U位" -#: netbox/dcim/api/serializers_/racks.py:45 netbox/templates/dcim/rack.html:30 +#: netbox/dcim/api/serializers_/racks.py:112 +#: netbox/templates/dcim/rack.html:28 msgid "Facility ID" msgstr "标识符ID" @@ -2184,8 +2517,8 @@ msgstr "标识符ID" msgid "Staging" msgstr "暂存" -#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:178 -#: netbox/dcim/choices.py:223 netbox/dcim/choices.py:1462 +#: netbox/dcim/choices.py:23 netbox/dcim/choices.py:189 +#: netbox/dcim/choices.py:234 netbox/dcim/choices.py:1519 #: netbox/virtualization/choices.py:23 netbox/virtualization/choices.py:48 msgid "Decommissioning" msgstr "报废" @@ -2244,27 +2577,39 @@ msgstr "可用" msgid "Deprecated" msgstr "已弃用" -#: netbox/dcim/choices.py:114 netbox/templates/dcim/rack.html:123 +#: netbox/dcim/choices.py:114 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:41 msgid "Millimeters" msgstr "毫米" -#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1484 +#: netbox/dcim/choices.py:115 netbox/dcim/choices.py:1541 msgid "Inches" msgstr "英寸" -#: netbox/dcim/choices.py:140 netbox/dcim/forms/bulk_edit.py:67 -#: netbox/dcim/forms/bulk_edit.py:86 netbox/dcim/forms/bulk_edit.py:172 -#: netbox/dcim/forms/bulk_edit.py:1303 netbox/dcim/forms/bulk_import.py:59 -#: netbox/dcim/forms/bulk_import.py:73 netbox/dcim/forms/bulk_import.py:136 -#: netbox/dcim/forms/bulk_import.py:505 netbox/dcim/forms/bulk_import.py:772 -#: netbox/dcim/forms/bulk_import.py:1027 netbox/dcim/forms/filtersets.py:233 -#: netbox/dcim/forms/model_forms.py:73 netbox/dcim/forms/model_forms.py:92 -#: netbox/dcim/forms/model_forms.py:169 netbox/dcim/forms/model_forms.py:1010 -#: netbox/dcim/forms/model_forms.py:1449 -#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:650 -#: netbox/dcim/tables/devices.py:930 netbox/extras/tables/tables.py:192 -#: netbox/ipam/tables/fhrp.py:59 netbox/ipam/tables/ip.py:378 -#: netbox/ipam/tables/services.py:44 netbox/templates/dcim/interface.html:102 +#: netbox/dcim/choices.py:136 netbox/dcim/choices.py:204 +#: netbox/dcim/choices.py:248 +msgid "Front to rear" +msgstr "从前向后" + +#: netbox/dcim/choices.py:137 netbox/dcim/choices.py:205 +#: netbox/dcim/choices.py:249 +msgid "Rear to front" +msgstr "从后向前" + +#: netbox/dcim/choices.py:151 netbox/dcim/forms/bulk_edit.py:68 +#: netbox/dcim/forms/bulk_edit.py:87 netbox/dcim/forms/bulk_edit.py:173 +#: netbox/dcim/forms/bulk_edit.py:1405 netbox/dcim/forms/bulk_import.py:60 +#: netbox/dcim/forms/bulk_import.py:74 netbox/dcim/forms/bulk_import.py:137 +#: netbox/dcim/forms/bulk_import.py:566 netbox/dcim/forms/bulk_import.py:833 +#: netbox/dcim/forms/bulk_import.py:1088 netbox/dcim/forms/filtersets.py:234 +#: netbox/dcim/forms/model_forms.py:74 netbox/dcim/forms/model_forms.py:93 +#: netbox/dcim/forms/model_forms.py:170 netbox/dcim/forms/model_forms.py:1062 +#: netbox/dcim/forms/model_forms.py:1501 +#: netbox/dcim/forms/object_import.py:176 netbox/dcim/tables/devices.py:653 +#: netbox/dcim/tables/devices.py:865 netbox/dcim/tables/devices.py:950 +#: netbox/extras/tables/tables.py:223 netbox/ipam/tables/fhrp.py:59 +#: netbox/ipam/tables/ip.py:378 netbox/ipam/tables/services.py:44 +#: netbox/templates/dcim/interface.html:102 #: netbox/templates/dcim/interface.html:309 #: netbox/templates/dcim/location.html:41 netbox/templates/dcim/region.html:37 #: netbox/templates/dcim/sitegroup.html:37 @@ -2280,278 +2625,273 @@ msgstr "英寸" #: netbox/tenancy/forms/model_forms.py:68 #: netbox/virtualization/forms/bulk_edit.py:207 #: netbox/virtualization/forms/bulk_import.py:151 -#: netbox/virtualization/tables/virtualmachines.py:155 +#: netbox/virtualization/tables/virtualmachines.py:162 #: netbox/wireless/forms/bulk_edit.py:24 #: netbox/wireless/forms/bulk_import.py:21 #: netbox/wireless/forms/model_forms.py:21 msgid "Parent" msgstr "上级" -#: netbox/dcim/choices.py:141 +#: netbox/dcim/choices.py:152 msgid "Child" msgstr "子类" -#: netbox/dcim/choices.py:155 netbox/templates/dcim/device.html:339 -#: netbox/templates/dcim/rack.html:175 +#: netbox/dcim/choices.py:166 netbox/templates/dcim/device.html:339 +#: netbox/templates/dcim/rack.html:129 #: netbox/templates/dcim/rack_elevation_list.html:20 #: netbox/templates/dcim/rackreservation.html:76 msgid "Front" msgstr "前" -#: netbox/dcim/choices.py:156 netbox/templates/dcim/device.html:345 -#: netbox/templates/dcim/rack.html:181 +#: netbox/dcim/choices.py:167 netbox/templates/dcim/device.html:345 +#: netbox/templates/dcim/rack.html:135 #: netbox/templates/dcim/rack_elevation_list.html:21 #: netbox/templates/dcim/rackreservation.html:82 msgid "Rear" msgstr "后" -#: netbox/dcim/choices.py:175 netbox/dcim/choices.py:221 +#: netbox/dcim/choices.py:186 netbox/dcim/choices.py:232 #: netbox/virtualization/choices.py:46 msgid "Staged" msgstr "已暂存" -#: netbox/dcim/choices.py:177 +#: netbox/dcim/choices.py:188 msgid "Inventory" msgstr "库存中" -#: netbox/dcim/choices.py:193 -msgid "Front to rear" -msgstr "从前向后" - -#: netbox/dcim/choices.py:194 -msgid "Rear to front" -msgstr "从后向前" - -#: netbox/dcim/choices.py:195 +#: netbox/dcim/choices.py:206 netbox/dcim/choices.py:250 msgid "Left to right" msgstr "从左向右" -#: netbox/dcim/choices.py:196 +#: netbox/dcim/choices.py:207 netbox/dcim/choices.py:251 msgid "Right to left" msgstr "从右向左" -#: netbox/dcim/choices.py:197 +#: netbox/dcim/choices.py:208 netbox/dcim/choices.py:252 msgid "Side to rear" msgstr "侧进风后出风" -#: netbox/dcim/choices.py:198 netbox/dcim/choices.py:1257 +#: netbox/dcim/choices.py:209 netbox/dcim/choices.py:253 +#: netbox/dcim/choices.py:1291 msgid "Passive" msgstr "被动" -#: netbox/dcim/choices.py:199 +#: netbox/dcim/choices.py:210 msgid "Mixed" msgstr "混合风道" -#: netbox/dcim/choices.py:447 netbox/dcim/choices.py:693 +#: netbox/dcim/choices.py:478 netbox/dcim/choices.py:726 msgid "NEMA (Non-locking)" msgstr "NEMA(非锁定)" -#: netbox/dcim/choices.py:469 netbox/dcim/choices.py:715 +#: netbox/dcim/choices.py:500 netbox/dcim/choices.py:748 msgid "NEMA (Locking)" msgstr "NEMA(锁定)" -#: netbox/dcim/choices.py:492 netbox/dcim/choices.py:738 +#: netbox/dcim/choices.py:524 netbox/dcim/choices.py:772 msgid "California Style" msgstr "美标" -#: netbox/dcim/choices.py:500 +#: netbox/dcim/choices.py:532 msgid "International/ITA" msgstr "国际通用标准/ITA" -#: netbox/dcim/choices.py:535 netbox/dcim/choices.py:773 +#: netbox/dcim/choices.py:567 netbox/dcim/choices.py:807 msgid "Proprietary" msgstr "专用规格" -#: netbox/dcim/choices.py:543 netbox/dcim/choices.py:782 -#: netbox/dcim/choices.py:1173 netbox/dcim/choices.py:1175 -#: netbox/dcim/choices.py:1380 netbox/dcim/choices.py:1382 -#: netbox/netbox/navigation/menu.py:187 +#: netbox/dcim/choices.py:575 netbox/dcim/choices.py:816 +#: netbox/dcim/choices.py:1207 netbox/dcim/choices.py:1209 +#: netbox/dcim/choices.py:1435 netbox/dcim/choices.py:1437 +#: netbox/netbox/navigation/menu.py:200 msgid "Other" msgstr "其他" -#: netbox/dcim/choices.py:746 +#: netbox/dcim/choices.py:780 msgid "ITA/International" msgstr "ITA/国际通用标准" -#: netbox/dcim/choices.py:812 +#: netbox/dcim/choices.py:846 msgid "Physical" msgstr "物理" -#: netbox/dcim/choices.py:813 netbox/dcim/choices.py:979 +#: netbox/dcim/choices.py:847 netbox/dcim/choices.py:1013 msgid "Virtual" msgstr "虚拟" -#: netbox/dcim/choices.py:814 netbox/dcim/choices.py:1052 -#: netbox/dcim/forms/bulk_edit.py:1413 netbox/dcim/forms/filtersets.py:1270 -#: netbox/dcim/forms/model_forms.py:936 netbox/dcim/forms/model_forms.py:1344 -#: netbox/netbox/navigation/menu.py:127 netbox/netbox/navigation/menu.py:131 +#: netbox/dcim/choices.py:848 netbox/dcim/choices.py:1086 +#: netbox/dcim/forms/bulk_edit.py:1515 netbox/dcim/forms/filtersets.py:1330 +#: netbox/dcim/forms/model_forms.py:988 netbox/dcim/forms/model_forms.py:1396 +#: netbox/netbox/navigation/menu.py:140 netbox/netbox/navigation/menu.py:144 #: netbox/templates/dcim/interface.html:210 msgid "Wireless" msgstr "无线" -#: netbox/dcim/choices.py:977 +#: netbox/dcim/choices.py:1011 msgid "Virtual interfaces" msgstr "虚拟接口" -#: netbox/dcim/choices.py:980 netbox/dcim/forms/bulk_edit.py:1308 -#: netbox/dcim/forms/bulk_import.py:779 netbox/dcim/forms/model_forms.py:922 -#: netbox/dcim/tables/devices.py:654 netbox/templates/dcim/interface.html:106 +#: netbox/dcim/choices.py:1014 netbox/dcim/forms/bulk_edit.py:1410 +#: netbox/dcim/forms/bulk_import.py:840 netbox/dcim/forms/model_forms.py:974 +#: netbox/dcim/tables/devices.py:657 netbox/templates/dcim/interface.html:106 #: netbox/templates/virtualization/vminterface.html:43 #: netbox/virtualization/forms/bulk_edit.py:212 #: netbox/virtualization/forms/bulk_import.py:158 -#: netbox/virtualization/tables/virtualmachines.py:159 +#: netbox/virtualization/tables/virtualmachines.py:166 msgid "Bridge" msgstr "桥接" -#: netbox/dcim/choices.py:981 +#: netbox/dcim/choices.py:1015 msgid "Link Aggregation Group (LAG)" msgstr "链路聚合组(LAG)" -#: netbox/dcim/choices.py:985 +#: netbox/dcim/choices.py:1019 msgid "Ethernet (fixed)" msgstr "以太网(固定类型)" -#: netbox/dcim/choices.py:1000 +#: netbox/dcim/choices.py:1034 msgid "Ethernet (modular)" msgstr "以太网(模块)" -#: netbox/dcim/choices.py:1036 +#: netbox/dcim/choices.py:1070 msgid "Ethernet (backplane)" msgstr "以太网(背板)" -#: netbox/dcim/choices.py:1067 +#: netbox/dcim/choices.py:1101 msgid "Cellular" msgstr "蜂窝网络" -#: netbox/dcim/choices.py:1119 netbox/dcim/forms/filtersets.py:313 -#: netbox/dcim/forms/filtersets.py:749 netbox/dcim/forms/filtersets.py:903 -#: netbox/dcim/forms/filtersets.py:1482 +#: netbox/dcim/choices.py:1153 netbox/dcim/forms/filtersets.py:383 +#: netbox/dcim/forms/filtersets.py:809 netbox/dcim/forms/filtersets.py:963 +#: netbox/dcim/forms/filtersets.py:1542 #: netbox/templates/dcim/inventoryitem.html:52 #: netbox/templates/dcim/virtualchassis_edit.html:54 msgid "Serial" msgstr "串口" -#: netbox/dcim/choices.py:1134 +#: netbox/dcim/choices.py:1168 msgid "Coaxial" msgstr "同轴电缆接口" -#: netbox/dcim/choices.py:1154 +#: netbox/dcim/choices.py:1188 msgid "Stacking" msgstr "堆叠" -#: netbox/dcim/choices.py:1204 +#: netbox/dcim/choices.py:1238 msgid "Half" msgstr "半双工" -#: netbox/dcim/choices.py:1205 +#: netbox/dcim/choices.py:1239 msgid "Full" msgstr "全双工" -#: netbox/dcim/choices.py:1206 netbox/netbox/preferences.py:31 +#: netbox/dcim/choices.py:1240 netbox/netbox/preferences.py:31 #: netbox/wireless/choices.py:480 msgid "Auto" msgstr "自动" -#: netbox/dcim/choices.py:1217 +#: netbox/dcim/choices.py:1251 msgid "Access" msgstr "接入" -#: netbox/dcim/choices.py:1218 netbox/ipam/tables/vlans.py:168 -#: netbox/ipam/tables/vlans.py:213 +#: netbox/dcim/choices.py:1252 netbox/ipam/tables/vlans.py:172 +#: netbox/ipam/tables/vlans.py:217 #: netbox/templates/dcim/inc/interface_vlans_table.html:7 msgid "Tagged" msgstr "Trunk口" -#: netbox/dcim/choices.py:1219 +#: netbox/dcim/choices.py:1253 msgid "Tagged (All)" msgstr "Trunk口(允许所有VLAN)" -#: netbox/dcim/choices.py:1248 +#: netbox/dcim/choices.py:1282 msgid "IEEE Standard" msgstr "IEEE标准" -#: netbox/dcim/choices.py:1259 +#: netbox/dcim/choices.py:1293 msgid "Passive 24V (2-pair)" msgstr "24V(2对供电)" -#: netbox/dcim/choices.py:1260 +#: netbox/dcim/choices.py:1294 msgid "Passive 24V (4-pair)" msgstr "24V(4对供电)" -#: netbox/dcim/choices.py:1261 +#: netbox/dcim/choices.py:1295 msgid "Passive 48V (2-pair)" msgstr "48V(2对供电)" -#: netbox/dcim/choices.py:1262 +#: netbox/dcim/choices.py:1296 msgid "Passive 48V (4-pair)" msgstr "48V(4对供电)" -#: netbox/dcim/choices.py:1324 netbox/dcim/choices.py:1420 +#: netbox/dcim/choices.py:1366 netbox/dcim/choices.py:1476 msgid "Copper" msgstr "铜缆" -#: netbox/dcim/choices.py:1347 +#: netbox/dcim/choices.py:1389 msgid "Fiber Optic" msgstr "光纤" -#: netbox/dcim/choices.py:1436 +#: netbox/dcim/choices.py:1422 netbox/dcim/choices.py:1505 +msgid "USB" +msgstr "USB" + +#: netbox/dcim/choices.py:1492 msgid "Fiber" msgstr "光纤" -#: netbox/dcim/choices.py:1460 netbox/dcim/forms/filtersets.py:1167 +#: netbox/dcim/choices.py:1517 netbox/dcim/forms/filtersets.py:1227 msgid "Connected" msgstr "已连接" -#: netbox/dcim/choices.py:1479 +#: netbox/dcim/choices.py:1536 netbox/wireless/choices.py:497 msgid "Kilometers" msgstr "公里" -#: netbox/dcim/choices.py:1480 netbox/templates/dcim/cable_trace.html:65 +#: netbox/dcim/choices.py:1537 netbox/templates/dcim/cable_trace.html:65 +#: netbox/wireless/choices.py:498 msgid "Meters" msgstr "米" -#: netbox/dcim/choices.py:1481 +#: netbox/dcim/choices.py:1538 msgid "Centimeters" msgstr "厘米" -#: netbox/dcim/choices.py:1482 +#: netbox/dcim/choices.py:1539 netbox/wireless/choices.py:499 msgid "Miles" msgstr "英里" -#: netbox/dcim/choices.py:1483 netbox/templates/dcim/cable_trace.html:66 +#: netbox/dcim/choices.py:1540 netbox/templates/dcim/cable_trace.html:66 +#: netbox/wireless/choices.py:500 msgid "Feet" msgstr "英尺" -#: netbox/dcim/choices.py:1499 netbox/templates/dcim/device.html:327 -#: netbox/templates/dcim/rack.html:152 +#: netbox/dcim/choices.py:1556 netbox/templates/dcim/device.html:327 +#: netbox/templates/dcim/rack.html:106 msgid "Kilograms" msgstr "千克" -#: netbox/dcim/choices.py:1500 +#: netbox/dcim/choices.py:1557 msgid "Grams" msgstr "克" -#: netbox/dcim/choices.py:1501 netbox/templates/dcim/rack.html:153 +#: netbox/dcim/choices.py:1558 netbox/templates/dcim/rack.html:107 msgid "Pounds" msgstr "磅" -#: netbox/dcim/choices.py:1502 +#: netbox/dcim/choices.py:1559 msgid "Ounces" msgstr "盎司" -#: netbox/dcim/choices.py:1548 netbox/tenancy/choices.py:17 -msgid "Primary" -msgstr "主要联系人" - -#: netbox/dcim/choices.py:1549 +#: netbox/dcim/choices.py:1606 msgid "Redundant" msgstr "冗余" -#: netbox/dcim/choices.py:1570 +#: netbox/dcim/choices.py:1627 msgid "Single phase" msgstr "单相电" -#: netbox/dcim/choices.py:1571 +#: netbox/dcim/choices.py:1628 msgid "Three-phase" msgstr "三相" @@ -2565,330 +2905,335 @@ msgstr "MAC地址格式无效:{value}" msgid "Invalid WWN format: {value}" msgstr "WWN格式无效:{value}" -#: netbox/dcim/filtersets.py:85 +#: netbox/dcim/filtersets.py:86 msgid "Parent region (ID)" msgstr "上一级地区(ID)" -#: netbox/dcim/filtersets.py:91 +#: netbox/dcim/filtersets.py:92 msgid "Parent region (slug)" msgstr "上一级地区(缩写)" -#: netbox/dcim/filtersets.py:115 +#: netbox/dcim/filtersets.py:116 msgid "Parent site group (ID)" msgstr "上一级站点组(ID)" -#: netbox/dcim/filtersets.py:121 +#: netbox/dcim/filtersets.py:122 msgid "Parent site group (slug)" msgstr "上一级站点组(缩写)" -#: netbox/dcim/filtersets.py:163 netbox/ipam/filtersets.py:841 -#: netbox/ipam/filtersets.py:979 +#: netbox/dcim/filtersets.py:164 netbox/extras/filtersets.py:364 +#: netbox/ipam/filtersets.py:841 netbox/ipam/filtersets.py:993 msgid "Group (ID)" msgstr "组(ID)" -#: netbox/dcim/filtersets.py:169 +#: netbox/dcim/filtersets.py:170 msgid "Group (slug)" msgstr "组(缩写)" -#: netbox/dcim/filtersets.py:175 netbox/dcim/filtersets.py:180 +#: netbox/dcim/filtersets.py:176 netbox/dcim/filtersets.py:181 msgid "AS (ID)" msgstr "AS (ID)" -#: netbox/dcim/filtersets.py:245 +#: netbox/dcim/filtersets.py:246 msgid "Parent location (ID)" msgstr "父级位置(ID)" -#: netbox/dcim/filtersets.py:251 +#: netbox/dcim/filtersets.py:252 msgid "Parent location (slug)" msgstr "父级位置(缩写)" -#: netbox/dcim/filtersets.py:257 netbox/dcim/filtersets.py:333 -#: netbox/dcim/filtersets.py:432 netbox/dcim/filtersets.py:1005 -#: netbox/dcim/filtersets.py:1352 netbox/dcim/filtersets.py:2126 +#: netbox/dcim/filtersets.py:258 netbox/dcim/filtersets.py:369 +#: netbox/dcim/filtersets.py:490 netbox/dcim/filtersets.py:1057 +#: netbox/dcim/filtersets.py:1404 netbox/dcim/filtersets.py:2182 msgid "Location (ID)" msgstr "位置(ID)" -#: netbox/dcim/filtersets.py:264 netbox/dcim/filtersets.py:340 -#: netbox/dcim/filtersets.py:439 netbox/dcim/filtersets.py:1358 -#: netbox/extras/filtersets.py:494 +#: netbox/dcim/filtersets.py:265 netbox/dcim/filtersets.py:376 +#: netbox/dcim/filtersets.py:497 netbox/dcim/filtersets.py:1410 +#: netbox/extras/filtersets.py:542 msgid "Location (slug)" msgstr "位置(缩写)" -#: netbox/dcim/filtersets.py:354 netbox/dcim/filtersets.py:840 -#: netbox/dcim/filtersets.py:942 netbox/dcim/filtersets.py:1794 +#: netbox/dcim/filtersets.py:296 netbox/dcim/filtersets.py:381 +#: netbox/dcim/filtersets.py:539 netbox/dcim/filtersets.py:678 +#: netbox/dcim/filtersets.py:882 netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:973 netbox/dcim/filtersets.py:1306 +#: netbox/dcim/filtersets.py:1840 +msgid "Manufacturer (ID)" +msgstr "厂商(ID)" + +#: netbox/dcim/filtersets.py:302 netbox/dcim/filtersets.py:387 +#: netbox/dcim/filtersets.py:545 netbox/dcim/filtersets.py:684 +#: netbox/dcim/filtersets.py:888 netbox/dcim/filtersets.py:939 +#: netbox/dcim/filtersets.py:979 netbox/dcim/filtersets.py:1312 +#: netbox/dcim/filtersets.py:1846 +msgid "Manufacturer (slug)" +msgstr "厂商 (缩写)" + +#: netbox/dcim/filtersets.py:393 +msgid "Rack type (slug)" +msgstr "机架类型(弹头)" + +#: netbox/dcim/filtersets.py:397 +msgid "Rack type (ID)" +msgstr "机架类型 (ID)" + +#: netbox/dcim/filtersets.py:411 netbox/dcim/filtersets.py:892 +#: netbox/dcim/filtersets.py:994 netbox/dcim/filtersets.py:1850 #: netbox/ipam/filtersets.py:381 netbox/ipam/filtersets.py:493 -#: netbox/ipam/filtersets.py:989 netbox/virtualization/filtersets.py:210 +#: netbox/ipam/filtersets.py:1003 netbox/virtualization/filtersets.py:210 msgid "Role (ID)" msgstr "角色(ID)" -#: netbox/dcim/filtersets.py:360 netbox/dcim/filtersets.py:846 -#: netbox/dcim/filtersets.py:948 netbox/dcim/filtersets.py:1800 -#: netbox/extras/filtersets.py:510 netbox/ipam/filtersets.py:387 -#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:995 +#: netbox/dcim/filtersets.py:417 netbox/dcim/filtersets.py:898 +#: netbox/dcim/filtersets.py:1000 netbox/dcim/filtersets.py:1856 +#: netbox/extras/filtersets.py:558 netbox/ipam/filtersets.py:387 +#: netbox/ipam/filtersets.py:499 netbox/ipam/filtersets.py:1009 #: netbox/virtualization/filtersets.py:216 msgid "Role (slug)" msgstr "角色 (缩写)" -#: netbox/dcim/filtersets.py:389 netbox/dcim/filtersets.py:1010 -#: netbox/dcim/filtersets.py:1363 netbox/dcim/filtersets.py:2188 +#: netbox/dcim/filtersets.py:447 netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1415 netbox/dcim/filtersets.py:2244 msgid "Rack (ID)" msgstr "机柜(ID)" -#: netbox/dcim/filtersets.py:443 netbox/extras/filtersets.py:282 -#: netbox/extras/filtersets.py:326 netbox/extras/filtersets.py:365 -#: netbox/extras/filtersets.py:664 netbox/users/filtersets.py:28 -msgid "User (ID)" -msgstr "用户(ID)" - -#: netbox/dcim/filtersets.py:449 netbox/extras/filtersets.py:288 -#: netbox/extras/filtersets.py:332 netbox/extras/filtersets.py:371 -#: netbox/users/filtersets.py:103 netbox/users/filtersets.py:170 +#: netbox/dcim/filtersets.py:507 netbox/extras/filtersets.py:293 +#: netbox/extras/filtersets.py:337 netbox/extras/filtersets.py:359 +#: netbox/extras/filtersets.py:419 netbox/users/filtersets.py:113 +#: netbox/users/filtersets.py:180 msgid "User (name)" msgstr "用户(名称)" -#: netbox/dcim/filtersets.py:481 netbox/dcim/filtersets.py:620 -#: netbox/dcim/filtersets.py:830 netbox/dcim/filtersets.py:881 -#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:1254 -#: netbox/dcim/filtersets.py:1784 -msgid "Manufacturer (ID)" -msgstr "厂商(ID)" - -#: netbox/dcim/filtersets.py:487 netbox/dcim/filtersets.py:626 -#: netbox/dcim/filtersets.py:836 netbox/dcim/filtersets.py:887 -#: netbox/dcim/filtersets.py:927 netbox/dcim/filtersets.py:1260 -#: netbox/dcim/filtersets.py:1790 -msgid "Manufacturer (slug)" -msgstr "厂商 (缩写)" - -#: netbox/dcim/filtersets.py:491 +#: netbox/dcim/filtersets.py:549 msgid "Default platform (ID)" msgstr "默认系统平台(ID)" -#: netbox/dcim/filtersets.py:497 +#: netbox/dcim/filtersets.py:555 msgid "Default platform (slug)" msgstr "默认系统平台(缩写)" -#: netbox/dcim/filtersets.py:500 netbox/dcim/forms/filtersets.py:462 +#: netbox/dcim/filtersets.py:558 netbox/dcim/forms/filtersets.py:517 msgid "Has a front image" msgstr "有前面板图片" -#: netbox/dcim/filtersets.py:504 netbox/dcim/forms/filtersets.py:469 +#: netbox/dcim/filtersets.py:562 netbox/dcim/forms/filtersets.py:524 msgid "Has a rear image" msgstr "有后面板图片" -#: netbox/dcim/filtersets.py:509 netbox/dcim/filtersets.py:630 -#: netbox/dcim/filtersets.py:1079 netbox/dcim/forms/filtersets.py:476 -#: netbox/dcim/forms/filtersets.py:572 netbox/dcim/forms/filtersets.py:788 +#: netbox/dcim/filtersets.py:567 netbox/dcim/filtersets.py:688 +#: netbox/dcim/filtersets.py:1131 netbox/dcim/forms/filtersets.py:531 +#: netbox/dcim/forms/filtersets.py:627 netbox/dcim/forms/filtersets.py:848 msgid "Has console ports" msgstr "具有console端口" -#: netbox/dcim/filtersets.py:513 netbox/dcim/filtersets.py:634 -#: netbox/dcim/filtersets.py:1083 netbox/dcim/forms/filtersets.py:483 -#: netbox/dcim/forms/filtersets.py:579 netbox/dcim/forms/filtersets.py:795 +#: netbox/dcim/filtersets.py:571 netbox/dcim/filtersets.py:692 +#: netbox/dcim/filtersets.py:1135 netbox/dcim/forms/filtersets.py:538 +#: netbox/dcim/forms/filtersets.py:634 netbox/dcim/forms/filtersets.py:855 msgid "Has console server ports" msgstr "具有console 服务器端口" -#: netbox/dcim/filtersets.py:517 netbox/dcim/filtersets.py:638 -#: netbox/dcim/filtersets.py:1087 netbox/dcim/forms/filtersets.py:490 -#: netbox/dcim/forms/filtersets.py:586 netbox/dcim/forms/filtersets.py:802 +#: netbox/dcim/filtersets.py:575 netbox/dcim/filtersets.py:696 +#: netbox/dcim/filtersets.py:1139 netbox/dcim/forms/filtersets.py:545 +#: netbox/dcim/forms/filtersets.py:641 netbox/dcim/forms/filtersets.py:862 msgid "Has power ports" msgstr "有电源接口" -#: netbox/dcim/filtersets.py:521 netbox/dcim/filtersets.py:642 -#: netbox/dcim/filtersets.py:1091 netbox/dcim/forms/filtersets.py:497 -#: netbox/dcim/forms/filtersets.py:593 netbox/dcim/forms/filtersets.py:809 +#: netbox/dcim/filtersets.py:579 netbox/dcim/filtersets.py:700 +#: netbox/dcim/filtersets.py:1143 netbox/dcim/forms/filtersets.py:552 +#: netbox/dcim/forms/filtersets.py:648 netbox/dcim/forms/filtersets.py:869 msgid "Has power outlets" msgstr "有电源插座" -#: netbox/dcim/filtersets.py:525 netbox/dcim/filtersets.py:646 -#: netbox/dcim/filtersets.py:1095 netbox/dcim/forms/filtersets.py:504 -#: netbox/dcim/forms/filtersets.py:600 netbox/dcim/forms/filtersets.py:816 +#: netbox/dcim/filtersets.py:583 netbox/dcim/filtersets.py:704 +#: netbox/dcim/filtersets.py:1147 netbox/dcim/forms/filtersets.py:559 +#: netbox/dcim/forms/filtersets.py:655 netbox/dcim/forms/filtersets.py:876 msgid "Has interfaces" msgstr "有接口" -#: netbox/dcim/filtersets.py:529 netbox/dcim/filtersets.py:650 -#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/filtersets.py:511 -#: netbox/dcim/forms/filtersets.py:607 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/filtersets.py:587 netbox/dcim/filtersets.py:708 +#: netbox/dcim/filtersets.py:1151 netbox/dcim/forms/filtersets.py:566 +#: netbox/dcim/forms/filtersets.py:662 netbox/dcim/forms/filtersets.py:883 msgid "Has pass-through ports" msgstr "有直通端口" -#: netbox/dcim/filtersets.py:533 netbox/dcim/filtersets.py:1103 -#: netbox/dcim/forms/filtersets.py:525 +#: netbox/dcim/filtersets.py:591 netbox/dcim/filtersets.py:1155 +#: netbox/dcim/forms/filtersets.py:580 msgid "Has module bays" msgstr "有模块托架" -#: netbox/dcim/filtersets.py:537 netbox/dcim/filtersets.py:1107 -#: netbox/dcim/forms/filtersets.py:518 +#: netbox/dcim/filtersets.py:595 netbox/dcim/filtersets.py:1159 +#: netbox/dcim/forms/filtersets.py:573 msgid "Has device bays" msgstr "有设备托架" -#: netbox/dcim/filtersets.py:541 netbox/dcim/forms/filtersets.py:532 +#: netbox/dcim/filtersets.py:599 netbox/dcim/forms/filtersets.py:587 msgid "Has inventory items" msgstr "有库存项" -#: netbox/dcim/filtersets.py:698 netbox/dcim/filtersets.py:937 -#: netbox/dcim/filtersets.py:1384 +#: netbox/dcim/filtersets.py:756 netbox/dcim/filtersets.py:989 +#: netbox/dcim/filtersets.py:1436 msgid "Device type (ID)" msgstr "设备型号(ID)" -#: netbox/dcim/filtersets.py:717 netbox/dcim/filtersets.py:1265 +#: netbox/dcim/filtersets.py:772 netbox/dcim/filtersets.py:1317 msgid "Module type (ID)" msgstr "模块类型(ID)" -#: netbox/dcim/filtersets.py:752 netbox/dcim/filtersets.py:1539 +#: netbox/dcim/filtersets.py:804 netbox/dcim/filtersets.py:1591 msgid "Power port (ID)" msgstr "电源接口(ID)" -#: netbox/dcim/filtersets.py:826 netbox/dcim/filtersets.py:1780 +#: netbox/dcim/filtersets.py:878 netbox/dcim/filtersets.py:1836 msgid "Parent inventory item (ID)" msgstr "上一级库存项(ID)" -#: netbox/dcim/filtersets.py:869 netbox/dcim/filtersets.py:895 -#: netbox/dcim/filtersets.py:1075 netbox/virtualization/filtersets.py:238 +#: netbox/dcim/filtersets.py:921 netbox/dcim/filtersets.py:947 +#: netbox/dcim/filtersets.py:1127 netbox/virtualization/filtersets.py:238 msgid "Config template (ID)" msgstr "配置模板(ID)" -#: netbox/dcim/filtersets.py:933 +#: netbox/dcim/filtersets.py:985 msgid "Device type (slug)" msgstr "设备型号 (缩写)" -#: netbox/dcim/filtersets.py:953 +#: netbox/dcim/filtersets.py:1005 msgid "Parent Device (ID)" msgstr "上一级设备(ID)" -#: netbox/dcim/filtersets.py:957 netbox/virtualization/filtersets.py:220 +#: netbox/dcim/filtersets.py:1009 netbox/virtualization/filtersets.py:220 msgid "Platform (ID)" msgstr "平台(ID)" -#: netbox/dcim/filtersets.py:963 netbox/extras/filtersets.py:521 +#: netbox/dcim/filtersets.py:1015 netbox/extras/filtersets.py:569 #: netbox/virtualization/filtersets.py:226 msgid "Platform (slug)" msgstr "平台(缩写)" -#: netbox/dcim/filtersets.py:999 netbox/dcim/filtersets.py:1347 -#: netbox/dcim/filtersets.py:1878 netbox/dcim/filtersets.py:2120 -#: netbox/dcim/filtersets.py:2179 +#: netbox/dcim/filtersets.py:1051 netbox/dcim/filtersets.py:1399 +#: netbox/dcim/filtersets.py:1934 netbox/dcim/filtersets.py:2176 +#: netbox/dcim/filtersets.py:2235 msgid "Site name (slug)" msgstr "站点名字 (缩写)" -#: netbox/dcim/filtersets.py:1015 +#: netbox/dcim/filtersets.py:1067 msgid "Parent bay (ID)" msgstr "父级托架(IE)" -#: netbox/dcim/filtersets.py:1019 +#: netbox/dcim/filtersets.py:1071 msgid "VM cluster (ID)" msgstr "虚拟机集群(ID)" -#: netbox/dcim/filtersets.py:1025 netbox/extras/filtersets.py:543 +#: netbox/dcim/filtersets.py:1077 netbox/extras/filtersets.py:591 #: netbox/virtualization/filtersets.py:136 msgid "Cluster group (slug)" msgstr "集群组(缩写)" -#: netbox/dcim/filtersets.py:1030 netbox/virtualization/filtersets.py:130 +#: netbox/dcim/filtersets.py:1082 netbox/virtualization/filtersets.py:130 msgid "Cluster group (ID)" msgstr "集群组(ID)" -#: netbox/dcim/filtersets.py:1036 +#: netbox/dcim/filtersets.py:1088 msgid "Device model (slug)" msgstr "设备模块(缩写)" -#: netbox/dcim/filtersets.py:1047 netbox/dcim/forms/bulk_edit.py:423 +#: netbox/dcim/filtersets.py:1099 netbox/dcim/forms/bulk_edit.py:516 msgid "Is full depth" msgstr "是否全尺寸" -#: netbox/dcim/filtersets.py:1051 netbox/dcim/forms/common.py:18 -#: netbox/dcim/forms/filtersets.py:758 netbox/dcim/forms/filtersets.py:1325 +#: netbox/dcim/filtersets.py:1103 netbox/dcim/forms/common.py:18 +#: netbox/dcim/forms/filtersets.py:818 netbox/dcim/forms/filtersets.py:1385 #: netbox/dcim/models/device_components.py:519 #: netbox/virtualization/filtersets.py:230 -#: netbox/virtualization/filtersets.py:297 +#: netbox/virtualization/filtersets.py:301 #: netbox/virtualization/forms/filtersets.py:172 -#: netbox/virtualization/forms/filtersets.py:219 +#: netbox/virtualization/forms/filtersets.py:223 msgid "MAC address" msgstr "MAC 地址" -#: netbox/dcim/filtersets.py:1058 netbox/dcim/filtersets.py:1222 -#: netbox/dcim/forms/filtersets.py:767 netbox/dcim/forms/filtersets.py:870 +#: netbox/dcim/filtersets.py:1110 netbox/dcim/filtersets.py:1274 +#: netbox/dcim/forms/filtersets.py:827 netbox/dcim/forms/filtersets.py:930 #: netbox/virtualization/filtersets.py:234 #: netbox/virtualization/forms/filtersets.py:176 msgid "Has a primary IP" msgstr "有主IP" -#: netbox/dcim/filtersets.py:1062 +#: netbox/dcim/filtersets.py:1114 msgid "Has an out-of-band IP" msgstr "有带外管理IP" -#: netbox/dcim/filtersets.py:1067 +#: netbox/dcim/filtersets.py:1119 msgid "Virtual chassis (ID)" msgstr "堆叠 (ID)" -#: netbox/dcim/filtersets.py:1071 +#: netbox/dcim/filtersets.py:1123 msgid "Is a virtual chassis member" msgstr "是堆叠成员" -#: netbox/dcim/filtersets.py:1112 +#: netbox/dcim/filtersets.py:1164 msgid "OOB IP (ID)" msgstr "带外管理IP(ID)" -#: netbox/dcim/filtersets.py:1116 +#: netbox/dcim/filtersets.py:1168 msgid "Has virtual device context" msgstr "有虚拟设备上下文" -#: netbox/dcim/filtersets.py:1205 +#: netbox/dcim/filtersets.py:1257 msgid "VDC (ID)" msgstr "VDC (ID)" -#: netbox/dcim/filtersets.py:1210 +#: netbox/dcim/filtersets.py:1262 msgid "Device model" msgstr "设备型号" -#: netbox/dcim/filtersets.py:1215 netbox/ipam/filtersets.py:632 -#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:420 +#: netbox/dcim/filtersets.py:1267 netbox/ipam/filtersets.py:632 +#: netbox/vpn/filtersets.py:102 netbox/vpn/filtersets.py:412 msgid "Interface (ID)" msgstr "接口(ID)" -#: netbox/dcim/filtersets.py:1271 +#: netbox/dcim/filtersets.py:1323 msgid "Module type (model)" msgstr "模块类型(模块)" -#: netbox/dcim/filtersets.py:1277 -msgid "Module Bay (ID)" -msgstr "设备板卡插槽 (ID)" +#: netbox/dcim/filtersets.py:1329 +msgid "Module bay (ID)" +msgstr "模块托架 (ID)" -#: netbox/dcim/filtersets.py:1281 netbox/dcim/filtersets.py:1373 +#: netbox/dcim/filtersets.py:1333 netbox/dcim/filtersets.py:1425 #: netbox/ipam/filtersets.py:611 netbox/ipam/filtersets.py:851 -#: netbox/ipam/filtersets.py:1075 netbox/virtualization/filtersets.py:161 -#: netbox/vpn/filtersets.py:398 +#: netbox/ipam/filtersets.py:1089 netbox/virtualization/filtersets.py:161 +#: netbox/vpn/filtersets.py:390 msgid "Device (ID)" msgstr "设备(ID)" -#: netbox/dcim/filtersets.py:1369 +#: netbox/dcim/filtersets.py:1421 msgid "Rack (name)" msgstr "机柜(名称)" -#: netbox/dcim/filtersets.py:1379 netbox/ipam/filtersets.py:606 -#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1081 -#: netbox/vpn/filtersets.py:393 +#: netbox/dcim/filtersets.py:1431 netbox/ipam/filtersets.py:606 +#: netbox/ipam/filtersets.py:846 netbox/ipam/filtersets.py:1095 +#: netbox/vpn/filtersets.py:385 msgid "Device (name)" msgstr "设备(名称)" -#: netbox/dcim/filtersets.py:1390 +#: netbox/dcim/filtersets.py:1442 msgid "Device type (model)" msgstr "设备型号 (model)" -#: netbox/dcim/filtersets.py:1395 +#: netbox/dcim/filtersets.py:1447 msgid "Device role (ID)" msgstr "设备角色(ID)" -#: netbox/dcim/filtersets.py:1401 +#: netbox/dcim/filtersets.py:1453 msgid "Device role (slug)" msgstr "设备角色(缩写)" -#: netbox/dcim/filtersets.py:1406 +#: netbox/dcim/filtersets.py:1458 msgid "Virtual Chassis (ID)" msgstr "堆叠(ID)" -#: netbox/dcim/filtersets.py:1412 netbox/dcim/forms/filtersets.py:108 -#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:66 +#: netbox/dcim/filtersets.py:1464 netbox/dcim/forms/filtersets.py:109 +#: netbox/dcim/tables/devices.py:206 netbox/netbox/navigation/menu.py:79 #: netbox/templates/dcim/device.html:120 #: netbox/templates/dcim/device_edit.html:93 #: netbox/templates/dcim/virtualchassis.html:20 @@ -2897,33 +3242,33 @@ msgstr "堆叠(ID)" msgid "Virtual Chassis" msgstr "堆叠" -#: netbox/dcim/filtersets.py:1436 +#: netbox/dcim/filtersets.py:1488 msgid "Module (ID)" msgstr "模块(ID)" -#: netbox/dcim/filtersets.py:1443 +#: netbox/dcim/filtersets.py:1495 msgid "Cable (ID)" msgstr "线缆(ID)" -#: netbox/dcim/filtersets.py:1552 netbox/ipam/forms/bulk_import.py:188 +#: netbox/dcim/filtersets.py:1604 netbox/ipam/forms/bulk_import.py:189 #: netbox/vpn/forms/bulk_import.py:308 msgid "Assigned VLAN" msgstr "指定VLAN" -#: netbox/dcim/filtersets.py:1556 +#: netbox/dcim/filtersets.py:1608 msgid "Assigned VID" msgstr "指定VID" -#: netbox/dcim/filtersets.py:1561 netbox/dcim/forms/bulk_edit.py:1387 -#: netbox/dcim/forms/bulk_import.py:830 netbox/dcim/forms/filtersets.py:1368 -#: netbox/dcim/forms/model_forms.py:1325 +#: netbox/dcim/filtersets.py:1613 netbox/dcim/forms/bulk_edit.py:1489 +#: netbox/dcim/forms/bulk_import.py:891 netbox/dcim/forms/filtersets.py:1428 +#: netbox/dcim/forms/model_forms.py:1377 #: netbox/dcim/models/device_components.py:712 -#: netbox/dcim/tables/devices.py:620 netbox/ipam/filtersets.py:316 +#: netbox/dcim/tables/devices.py:623 netbox/ipam/filtersets.py:316 #: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483 #: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595 -#: netbox/ipam/forms/bulk_edit.py:240 netbox/ipam/forms/bulk_edit.py:296 -#: netbox/ipam/forms/bulk_edit.py:338 netbox/ipam/forms/bulk_import.py:156 -#: netbox/ipam/forms/bulk_import.py:242 netbox/ipam/forms/bulk_import.py:278 +#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297 +#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157 +#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279 #: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172 #: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62 #: netbox/ipam/forms/model_forms.py:202 netbox/ipam/forms/model_forms.py:247 @@ -2940,121 +3285,125 @@ msgstr "指定VID" #: netbox/templates/virtualization/vminterface.html:47 #: netbox/virtualization/forms/bulk_edit.py:261 #: netbox/virtualization/forms/bulk_import.py:171 -#: netbox/virtualization/forms/filtersets.py:224 +#: netbox/virtualization/forms/filtersets.py:228 #: netbox/virtualization/forms/model_forms.py:344 -#: netbox/virtualization/models/virtualmachines.py:350 -#: netbox/virtualization/tables/virtualmachines.py:136 +#: netbox/virtualization/models/virtualmachines.py:355 +#: netbox/virtualization/tables/virtualmachines.py:143 msgid "VRF" msgstr "VRF" -#: netbox/dcim/filtersets.py:1567 netbox/ipam/filtersets.py:322 +#: netbox/dcim/filtersets.py:1619 netbox/ipam/filtersets.py:322 #: netbox/ipam/filtersets.py:333 netbox/ipam/filtersets.py:489 #: netbox/ipam/filtersets.py:590 netbox/ipam/filtersets.py:601 msgid "VRF (RD)" msgstr "VRF (RD)" -#: netbox/dcim/filtersets.py:1572 netbox/ipam/filtersets.py:1016 -#: netbox/vpn/filtersets.py:361 +#: netbox/dcim/filtersets.py:1624 netbox/ipam/filtersets.py:1030 +#: netbox/vpn/filtersets.py:353 msgid "L2VPN (ID)" msgstr "L2VPN (ID)" -#: netbox/dcim/filtersets.py:1578 netbox/dcim/forms/filtersets.py:1373 -#: netbox/dcim/tables/devices.py:567 netbox/ipam/filtersets.py:1022 -#: netbox/ipam/forms/filtersets.py:525 netbox/ipam/tables/vlans.py:133 +#: netbox/dcim/filtersets.py:1630 netbox/dcim/forms/filtersets.py:1433 +#: netbox/dcim/tables/devices.py:570 netbox/ipam/filtersets.py:1036 +#: netbox/ipam/forms/filtersets.py:518 netbox/ipam/tables/vlans.py:137 #: netbox/templates/dcim/interface.html:93 netbox/templates/ipam/vlan.html:66 #: netbox/templates/vpn/l2vpntermination.html:12 -#: netbox/virtualization/forms/filtersets.py:229 +#: netbox/virtualization/forms/filtersets.py:233 #: netbox/vpn/forms/bulk_import.py:280 netbox/vpn/forms/filtersets.py:246 #: netbox/vpn/forms/model_forms.py:409 netbox/vpn/forms/model_forms.py:427 #: netbox/vpn/models/l2vpn.py:63 netbox/vpn/tables/l2vpn.py:55 msgid "L2VPN" msgstr "L2VPN" -#: netbox/dcim/filtersets.py:1610 +#: netbox/dcim/filtersets.py:1662 msgid "Virtual Chassis Interfaces for Device" msgstr "设备的集群接口" -#: netbox/dcim/filtersets.py:1615 +#: netbox/dcim/filtersets.py:1667 msgid "Virtual Chassis Interfaces for Device (ID)" msgstr "设备的集群接口(ID)" -#: netbox/dcim/filtersets.py:1619 +#: netbox/dcim/filtersets.py:1671 msgid "Kind of interface" msgstr "接口类型" -#: netbox/dcim/filtersets.py:1624 netbox/virtualization/filtersets.py:289 +#: netbox/dcim/filtersets.py:1676 netbox/virtualization/filtersets.py:293 msgid "Parent interface (ID)" msgstr "父级接口(ID)" -#: netbox/dcim/filtersets.py:1629 netbox/virtualization/filtersets.py:294 +#: netbox/dcim/filtersets.py:1681 netbox/virtualization/filtersets.py:298 msgid "Bridged interface (ID)" msgstr "桥接接口(ID)" -#: netbox/dcim/filtersets.py:1634 +#: netbox/dcim/filtersets.py:1686 msgid "LAG interface (ID)" msgstr "链路聚合接口(ID)" -#: netbox/dcim/filtersets.py:1661 netbox/dcim/filtersets.py:1673 -#: netbox/dcim/forms/filtersets.py:1285 netbox/dcim/forms/model_forms.py:1637 +#: netbox/dcim/filtersets.py:1713 netbox/dcim/filtersets.py:1725 +#: netbox/dcim/forms/filtersets.py:1345 netbox/dcim/forms/model_forms.py:1689 #: netbox/templates/dcim/virtualdevicecontext.html:15 msgid "Virtual Device Context" msgstr "虚拟设备上下文" -#: netbox/dcim/filtersets.py:1667 +#: netbox/dcim/filtersets.py:1719 msgid "Virtual Device Context (Identifier)" msgstr "虚拟设备上下文(ID)" -#: netbox/dcim/filtersets.py:1678 +#: netbox/dcim/filtersets.py:1730 #: netbox/templates/wireless/wirelesslan.html:11 #: netbox/wireless/forms/model_forms.py:53 msgid "Wireless LAN" msgstr "无线局域网" -#: netbox/dcim/filtersets.py:1682 netbox/dcim/tables/devices.py:607 +#: netbox/dcim/filtersets.py:1734 netbox/dcim/tables/devices.py:610 msgid "Wireless link" msgstr "无线连接" -#: netbox/dcim/filtersets.py:1752 +#: netbox/dcim/filtersets.py:1803 +msgid "Parent module bay (ID)" +msgstr "父模块托架 (ID)" + +#: netbox/dcim/filtersets.py:1808 msgid "Installed module (ID)" msgstr "已安装模块(ID)" -#: netbox/dcim/filtersets.py:1763 +#: netbox/dcim/filtersets.py:1819 msgid "Installed device (ID)" msgstr "已安装设备(ID)" -#: netbox/dcim/filtersets.py:1769 +#: netbox/dcim/filtersets.py:1825 msgid "Installed device (name)" msgstr "已安装设备(名称)" -#: netbox/dcim/filtersets.py:1835 +#: netbox/dcim/filtersets.py:1891 msgid "Master (ID)" msgstr "主设备(ID)" -#: netbox/dcim/filtersets.py:1841 +#: netbox/dcim/filtersets.py:1897 msgid "Master (name)" msgstr "主设备(名称)" -#: netbox/dcim/filtersets.py:1883 netbox/tenancy/filtersets.py:246 +#: netbox/dcim/filtersets.py:1939 netbox/tenancy/filtersets.py:246 msgid "Tenant (ID)" msgstr "租户(ID)" -#: netbox/dcim/filtersets.py:1889 netbox/extras/filtersets.py:570 +#: netbox/dcim/filtersets.py:1945 netbox/extras/filtersets.py:618 #: netbox/tenancy/filtersets.py:252 msgid "Tenant (slug)" msgstr "租户(缩写)" -#: netbox/dcim/filtersets.py:1925 netbox/dcim/forms/filtersets.py:1017 +#: netbox/dcim/filtersets.py:1981 netbox/dcim/forms/filtersets.py:1077 msgid "Unterminated" msgstr "未接终端" -#: netbox/dcim/filtersets.py:2183 +#: netbox/dcim/filtersets.py:2239 msgid "Power panel (ID)" msgstr "电源面板(ID)" -#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:410 -#: netbox/extras/forms/model_forms.py:443 -#: netbox/extras/forms/model_forms.py:495 netbox/netbox/forms/base.py:86 -#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:477 +#: netbox/dcim/forms/bulk_create.py:40 netbox/extras/forms/filtersets.py:401 +#: netbox/extras/forms/model_forms.py:567 +#: netbox/extras/forms/model_forms.py:619 netbox/netbox/forms/base.py:86 +#: netbox/netbox/forms/mixins.py:81 netbox/netbox/tables/columns.py:478 #: netbox/templates/circuits/inc/circuit_termination.html:32 #: netbox/templates/generic/bulk_edit.html:65 #: netbox/templates/inc/panels/tags.html:5 @@ -3062,13 +3411,13 @@ msgstr "电源面板(ID)" msgid "Tags" msgstr "标签" -#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1438 -#: netbox/dcim/forms/model_forms.py:431 netbox/dcim/forms/model_forms.py:489 +#: netbox/dcim/forms/bulk_create.py:112 netbox/dcim/forms/filtersets.py:1498 +#: netbox/dcim/forms/model_forms.py:488 netbox/dcim/forms/model_forms.py:546 #: netbox/dcim/forms/object_create.py:197 #: netbox/dcim/forms/object_create.py:353 netbox/dcim/tables/devices.py:165 -#: netbox/dcim/tables/devices.py:700 netbox/dcim/tables/devicetypes.py:247 +#: netbox/dcim/tables/devices.py:703 netbox/dcim/tables/devicetypes.py:247 #: netbox/templates/dcim/device.html:43 netbox/templates/dcim/device.html:131 -#: netbox/templates/dcim/modulebay.html:34 +#: netbox/templates/dcim/modulebay.html:38 #: netbox/templates/dcim/virtualchassis.html:66 #: netbox/templates/dcim/virtualchassis_edit.html:55 msgid "Position" @@ -3080,168 +3429,114 @@ msgid "" "created.)" msgstr "支持字母和数字。(必须与正在创建的名称数相匹配)" -#: netbox/dcim/forms/bulk_edit.py:116 netbox/dcim/forms/bulk_import.py:99 -#: netbox/dcim/forms/model_forms.py:116 netbox/dcim/tables/sites.py:89 -#: netbox/ipam/filtersets.py:985 netbox/ipam/forms/bulk_edit.py:545 -#: netbox/ipam/forms/bulk_import.py:444 netbox/ipam/forms/model_forms.py:528 -#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:118 -#: netbox/ipam/tables/vlans.py:222 netbox/templates/dcim/interface.html:284 -#: netbox/templates/dcim/site.html:37 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:23 -#: netbox/templates/ipam/vlan.html:27 netbox/templates/tenancy/contact.html:21 -#: netbox/templates/tenancy/tenant.html:20 netbox/templates/users/group.html:6 -#: netbox/templates/users/group.html:14 -#: netbox/templates/virtualization/cluster.html:29 -#: netbox/templates/vpn/tunnel.html:29 -#: netbox/templates/wireless/wirelesslan.html:18 -#: netbox/tenancy/forms/bulk_edit.py:43 netbox/tenancy/forms/bulk_edit.py:94 -#: netbox/tenancy/forms/bulk_import.py:40 -#: netbox/tenancy/forms/bulk_import.py:81 -#: netbox/tenancy/forms/filtersets.py:48 netbox/tenancy/forms/filtersets.py:78 -#: netbox/tenancy/forms/filtersets.py:97 -#: netbox/tenancy/forms/model_forms.py:45 -#: netbox/tenancy/forms/model_forms.py:97 -#: netbox/tenancy/forms/model_forms.py:122 -#: netbox/tenancy/tables/contacts.py:60 netbox/tenancy/tables/contacts.py:107 -#: netbox/tenancy/tables/tenants.py:42 netbox/users/filtersets.py:57 -#: netbox/users/filtersets.py:175 netbox/users/forms/filtersets.py:32 -#: netbox/users/forms/filtersets.py:38 netbox/users/forms/filtersets.py:80 -#: netbox/virtualization/forms/bulk_edit.py:65 -#: netbox/virtualization/forms/bulk_import.py:47 -#: netbox/virtualization/forms/filtersets.py:85 -#: netbox/virtualization/forms/model_forms.py:66 -#: netbox/virtualization/tables/clusters.py:70 -#: netbox/vpn/forms/bulk_edit.py:112 netbox/vpn/forms/bulk_import.py:158 -#: netbox/vpn/forms/filtersets.py:116 netbox/vpn/tables/crypto.py:31 -#: netbox/vpn/tables/tunnels.py:44 netbox/wireless/forms/bulk_edit.py:48 -#: netbox/wireless/forms/bulk_import.py:36 -#: netbox/wireless/forms/filtersets.py:46 -#: netbox/wireless/forms/model_forms.py:40 -#: netbox/wireless/tables/wirelesslan.py:48 -msgid "Group" -msgstr "组" - -#: netbox/dcim/forms/bulk_edit.py:131 +#: netbox/dcim/forms/bulk_edit.py:132 msgid "Contact name" msgstr "联系人名字" -#: netbox/dcim/forms/bulk_edit.py:136 +#: netbox/dcim/forms/bulk_edit.py:137 msgid "Contact phone" msgstr "联系人手机" -#: netbox/dcim/forms/bulk_edit.py:142 +#: netbox/dcim/forms/bulk_edit.py:143 msgid "Contact E-mail" msgstr "联系人电子邮箱" -#: netbox/dcim/forms/bulk_edit.py:145 netbox/dcim/forms/bulk_import.py:122 -#: netbox/dcim/forms/model_forms.py:127 +#: netbox/dcim/forms/bulk_edit.py:146 netbox/dcim/forms/bulk_import.py:123 +#: netbox/dcim/forms/model_forms.py:128 msgid "Time zone" msgstr "时区" -#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:1160 -#: netbox/dcim/forms/bulk_edit.py:1553 netbox/dcim/forms/bulk_import.py:204 -#: netbox/dcim/forms/bulk_import.py:1015 netbox/dcim/forms/filtersets.py:310 -#: netbox/dcim/forms/filtersets.py:717 netbox/dcim/forms/filtersets.py:1474 -#: netbox/dcim/forms/model_forms.py:219 netbox/dcim/forms/model_forms.py:1018 -#: netbox/dcim/forms/model_forms.py:1457 -#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 -#: netbox/dcim/tables/devices.py:802 netbox/dcim/tables/devices.py:913 -#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:69 -#: netbox/extras/filtersets.py:504 netbox/ipam/forms/bulk_edit.py:259 -#: netbox/ipam/forms/bulk_edit.py:309 netbox/ipam/forms/bulk_edit.py:357 -#: netbox/ipam/forms/bulk_edit.py:563 netbox/ipam/forms/bulk_import.py:196 -#: netbox/ipam/forms/bulk_import.py:261 netbox/ipam/forms/bulk_import.py:297 -#: netbox/ipam/forms/bulk_import.py:463 netbox/ipam/forms/filtersets.py:237 -#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 -#: netbox/ipam/forms/filtersets.py:516 netbox/ipam/forms/model_forms.py:188 -#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 -#: netbox/ipam/forms/model_forms.py:640 netbox/ipam/tables/ip.py:258 -#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 -#: netbox/ipam/tables/vlans.py:126 netbox/ipam/tables/vlans.py:231 -#: netbox/templates/dcim/device.html:182 -#: netbox/templates/dcim/inc/panels/inventory_items.html:20 -#: netbox/templates/dcim/interface.html:223 -#: netbox/templates/dcim/inventoryitem.html:36 -#: netbox/templates/dcim/rack.html:47 netbox/templates/ipam/ipaddress.html:41 -#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 -#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 -#: netbox/templates/virtualization/virtualmachine.html:23 -#: netbox/templates/vpn/tunneltermination.html:17 -#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 -#: netbox/tenancy/forms/bulk_edit.py:142 -#: netbox/tenancy/forms/filtersets.py:107 -#: netbox/tenancy/forms/model_forms.py:137 -#: netbox/tenancy/tables/contacts.py:102 -#: netbox/virtualization/forms/bulk_edit.py:145 -#: netbox/virtualization/forms/bulk_import.py:106 -#: netbox/virtualization/forms/filtersets.py:157 -#: netbox/virtualization/forms/model_forms.py:195 -#: netbox/virtualization/tables/virtualmachines.py:74 -#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 -#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 -#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 -msgid "Role" -msgstr "角色" - -#: netbox/dcim/forms/bulk_edit.py:274 netbox/dcim/forms/bulk_edit.py:610 -#: netbox/dcim/forms/bulk_edit.py:662 netbox/templates/dcim/device.html:104 -#: netbox/templates/dcim/module.html:74 -#: netbox/templates/dcim/modulebay.html:66 netbox/templates/dcim/rack.html:55 -msgid "Serial Number" -msgstr "序列号" - -#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/filtersets.py:317 -#: netbox/dcim/forms/filtersets.py:753 netbox/dcim/forms/filtersets.py:907 -#: netbox/dcim/forms/filtersets.py:1486 -msgid "Asset tag" -msgstr "资产标签" +#: netbox/dcim/forms/bulk_edit.py:224 netbox/dcim/forms/bulk_edit.py:495 +#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:632 +#: netbox/dcim/forms/bulk_edit.py:656 netbox/dcim/forms/bulk_edit.py:740 +#: netbox/dcim/forms/bulk_edit.py:1267 netbox/dcim/forms/bulk_edit.py:1660 +#: netbox/dcim/forms/bulk_import.py:182 netbox/dcim/forms/bulk_import.py:371 +#: netbox/dcim/forms/bulk_import.py:405 netbox/dcim/forms/bulk_import.py:450 +#: netbox/dcim/forms/bulk_import.py:486 netbox/dcim/forms/bulk_import.py:1082 +#: netbox/dcim/forms/filtersets.py:313 netbox/dcim/forms/filtersets.py:372 +#: netbox/dcim/forms/filtersets.py:494 netbox/dcim/forms/filtersets.py:619 +#: netbox/dcim/forms/filtersets.py:700 netbox/dcim/forms/filtersets.py:782 +#: netbox/dcim/forms/filtersets.py:947 netbox/dcim/forms/filtersets.py:1539 +#: netbox/dcim/forms/model_forms.py:207 netbox/dcim/forms/model_forms.py:337 +#: netbox/dcim/forms/model_forms.py:349 netbox/dcim/forms/model_forms.py:395 +#: netbox/dcim/forms/model_forms.py:436 netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1514 +#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 +#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:936 +#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 +#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 +#: netbox/dcim/tables/racks.py:58 netbox/dcim/tables/racks.py:132 +#: netbox/templates/dcim/devicetype.html:14 +#: netbox/templates/dcim/inventoryitem.html:44 +#: netbox/templates/dcim/manufacturer.html:33 +#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/moduletype.html:14 +#: netbox/templates/dcim/platform.html:37 +#: netbox/templates/dcim/racktype.html:16 +msgid "Manufacturer" +msgstr "厂商" -#: netbox/dcim/forms/bulk_edit.py:287 netbox/dcim/forms/bulk_import.py:217 -#: netbox/dcim/forms/filtersets.py:302 netbox/templates/dcim/rack.html:86 +#: netbox/dcim/forms/bulk_edit.py:229 netbox/dcim/forms/bulk_edit.py:372 +#: netbox/dcim/forms/bulk_import.py:191 netbox/dcim/forms/bulk_import.py:263 +#: netbox/dcim/forms/filtersets.py:255 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:6 +msgid "Form factor" +msgstr "外形规格" + +#: netbox/dcim/forms/bulk_edit.py:234 netbox/dcim/forms/bulk_edit.py:377 +#: netbox/dcim/forms/bulk_import.py:199 netbox/dcim/forms/bulk_import.py:266 +#: netbox/dcim/forms/filtersets.py:260 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:10 msgid "Width" msgstr "宽度" -#: netbox/dcim/forms/bulk_edit.py:293 netbox/templates/dcim/devicetype.html:37 +#: netbox/dcim/forms/bulk_edit.py:240 netbox/dcim/forms/bulk_edit.py:383 +#: netbox/templates/dcim/devicetype.html:37 msgid "Height (U)" msgstr "高度(U)" -#: netbox/dcim/forms/bulk_edit.py:298 +#: netbox/dcim/forms/bulk_edit.py:249 netbox/dcim/forms/bulk_edit.py:388 +#: netbox/dcim/forms/filtersets.py:274 msgid "Descending units" msgstr "U位显示降序" -#: netbox/dcim/forms/bulk_edit.py:301 +#: netbox/dcim/forms/bulk_edit.py:252 netbox/dcim/forms/bulk_edit.py:391 msgid "Outer width" msgstr "外部宽度" -#: netbox/dcim/forms/bulk_edit.py:306 +#: netbox/dcim/forms/bulk_edit.py:257 netbox/dcim/forms/bulk_edit.py:396 msgid "Outer depth" msgstr "外部深度" -#: netbox/dcim/forms/bulk_edit.py:311 netbox/dcim/forms/bulk_import.py:222 +#: netbox/dcim/forms/bulk_edit.py:262 netbox/dcim/forms/bulk_edit.py:401 +#: netbox/dcim/forms/bulk_import.py:204 netbox/dcim/forms/bulk_import.py:271 msgid "Outer unit" msgstr "外部单元" -#: netbox/dcim/forms/bulk_edit.py:316 +#: netbox/dcim/forms/bulk_edit.py:267 netbox/dcim/forms/bulk_edit.py:406 msgid "Mounting depth" msgstr "安装深度" -#: netbox/dcim/forms/bulk_edit.py:321 netbox/dcim/forms/bulk_edit.py:351 -#: netbox/dcim/forms/bulk_edit.py:436 netbox/dcim/forms/bulk_edit.py:459 -#: netbox/dcim/forms/bulk_edit.py:475 netbox/dcim/forms/bulk_edit.py:495 -#: netbox/dcim/forms/bulk_import.py:329 netbox/dcim/forms/bulk_import.py:355 -#: netbox/dcim/forms/filtersets.py:261 netbox/dcim/forms/filtersets.py:322 -#: netbox/dcim/forms/filtersets.py:346 netbox/dcim/forms/filtersets.py:433 -#: netbox/dcim/forms/filtersets.py:539 netbox/dcim/forms/filtersets.py:558 -#: netbox/dcim/forms/filtersets.py:614 netbox/dcim/forms/model_forms.py:232 -#: netbox/dcim/forms/model_forms.py:346 netbox/dcim/tables/devicetypes.py:107 -#: netbox/dcim/tables/modules.py:35 netbox/dcim/tables/racks.py:103 -#: netbox/extras/forms/bulk_edit.py:45 netbox/extras/forms/bulk_edit.py:108 -#: netbox/extras/forms/bulk_edit.py:158 netbox/extras/forms/bulk_edit.py:278 -#: netbox/extras/forms/filtersets.py:61 netbox/extras/forms/filtersets.py:134 -#: netbox/extras/forms/filtersets.py:221 netbox/ipam/forms/bulk_edit.py:188 +#: netbox/dcim/forms/bulk_edit.py:272 netbox/dcim/forms/bulk_edit.py:299 +#: netbox/dcim/forms/bulk_edit.py:416 netbox/dcim/forms/bulk_edit.py:446 +#: netbox/dcim/forms/bulk_edit.py:529 netbox/dcim/forms/bulk_edit.py:552 +#: netbox/dcim/forms/bulk_edit.py:573 netbox/dcim/forms/bulk_edit.py:595 +#: netbox/dcim/forms/bulk_import.py:384 netbox/dcim/forms/bulk_import.py:416 +#: netbox/dcim/forms/filtersets.py:285 netbox/dcim/forms/filtersets.py:307 +#: netbox/dcim/forms/filtersets.py:327 netbox/dcim/forms/filtersets.py:401 +#: netbox/dcim/forms/filtersets.py:488 netbox/dcim/forms/filtersets.py:594 +#: netbox/dcim/forms/filtersets.py:613 netbox/dcim/forms/filtersets.py:674 +#: netbox/dcim/forms/model_forms.py:221 netbox/dcim/forms/model_forms.py:298 +#: netbox/dcim/tables/devicetypes.py:107 netbox/dcim/tables/modules.py:35 +#: netbox/dcim/tables/racks.py:74 netbox/dcim/tables/racks.py:172 +#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133 +#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288 +#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156 +#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189 #: netbox/templates/dcim/device.html:324 #: netbox/templates/dcim/devicetype.html:49 -#: netbox/templates/dcim/moduletype.html:30 +#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81 +#: netbox/templates/dcim/racktype.html:41 #: netbox/templates/extras/configcontext.html:17 #: netbox/templates/extras/customlink.html:25 #: netbox/templates/extras/savedfilter.html:33 @@ -3249,192 +3544,262 @@ msgstr "安装深度" msgid "Weight" msgstr "重量" -#: netbox/dcim/forms/bulk_edit.py:326 netbox/dcim/forms/filtersets.py:327 +#: netbox/dcim/forms/bulk_edit.py:277 netbox/dcim/forms/bulk_edit.py:421 +#: netbox/dcim/forms/filtersets.py:290 msgid "Max weight" msgstr "最大承重" -#: netbox/dcim/forms/bulk_edit.py:331 netbox/dcim/forms/bulk_edit.py:441 -#: netbox/dcim/forms/bulk_edit.py:480 netbox/dcim/forms/bulk_import.py:228 -#: netbox/dcim/forms/bulk_import.py:334 netbox/dcim/forms/bulk_import.py:360 -#: netbox/dcim/forms/filtersets.py:332 netbox/dcim/forms/filtersets.py:543 -#: netbox/dcim/forms/filtersets.py:618 +#: netbox/dcim/forms/bulk_edit.py:282 netbox/dcim/forms/bulk_edit.py:426 +#: netbox/dcim/forms/bulk_edit.py:534 netbox/dcim/forms/bulk_edit.py:578 +#: netbox/dcim/forms/bulk_import.py:210 netbox/dcim/forms/bulk_import.py:283 +#: netbox/dcim/forms/bulk_import.py:389 netbox/dcim/forms/bulk_import.py:421 +#: netbox/dcim/forms/filtersets.py:295 netbox/dcim/forms/filtersets.py:598 +#: netbox/dcim/forms/filtersets.py:678 msgid "Weight unit" msgstr "重量单位" -#: netbox/dcim/forms/bulk_edit.py:345 netbox/dcim/forms/bulk_edit.py:808 -#: netbox/dcim/forms/bulk_import.py:267 netbox/dcim/forms/bulk_import.py:270 -#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/bulk_import.py:1297 -#: netbox/dcim/forms/bulk_import.py:1301 netbox/dcim/forms/filtersets.py:103 -#: netbox/dcim/forms/filtersets.py:350 netbox/dcim/forms/filtersets.py:364 -#: netbox/dcim/forms/filtersets.py:402 netbox/dcim/forms/filtersets.py:712 -#: netbox/dcim/forms/filtersets.py:975 netbox/dcim/forms/filtersets.py:1107 -#: netbox/dcim/forms/model_forms.py:226 netbox/dcim/forms/model_forms.py:248 -#: netbox/dcim/forms/model_forms.py:422 netbox/dcim/forms/model_forms.py:703 -#: netbox/dcim/forms/object_create.py:400 netbox/dcim/tables/devices.py:161 -#: netbox/dcim/tables/power.py:70 netbox/dcim/tables/racks.py:148 -#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:442 -#: netbox/templates/dcim/device.html:30 +#: netbox/dcim/forms/bulk_edit.py:296 netbox/dcim/forms/filtersets.py:305 +#: netbox/dcim/forms/model_forms.py:217 netbox/dcim/forms/model_forms.py:256 +#: netbox/templates/dcim/rack.html:45 netbox/templates/dcim/racktype.html:13 +msgid "Rack Type" +msgstr "机架类型" + +#: netbox/dcim/forms/bulk_edit.py:298 netbox/dcim/forms/model_forms.py:220 +#: netbox/dcim/forms/model_forms.py:297 +msgid "Outer Dimensions" +msgstr "外部尺寸" + +#: netbox/dcim/forms/bulk_edit.py:301 netbox/dcim/forms/model_forms.py:222 +#: netbox/dcim/forms/model_forms.py:299 netbox/templates/dcim/device.html:315 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:3 +msgid "Dimensions" +msgstr "外部尺寸" + +#: netbox/dcim/forms/bulk_edit.py:303 netbox/dcim/forms/filtersets.py:306 +#: netbox/dcim/forms/filtersets.py:326 netbox/dcim/forms/model_forms.py:224 +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:3 +msgid "Numbering" +msgstr "编号" + +#: netbox/dcim/forms/bulk_edit.py:357 netbox/dcim/forms/bulk_edit.py:1262 +#: netbox/dcim/forms/bulk_edit.py:1655 netbox/dcim/forms/bulk_import.py:253 +#: netbox/dcim/forms/bulk_import.py:1076 netbox/dcim/forms/filtersets.py:367 +#: netbox/dcim/forms/filtersets.py:777 netbox/dcim/forms/filtersets.py:1534 +#: netbox/dcim/forms/model_forms.py:251 netbox/dcim/forms/model_forms.py:1070 +#: netbox/dcim/forms/model_forms.py:1509 +#: netbox/dcim/forms/object_import.py:181 netbox/dcim/tables/devices.py:169 +#: netbox/dcim/tables/devices.py:805 netbox/dcim/tables/devices.py:933 +#: netbox/dcim/tables/devicetypes.py:305 netbox/dcim/tables/racks.py:129 +#: netbox/extras/filtersets.py:552 netbox/ipam/forms/bulk_edit.py:260 +#: netbox/ipam/forms/bulk_edit.py:310 netbox/ipam/forms/bulk_edit.py:358 +#: netbox/ipam/forms/bulk_edit.py:556 netbox/ipam/forms/bulk_import.py:197 +#: netbox/ipam/forms/bulk_import.py:262 netbox/ipam/forms/bulk_import.py:298 +#: netbox/ipam/forms/bulk_import.py:455 netbox/ipam/forms/filtersets.py:237 +#: netbox/ipam/forms/filtersets.py:289 netbox/ipam/forms/filtersets.py:360 +#: netbox/ipam/forms/filtersets.py:509 netbox/ipam/forms/model_forms.py:188 +#: netbox/ipam/forms/model_forms.py:221 netbox/ipam/forms/model_forms.py:250 +#: netbox/ipam/forms/model_forms.py:643 netbox/ipam/tables/ip.py:258 +#: netbox/ipam/tables/ip.py:316 netbox/ipam/tables/ip.py:367 +#: netbox/ipam/tables/vlans.py:130 netbox/ipam/tables/vlans.py:235 +#: netbox/templates/dcim/device.html:182 +#: netbox/templates/dcim/inc/panels/inventory_items.html:20 +#: netbox/templates/dcim/interface.html:223 +#: netbox/templates/dcim/inventoryitem.html:36 +#: netbox/templates/dcim/rack.html:49 netbox/templates/ipam/ipaddress.html:41 +#: netbox/templates/ipam/iprange.html:50 netbox/templates/ipam/prefix.html:77 +#: netbox/templates/ipam/role.html:19 netbox/templates/ipam/vlan.html:52 +#: netbox/templates/virtualization/virtualmachine.html:23 +#: netbox/templates/vpn/tunneltermination.html:17 +#: netbox/templates/wireless/inc/wirelesslink_interface.html:20 +#: netbox/tenancy/forms/bulk_edit.py:142 +#: netbox/tenancy/forms/filtersets.py:107 +#: netbox/tenancy/forms/model_forms.py:137 +#: netbox/tenancy/tables/contacts.py:102 +#: netbox/virtualization/forms/bulk_edit.py:145 +#: netbox/virtualization/forms/bulk_import.py:106 +#: netbox/virtualization/forms/filtersets.py:157 +#: netbox/virtualization/forms/model_forms.py:195 +#: netbox/virtualization/tables/virtualmachines.py:75 +#: netbox/vpn/forms/bulk_edit.py:87 netbox/vpn/forms/bulk_import.py:81 +#: netbox/vpn/forms/filtersets.py:85 netbox/vpn/forms/model_forms.py:78 +#: netbox/vpn/forms/model_forms.py:113 netbox/vpn/tables/tunnels.py:82 +msgid "Role" +msgstr "角色" + +#: netbox/dcim/forms/bulk_edit.py:364 netbox/dcim/forms/bulk_edit.py:712 +#: netbox/dcim/forms/bulk_edit.py:764 netbox/templates/dcim/device.html:104 +#: netbox/templates/dcim/module.html:77 +#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:57 +#: netbox/templates/virtualization/virtualmachine.html:35 +msgid "Serial Number" +msgstr "序列号" + +#: netbox/dcim/forms/bulk_edit.py:367 netbox/dcim/forms/filtersets.py:387 +#: netbox/dcim/forms/filtersets.py:813 netbox/dcim/forms/filtersets.py:967 +#: netbox/dcim/forms/filtersets.py:1546 +msgid "Asset tag" +msgstr "资产标签" + +#: netbox/dcim/forms/bulk_edit.py:411 netbox/dcim/forms/bulk_edit.py:524 +#: netbox/dcim/forms/bulk_edit.py:568 netbox/dcim/forms/bulk_edit.py:705 +#: netbox/dcim/forms/bulk_import.py:277 netbox/dcim/forms/bulk_import.py:410 +#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/filtersets.py:280 +#: netbox/dcim/forms/filtersets.py:511 netbox/dcim/forms/filtersets.py:669 +#: netbox/dcim/forms/filtersets.py:804 netbox/templates/dcim/device.html:98 +#: netbox/templates/dcim/devicetype.html:65 +#: netbox/templates/dcim/moduletype.html:30 netbox/templates/dcim/rack.html:65 +#: netbox/templates/dcim/racktype.html:28 +msgid "Airflow" +msgstr "气流方向" + +#: netbox/dcim/forms/bulk_edit.py:440 netbox/dcim/forms/bulk_edit.py:910 +#: netbox/dcim/forms/bulk_import.py:322 netbox/dcim/forms/bulk_import.py:325 +#: netbox/dcim/forms/bulk_import.py:553 netbox/dcim/forms/bulk_import.py:1358 +#: netbox/dcim/forms/bulk_import.py:1362 netbox/dcim/forms/filtersets.py:104 +#: netbox/dcim/forms/filtersets.py:324 netbox/dcim/forms/filtersets.py:405 +#: netbox/dcim/forms/filtersets.py:419 netbox/dcim/forms/filtersets.py:457 +#: netbox/dcim/forms/filtersets.py:772 netbox/dcim/forms/filtersets.py:1035 +#: netbox/dcim/forms/filtersets.py:1167 netbox/dcim/forms/model_forms.py:264 +#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400 +#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70 +#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468 +#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30 #: netbox/templates/dcim/inc/cable_termination.html:16 #: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13 #: netbox/templates/dcim/rack/base.html:4 #: netbox/templates/dcim/rackreservation.html:19 #: netbox/templates/dcim/rackreservation.html:36 #: netbox/virtualization/forms/model_forms.py:113 -msgid "Rack" -msgstr "机柜" - -#: netbox/dcim/forms/bulk_edit.py:349 netbox/dcim/forms/bulk_edit.py:628 -#: netbox/dcim/forms/filtersets.py:258 netbox/dcim/forms/filtersets.py:343 -#: netbox/dcim/forms/filtersets.py:426 netbox/dcim/forms/filtersets.py:553 -#: netbox/dcim/forms/filtersets.py:661 netbox/dcim/forms/filtersets.py:882 -#: netbox/dcim/forms/model_forms.py:613 netbox/dcim/forms/model_forms.py:1527 -#: netbox/templates/dcim/device_edit.html:20 -msgid "Hardware" -msgstr "硬件" - -#: netbox/dcim/forms/bulk_edit.py:402 netbox/dcim/forms/bulk_edit.py:466 -#: netbox/dcim/forms/bulk_edit.py:530 netbox/dcim/forms/bulk_edit.py:554 -#: netbox/dcim/forms/bulk_edit.py:638 netbox/dcim/forms/bulk_edit.py:1165 -#: netbox/dcim/forms/bulk_edit.py:1558 netbox/dcim/forms/bulk_import.py:316 -#: netbox/dcim/forms/bulk_import.py:350 netbox/dcim/forms/bulk_import.py:389 -#: netbox/dcim/forms/bulk_import.py:425 netbox/dcim/forms/bulk_import.py:1021 -#: netbox/dcim/forms/filtersets.py:439 netbox/dcim/forms/filtersets.py:564 -#: netbox/dcim/forms/filtersets.py:640 netbox/dcim/forms/filtersets.py:722 -#: netbox/dcim/forms/filtersets.py:887 netbox/dcim/forms/filtersets.py:1479 -#: netbox/dcim/forms/model_forms.py:281 netbox/dcim/forms/model_forms.py:293 -#: netbox/dcim/forms/model_forms.py:339 netbox/dcim/forms/model_forms.py:379 -#: netbox/dcim/forms/model_forms.py:1023 netbox/dcim/forms/model_forms.py:1462 -#: netbox/dcim/forms/object_import.py:187 netbox/dcim/tables/devices.py:96 -#: netbox/dcim/tables/devices.py:172 netbox/dcim/tables/devices.py:916 -#: netbox/dcim/tables/devicetypes.py:81 netbox/dcim/tables/devicetypes.py:309 -#: netbox/dcim/tables/modules.py:20 netbox/dcim/tables/modules.py:60 -#: netbox/templates/dcim/devicetype.html:14 -#: netbox/templates/dcim/inventoryitem.html:44 -#: netbox/templates/dcim/manufacturer.html:33 -#: netbox/templates/dcim/modulebay.html:58 -#: netbox/templates/dcim/moduletype.html:14 -#: netbox/templates/dcim/platform.html:37 -msgid "Manufacturer" -msgstr "厂商" +msgid "Rack" +msgstr "机柜" + +#: netbox/dcim/forms/bulk_edit.py:444 netbox/dcim/forms/bulk_edit.py:730 +#: netbox/dcim/forms/filtersets.py:325 netbox/dcim/forms/filtersets.py:398 +#: netbox/dcim/forms/filtersets.py:481 netbox/dcim/forms/filtersets.py:608 +#: netbox/dcim/forms/filtersets.py:721 netbox/dcim/forms/filtersets.py:942 +#: netbox/dcim/forms/model_forms.py:670 netbox/dcim/forms/model_forms.py:1579 +#: netbox/templates/dcim/device_edit.html:20 +msgid "Hardware" +msgstr "硬件" -#: netbox/dcim/forms/bulk_edit.py:407 netbox/dcim/forms/bulk_import.py:322 -#: netbox/dcim/forms/filtersets.py:444 netbox/dcim/forms/model_forms.py:297 +#: netbox/dcim/forms/bulk_edit.py:500 netbox/dcim/forms/bulk_import.py:377 +#: netbox/dcim/forms/filtersets.py:499 netbox/dcim/forms/model_forms.py:353 msgid "Default platform" msgstr "默认系统平台" -#: netbox/dcim/forms/bulk_edit.py:412 netbox/dcim/forms/bulk_edit.py:471 -#: netbox/dcim/forms/filtersets.py:447 netbox/dcim/forms/filtersets.py:567 +#: netbox/dcim/forms/bulk_edit.py:505 netbox/dcim/forms/bulk_edit.py:564 +#: netbox/dcim/forms/filtersets.py:502 netbox/dcim/forms/filtersets.py:622 msgid "Part number" msgstr "部件编码(PN)" -#: netbox/dcim/forms/bulk_edit.py:416 +#: netbox/dcim/forms/bulk_edit.py:509 msgid "U height" msgstr "U高度" -#: netbox/dcim/forms/bulk_edit.py:428 netbox/dcim/tables/devicetypes.py:103 +#: netbox/dcim/forms/bulk_edit.py:521 netbox/dcim/tables/devicetypes.py:103 msgid "Exclude from utilization" msgstr "从利用率中排除" -#: netbox/dcim/forms/bulk_edit.py:431 netbox/dcim/forms/bulk_edit.py:603 -#: netbox/dcim/forms/bulk_import.py:519 netbox/dcim/forms/filtersets.py:456 -#: netbox/dcim/forms/filtersets.py:744 netbox/templates/dcim/device.html:98 -#: netbox/templates/dcim/devicetype.html:65 -msgid "Airflow" -msgstr "气流方向" - -#: netbox/dcim/forms/bulk_edit.py:457 netbox/dcim/forms/model_forms.py:312 +#: netbox/dcim/forms/bulk_edit.py:550 netbox/dcim/forms/model_forms.py:368 #: netbox/dcim/tables/devicetypes.py:78 netbox/templates/dcim/device.html:88 #: netbox/templates/dcim/devicebay.html:52 -#: netbox/templates/dcim/module.html:58 +#: netbox/templates/dcim/module.html:61 msgid "Device Type" msgstr "设备型号" -#: netbox/dcim/forms/bulk_edit.py:494 netbox/dcim/forms/model_forms.py:345 +#: netbox/dcim/forms/bulk_edit.py:592 netbox/dcim/forms/model_forms.py:401 #: netbox/dcim/tables/modules.py:17 netbox/dcim/tables/modules.py:65 -#: netbox/templates/dcim/module.html:62 -#: netbox/templates/dcim/modulebay.html:62 +#: netbox/templates/dcim/module.html:65 +#: netbox/templates/dcim/modulebay.html:66 #: netbox/templates/dcim/moduletype.html:11 msgid "Module Type" msgstr "设备配件类型" -#: netbox/dcim/forms/bulk_edit.py:508 netbox/dcim/models/devices.py:474 +#: netbox/dcim/forms/bulk_edit.py:596 netbox/dcim/forms/model_forms.py:371 +#: netbox/dcim/forms/model_forms.py:402 +#: netbox/templates/dcim/devicetype.html:11 +msgid "Chassis" +msgstr "机箱" + +#: netbox/dcim/forms/bulk_edit.py:610 netbox/dcim/models/devices.py:484 #: netbox/dcim/tables/devices.py:67 msgid "VM role" msgstr "VM 角色" -#: netbox/dcim/forms/bulk_edit.py:511 netbox/dcim/forms/bulk_edit.py:535 -#: netbox/dcim/forms/bulk_edit.py:618 netbox/dcim/forms/bulk_import.py:373 -#: netbox/dcim/forms/bulk_import.py:377 netbox/dcim/forms/bulk_import.py:396 -#: netbox/dcim/forms/bulk_import.py:400 netbox/dcim/forms/bulk_import.py:525 -#: netbox/dcim/forms/bulk_import.py:529 netbox/dcim/forms/filtersets.py:629 -#: netbox/dcim/forms/filtersets.py:645 netbox/dcim/forms/filtersets.py:763 -#: netbox/dcim/forms/model_forms.py:358 netbox/dcim/forms/model_forms.py:384 -#: netbox/dcim/forms/model_forms.py:498 +#: netbox/dcim/forms/bulk_edit.py:613 netbox/dcim/forms/bulk_edit.py:637 +#: netbox/dcim/forms/bulk_edit.py:720 netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:438 netbox/dcim/forms/bulk_import.py:457 +#: netbox/dcim/forms/bulk_import.py:461 netbox/dcim/forms/bulk_import.py:586 +#: netbox/dcim/forms/bulk_import.py:590 netbox/dcim/forms/filtersets.py:689 +#: netbox/dcim/forms/filtersets.py:705 netbox/dcim/forms/filtersets.py:823 +#: netbox/dcim/forms/model_forms.py:415 netbox/dcim/forms/model_forms.py:441 +#: netbox/dcim/forms/model_forms.py:555 #: netbox/virtualization/forms/bulk_import.py:132 #: netbox/virtualization/forms/bulk_import.py:133 -#: netbox/virtualization/forms/filtersets.py:184 +#: netbox/virtualization/forms/filtersets.py:188 #: netbox/virtualization/forms/model_forms.py:215 msgid "Config template" msgstr "配置模版" -#: netbox/dcim/forms/bulk_edit.py:559 netbox/dcim/forms/bulk_edit.py:959 -#: netbox/dcim/forms/bulk_import.py:431 netbox/dcim/forms/filtersets.py:113 -#: netbox/dcim/forms/model_forms.py:444 netbox/dcim/forms/model_forms.py:820 -#: netbox/dcim/forms/model_forms.py:837 netbox/extras/filtersets.py:499 +#: netbox/dcim/forms/bulk_edit.py:661 netbox/dcim/forms/bulk_edit.py:1061 +#: netbox/dcim/forms/bulk_import.py:492 netbox/dcim/forms/filtersets.py:114 +#: netbox/dcim/forms/model_forms.py:501 netbox/dcim/forms/model_forms.py:872 +#: netbox/dcim/forms/model_forms.py:889 netbox/extras/filtersets.py:547 msgid "Device type" msgstr "设备型号" -#: netbox/dcim/forms/bulk_edit.py:570 netbox/dcim/forms/bulk_import.py:412 -#: netbox/dcim/forms/filtersets.py:118 netbox/dcim/forms/model_forms.py:452 +#: netbox/dcim/forms/bulk_edit.py:672 netbox/dcim/forms/bulk_import.py:473 +#: netbox/dcim/forms/filtersets.py:119 netbox/dcim/forms/model_forms.py:509 msgid "Device role" msgstr "设备角色" -#: netbox/dcim/forms/bulk_edit.py:593 netbox/dcim/forms/bulk_import.py:437 -#: netbox/dcim/forms/filtersets.py:736 netbox/dcim/forms/model_forms.py:394 -#: netbox/dcim/forms/model_forms.py:456 netbox/dcim/tables/devices.py:182 -#: netbox/extras/filtersets.py:515 netbox/templates/dcim/device.html:186 +#: netbox/dcim/forms/bulk_edit.py:695 netbox/dcim/forms/bulk_import.py:498 +#: netbox/dcim/forms/filtersets.py:796 netbox/dcim/forms/model_forms.py:451 +#: netbox/dcim/forms/model_forms.py:513 netbox/dcim/tables/devices.py:182 +#: netbox/extras/filtersets.py:563 netbox/templates/dcim/device.html:186 #: netbox/templates/dcim/platform.html:26 #: netbox/templates/virtualization/virtualmachine.html:27 #: netbox/virtualization/forms/bulk_edit.py:160 #: netbox/virtualization/forms/bulk_import.py:122 #: netbox/virtualization/forms/filtersets.py:168 #: netbox/virtualization/forms/model_forms.py:203 -#: netbox/virtualization/tables/virtualmachines.py:78 +#: netbox/virtualization/tables/virtualmachines.py:79 msgid "Platform" msgstr "平台" -#: netbox/dcim/forms/bulk_edit.py:626 netbox/dcim/forms/bulk_edit.py:1179 -#: netbox/dcim/forms/bulk_edit.py:1548 netbox/dcim/forms/bulk_edit.py:1594 -#: netbox/dcim/forms/bulk_import.py:580 netbox/dcim/forms/bulk_import.py:642 -#: netbox/dcim/forms/bulk_import.py:668 netbox/dcim/forms/bulk_import.py:694 -#: netbox/dcim/forms/bulk_import.py:714 netbox/dcim/forms/bulk_import.py:767 -#: netbox/dcim/forms/bulk_import.py:885 netbox/dcim/forms/bulk_import.py:933 -#: netbox/dcim/forms/bulk_import.py:950 netbox/dcim/forms/bulk_import.py:962 -#: netbox/dcim/forms/bulk_import.py:1010 netbox/dcim/forms/bulk_import.py:1361 -#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:130 -#: netbox/dcim/forms/filtersets.py:861 netbox/dcim/forms/filtersets.py:991 -#: netbox/dcim/forms/filtersets.py:1182 netbox/dcim/forms/filtersets.py:1207 -#: netbox/dcim/forms/filtersets.py:1231 netbox/dcim/forms/filtersets.py:1251 -#: netbox/dcim/forms/filtersets.py:1274 netbox/dcim/forms/filtersets.py:1384 -#: netbox/dcim/forms/filtersets.py:1409 netbox/dcim/forms/filtersets.py:1433 -#: netbox/dcim/forms/filtersets.py:1451 netbox/dcim/forms/filtersets.py:1468 -#: netbox/dcim/forms/filtersets.py:1532 netbox/dcim/forms/filtersets.py:1556 -#: netbox/dcim/forms/filtersets.py:1580 netbox/dcim/forms/model_forms.py:576 -#: netbox/dcim/forms/model_forms.py:797 netbox/dcim/forms/model_forms.py:1156 -#: netbox/dcim/forms/model_forms.py:1611 +#: netbox/dcim/forms/bulk_edit.py:728 netbox/dcim/forms/bulk_edit.py:1281 +#: netbox/dcim/forms/bulk_edit.py:1650 netbox/dcim/forms/bulk_edit.py:1696 +#: netbox/dcim/forms/bulk_import.py:641 netbox/dcim/forms/bulk_import.py:703 +#: netbox/dcim/forms/bulk_import.py:729 netbox/dcim/forms/bulk_import.py:755 +#: netbox/dcim/forms/bulk_import.py:775 netbox/dcim/forms/bulk_import.py:828 +#: netbox/dcim/forms/bulk_import.py:946 netbox/dcim/forms/bulk_import.py:994 +#: netbox/dcim/forms/bulk_import.py:1011 netbox/dcim/forms/bulk_import.py:1023 +#: netbox/dcim/forms/bulk_import.py:1071 netbox/dcim/forms/bulk_import.py:1422 +#: netbox/dcim/forms/connections.py:24 netbox/dcim/forms/filtersets.py:131 +#: netbox/dcim/forms/filtersets.py:921 netbox/dcim/forms/filtersets.py:1051 +#: netbox/dcim/forms/filtersets.py:1242 netbox/dcim/forms/filtersets.py:1267 +#: netbox/dcim/forms/filtersets.py:1291 netbox/dcim/forms/filtersets.py:1311 +#: netbox/dcim/forms/filtersets.py:1334 netbox/dcim/forms/filtersets.py:1444 +#: netbox/dcim/forms/filtersets.py:1469 netbox/dcim/forms/filtersets.py:1493 +#: netbox/dcim/forms/filtersets.py:1511 netbox/dcim/forms/filtersets.py:1528 +#: netbox/dcim/forms/filtersets.py:1592 netbox/dcim/forms/filtersets.py:1616 +#: netbox/dcim/forms/filtersets.py:1640 netbox/dcim/forms/model_forms.py:633 +#: netbox/dcim/forms/model_forms.py:849 netbox/dcim/forms/model_forms.py:1208 +#: netbox/dcim/forms/model_forms.py:1663 #: netbox/dcim/forms/object_create.py:257 netbox/dcim/tables/connections.py:22 #: netbox/dcim/tables/connections.py:41 netbox/dcim/tables/connections.py:60 -#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:368 -#: netbox/dcim/tables/devices.py:409 netbox/dcim/tables/devices.py:451 -#: netbox/dcim/tables/devices.py:502 netbox/dcim/tables/devices.py:591 -#: netbox/dcim/tables/devices.py:690 netbox/dcim/tables/devices.py:747 -#: netbox/dcim/tables/devices.py:794 netbox/dcim/tables/devices.py:854 -#: netbox/dcim/tables/devices.py:906 netbox/dcim/tables/devices.py:1033 -#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:330 -#: netbox/ipam/forms/bulk_import.py:303 netbox/ipam/forms/bulk_import.py:489 -#: netbox/ipam/forms/filtersets.py:558 netbox/ipam/forms/model_forms.py:319 -#: netbox/ipam/forms/model_forms.py:676 netbox/ipam/forms/model_forms.py:709 -#: netbox/ipam/forms/model_forms.py:735 netbox/ipam/tables/vlans.py:176 +#: netbox/dcim/tables/devices.py:285 netbox/dcim/tables/devices.py:371 +#: netbox/dcim/tables/devices.py:412 netbox/dcim/tables/devices.py:454 +#: netbox/dcim/tables/devices.py:505 netbox/dcim/tables/devices.py:594 +#: netbox/dcim/tables/devices.py:693 netbox/dcim/tables/devices.py:750 +#: netbox/dcim/tables/devices.py:797 netbox/dcim/tables/devices.py:857 +#: netbox/dcim/tables/devices.py:926 netbox/dcim/tables/devices.py:1053 +#: netbox/dcim/tables/modules.py:52 netbox/extras/forms/filtersets.py:321 +#: netbox/ipam/forms/bulk_import.py:304 netbox/ipam/forms/bulk_import.py:481 +#: netbox/ipam/forms/filtersets.py:551 netbox/ipam/forms/model_forms.py:319 +#: netbox/ipam/forms/model_forms.py:679 netbox/ipam/forms/model_forms.py:712 +#: netbox/ipam/forms/model_forms.py:738 netbox/ipam/tables/vlans.py:180 #: netbox/templates/dcim/consoleport.html:20 #: netbox/templates/dcim/consoleserverport.html:20 #: netbox/templates/dcim/device.html:15 netbox/templates/dcim/device.html:130 @@ -3445,7 +3810,7 @@ msgstr "平台" #: netbox/templates/dcim/interface.html:30 #: netbox/templates/dcim/interface.html:161 #: netbox/templates/dcim/inventoryitem.html:20 -#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/module.html:57 #: netbox/templates/dcim/modulebay.html:20 #: netbox/templates/dcim/poweroutlet.html:20 #: netbox/templates/dcim/powerport.html:20 @@ -3453,7 +3818,7 @@ msgstr "平台" #: netbox/templates/dcim/virtualchassis.html:65 #: netbox/templates/dcim/virtualchassis_edit.html:51 #: netbox/templates/dcim/virtualdevicecontext.html:22 -#: netbox/templates/virtualization/virtualmachine.html:110 +#: netbox/templates/virtualization/virtualmachine.html:114 #: netbox/templates/vpn/tunneltermination.html:23 #: netbox/templates/wireless/inc/wirelesslink_interface.html:6 #: netbox/virtualization/filtersets.py:167 @@ -3461,7 +3826,7 @@ msgstr "平台" #: netbox/virtualization/forms/bulk_import.py:99 #: netbox/virtualization/forms/filtersets.py:128 #: netbox/virtualization/forms/model_forms.py:185 -#: netbox/virtualization/tables/virtualmachines.py:70 netbox/vpn/choices.py:44 +#: netbox/virtualization/tables/virtualmachines.py:71 netbox/vpn/choices.py:44 #: netbox/vpn/forms/bulk_import.py:86 netbox/vpn/forms/bulk_import.py:283 #: netbox/vpn/forms/filtersets.py:275 netbox/vpn/forms/model_forms.py:90 #: netbox/vpn/forms/model_forms.py:125 netbox/vpn/forms/model_forms.py:236 @@ -3471,23 +3836,23 @@ msgstr "平台" msgid "Device" msgstr "设备" -#: netbox/dcim/forms/bulk_edit.py:629 +#: netbox/dcim/forms/bulk_edit.py:731 #: netbox/templates/extras/dashboard/widget_config.html:7 #: netbox/virtualization/forms/bulk_edit.py:191 msgid "Configuration" msgstr "配置" -#: netbox/dcim/forms/bulk_edit.py:643 netbox/dcim/forms/bulk_import.py:592 -#: netbox/dcim/forms/model_forms.py:590 netbox/dcim/forms/model_forms.py:845 +#: netbox/dcim/forms/bulk_edit.py:745 netbox/dcim/forms/bulk_import.py:653 +#: netbox/dcim/forms/model_forms.py:647 netbox/dcim/forms/model_forms.py:897 msgid "Module type" msgstr "模块类型" -#: netbox/dcim/forms/bulk_edit.py:697 netbox/dcim/forms/bulk_edit.py:882 -#: netbox/dcim/forms/bulk_edit.py:901 netbox/dcim/forms/bulk_edit.py:924 -#: netbox/dcim/forms/bulk_edit.py:966 netbox/dcim/forms/bulk_edit.py:1010 -#: netbox/dcim/forms/bulk_edit.py:1061 netbox/dcim/forms/bulk_edit.py:1088 -#: netbox/dcim/forms/bulk_edit.py:1115 netbox/dcim/forms/bulk_edit.py:1133 -#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:66 +#: netbox/dcim/forms/bulk_edit.py:799 netbox/dcim/forms/bulk_edit.py:984 +#: netbox/dcim/forms/bulk_edit.py:1003 netbox/dcim/forms/bulk_edit.py:1026 +#: netbox/dcim/forms/bulk_edit.py:1068 netbox/dcim/forms/bulk_edit.py:1112 +#: netbox/dcim/forms/bulk_edit.py:1163 netbox/dcim/forms/bulk_edit.py:1190 +#: netbox/dcim/forms/bulk_edit.py:1217 netbox/dcim/forms/bulk_edit.py:1235 +#: netbox/dcim/forms/bulk_edit.py:1253 netbox/dcim/forms/filtersets.py:67 #: netbox/dcim/forms/object_create.py:46 netbox/templates/dcim/cable.html:32 #: netbox/templates/dcim/consoleport.html:32 #: netbox/templates/dcim/consoleserverport.html:32 @@ -3496,7 +3861,7 @@ msgstr "模块类型" #: netbox/templates/dcim/inc/panels/inventory_items.html:19 #: netbox/templates/dcim/interface.html:42 #: netbox/templates/dcim/inventoryitem.html:32 -#: netbox/templates/dcim/modulebay.html:30 +#: netbox/templates/dcim/modulebay.html:34 #: netbox/templates/dcim/poweroutlet.html:32 #: netbox/templates/dcim/powerport.html:32 #: netbox/templates/dcim/rearport.html:32 @@ -3505,141 +3870,142 @@ msgstr "模块类型" msgid "Label" msgstr "标记" -#: netbox/dcim/forms/bulk_edit.py:706 netbox/dcim/forms/filtersets.py:1008 +#: netbox/dcim/forms/bulk_edit.py:808 netbox/dcim/forms/filtersets.py:1068 #: netbox/templates/dcim/cable.html:50 msgid "Length" msgstr "长度" -#: netbox/dcim/forms/bulk_edit.py:711 netbox/dcim/forms/bulk_import.py:1165 -#: netbox/dcim/forms/bulk_import.py:1168 netbox/dcim/forms/filtersets.py:1012 +#: netbox/dcim/forms/bulk_edit.py:813 netbox/dcim/forms/bulk_import.py:1226 +#: netbox/dcim/forms/bulk_import.py:1229 netbox/dcim/forms/filtersets.py:1072 msgid "Length unit" msgstr "长度单位" -#: netbox/dcim/forms/bulk_edit.py:735 +#: netbox/dcim/forms/bulk_edit.py:837 #: netbox/templates/dcim/virtualchassis.html:23 msgid "Domain" msgstr "域" -#: netbox/dcim/forms/bulk_edit.py:803 netbox/dcim/forms/bulk_import.py:1284 -#: netbox/dcim/forms/filtersets.py:1098 netbox/dcim/forms/model_forms.py:698 +#: netbox/dcim/forms/bulk_edit.py:905 netbox/dcim/forms/bulk_import.py:1345 +#: netbox/dcim/forms/filtersets.py:1158 netbox/dcim/forms/model_forms.py:750 msgid "Power panel" msgstr "电源面版" -#: netbox/dcim/forms/bulk_edit.py:825 netbox/dcim/forms/bulk_import.py:1320 -#: netbox/dcim/forms/filtersets.py:1120 +#: netbox/dcim/forms/bulk_edit.py:927 netbox/dcim/forms/bulk_import.py:1381 +#: netbox/dcim/forms/filtersets.py:1180 #: netbox/templates/dcim/powerfeed.html:83 msgid "Supply" msgstr "供应" -#: netbox/dcim/forms/bulk_edit.py:831 netbox/dcim/forms/bulk_import.py:1325 -#: netbox/dcim/forms/filtersets.py:1125 +#: netbox/dcim/forms/bulk_edit.py:933 netbox/dcim/forms/bulk_import.py:1386 +#: netbox/dcim/forms/filtersets.py:1185 #: netbox/templates/dcim/powerfeed.html:95 msgid "Phase" msgstr "相位" -#: netbox/dcim/forms/bulk_edit.py:837 netbox/dcim/forms/filtersets.py:1130 +#: netbox/dcim/forms/bulk_edit.py:939 netbox/dcim/forms/filtersets.py:1190 #: netbox/templates/dcim/powerfeed.html:87 msgid "Voltage" msgstr "电压" -#: netbox/dcim/forms/bulk_edit.py:841 netbox/dcim/forms/filtersets.py:1134 +#: netbox/dcim/forms/bulk_edit.py:943 netbox/dcim/forms/filtersets.py:1194 #: netbox/templates/dcim/powerfeed.html:91 msgid "Amperage" msgstr "电流" -#: netbox/dcim/forms/bulk_edit.py:845 netbox/dcim/forms/filtersets.py:1138 +#: netbox/dcim/forms/bulk_edit.py:947 netbox/dcim/forms/filtersets.py:1198 msgid "Max utilization" msgstr "最大利用率" -#: netbox/dcim/forms/bulk_edit.py:934 +#: netbox/dcim/forms/bulk_edit.py:1036 msgid "Maximum draw" msgstr "最大功率" -#: netbox/dcim/forms/bulk_edit.py:937 -#: netbox/dcim/models/device_component_templates.py:256 +#: netbox/dcim/forms/bulk_edit.py:1039 +#: netbox/dcim/models/device_component_templates.py:283 #: netbox/dcim/models/device_components.py:357 msgid "Maximum power draw (watts)" msgstr "最大功率(瓦)" -#: netbox/dcim/forms/bulk_edit.py:940 +#: netbox/dcim/forms/bulk_edit.py:1042 msgid "Allocated draw" msgstr "分配功率" -#: netbox/dcim/forms/bulk_edit.py:943 -#: netbox/dcim/models/device_component_templates.py:263 +#: netbox/dcim/forms/bulk_edit.py:1045 +#: netbox/dcim/models/device_component_templates.py:290 #: netbox/dcim/models/device_components.py:364 msgid "Allocated power draw (watts)" msgstr "分配功率(瓦)" -#: netbox/dcim/forms/bulk_edit.py:976 netbox/dcim/forms/bulk_import.py:725 -#: netbox/dcim/forms/model_forms.py:901 netbox/dcim/forms/model_forms.py:1226 -#: netbox/dcim/forms/model_forms.py:1514 netbox/dcim/forms/object_import.py:55 +#: netbox/dcim/forms/bulk_edit.py:1078 netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/model_forms.py:953 netbox/dcim/forms/model_forms.py:1278 +#: netbox/dcim/forms/model_forms.py:1566 netbox/dcim/forms/object_import.py:55 msgid "Power port" msgstr "电源接口" -#: netbox/dcim/forms/bulk_edit.py:981 netbox/dcim/forms/bulk_import.py:732 +#: netbox/dcim/forms/bulk_edit.py:1083 netbox/dcim/forms/bulk_import.py:793 msgid "Feed leg" msgstr "馈电线路" -#: netbox/dcim/forms/bulk_edit.py:1027 netbox/dcim/forms/bulk_edit.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1129 netbox/dcim/forms/bulk_edit.py:1440 msgid "Management only" msgstr "仅限管理" -#: netbox/dcim/forms/bulk_edit.py:1037 netbox/dcim/forms/bulk_edit.py:1344 -#: netbox/dcim/forms/bulk_import.py:815 netbox/dcim/forms/filtersets.py:1334 +#: netbox/dcim/forms/bulk_edit.py:1139 netbox/dcim/forms/bulk_edit.py:1446 +#: netbox/dcim/forms/bulk_import.py:876 netbox/dcim/forms/filtersets.py:1394 #: netbox/dcim/forms/object_import.py:90 -#: netbox/dcim/models/device_component_templates.py:411 +#: netbox/dcim/models/device_component_templates.py:438 #: netbox/dcim/models/device_components.py:671 msgid "PoE mode" msgstr "PoE模式" -#: netbox/dcim/forms/bulk_edit.py:1043 netbox/dcim/forms/bulk_edit.py:1350 -#: netbox/dcim/forms/bulk_import.py:821 netbox/dcim/forms/filtersets.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1145 netbox/dcim/forms/bulk_edit.py:1452 +#: netbox/dcim/forms/bulk_import.py:882 netbox/dcim/forms/filtersets.py:1399 #: netbox/dcim/forms/object_import.py:95 -#: netbox/dcim/models/device_component_templates.py:417 +#: netbox/dcim/models/device_component_templates.py:444 #: netbox/dcim/models/device_components.py:677 msgid "PoE type" msgstr "PoE类型" -#: netbox/dcim/forms/bulk_edit.py:1049 netbox/dcim/forms/filtersets.py:1344 +#: netbox/dcim/forms/bulk_edit.py:1151 netbox/dcim/forms/filtersets.py:1404 #: netbox/dcim/forms/object_import.py:100 msgid "Wireless role" msgstr "无线角色" -#: netbox/dcim/forms/bulk_edit.py:1186 netbox/dcim/forms/model_forms.py:612 -#: netbox/dcim/forms/model_forms.py:1171 netbox/dcim/tables/devices.py:313 +#: netbox/dcim/forms/bulk_edit.py:1288 netbox/dcim/forms/model_forms.py:669 +#: netbox/dcim/forms/model_forms.py:1223 netbox/dcim/tables/devices.py:313 #: netbox/templates/dcim/consoleport.html:24 #: netbox/templates/dcim/consoleserverport.html:24 #: netbox/templates/dcim/frontport.html:24 #: netbox/templates/dcim/interface.html:34 -#: netbox/templates/dcim/module.html:51 -#: netbox/templates/dcim/modulebay.html:54 +#: netbox/templates/dcim/module.html:54 +#: netbox/templates/dcim/modulebay.html:26 +#: netbox/templates/dcim/modulebay.html:58 #: netbox/templates/dcim/poweroutlet.html:24 #: netbox/templates/dcim/powerport.html:24 #: netbox/templates/dcim/rearport.html:24 msgid "Module" msgstr "模块" -#: netbox/dcim/forms/bulk_edit.py:1318 netbox/dcim/tables/devices.py:659 +#: netbox/dcim/forms/bulk_edit.py:1420 netbox/dcim/tables/devices.py:662 #: netbox/templates/dcim/interface.html:110 msgid "LAG" msgstr "链路聚合" -#: netbox/dcim/forms/bulk_edit.py:1323 netbox/dcim/forms/model_forms.py:1253 +#: netbox/dcim/forms/bulk_edit.py:1425 netbox/dcim/forms/model_forms.py:1305 msgid "Virtual device contexts" msgstr "设备虚拟上下文" -#: netbox/dcim/forms/bulk_edit.py:1329 netbox/dcim/forms/bulk_import.py:653 -#: netbox/dcim/forms/bulk_import.py:679 netbox/dcim/forms/filtersets.py:1192 -#: netbox/dcim/forms/filtersets.py:1217 netbox/dcim/forms/filtersets.py:1298 -#: netbox/dcim/tables/devices.py:604 +#: netbox/dcim/forms/bulk_edit.py:1431 netbox/dcim/forms/bulk_import.py:714 +#: netbox/dcim/forms/bulk_import.py:740 netbox/dcim/forms/filtersets.py:1252 +#: netbox/dcim/forms/filtersets.py:1277 netbox/dcim/forms/filtersets.py:1358 +#: netbox/dcim/tables/devices.py:607 #: netbox/templates/circuits/inc/circuit_termination_fields.html:67 #: netbox/templates/dcim/consoleport.html:40 #: netbox/templates/dcim/consoleserverport.html:40 msgid "Speed" msgstr "速率" -#: netbox/dcim/forms/bulk_edit.py:1358 netbox/dcim/forms/bulk_import.py:824 +#: netbox/dcim/forms/bulk_edit.py:1460 netbox/dcim/forms/bulk_import.py:885 #: netbox/templates/vpn/ikepolicy.html:25 #: netbox/templates/vpn/ipsecprofile.html:21 #: netbox/templates/vpn/ipsecprofile.html:48 @@ -3653,525 +4019,530 @@ msgstr "速率" msgid "Mode" msgstr "模式" -#: netbox/dcim/forms/bulk_edit.py:1366 netbox/dcim/forms/model_forms.py:1302 -#: netbox/ipam/forms/bulk_import.py:177 netbox/ipam/forms/filtersets.py:505 +#: netbox/dcim/forms/bulk_edit.py:1468 netbox/dcim/forms/model_forms.py:1354 +#: netbox/ipam/forms/bulk_import.py:178 netbox/ipam/forms/filtersets.py:498 #: netbox/ipam/models/vlans.py:84 netbox/virtualization/forms/bulk_edit.py:240 #: netbox/virtualization/forms/model_forms.py:321 msgid "VLAN group" msgstr "VLAN 组" -#: netbox/dcim/forms/bulk_edit.py:1374 netbox/dcim/forms/model_forms.py:1307 -#: netbox/dcim/tables/devices.py:576 +#: netbox/dcim/forms/bulk_edit.py:1476 netbox/dcim/forms/model_forms.py:1359 +#: netbox/dcim/tables/devices.py:579 #: netbox/virtualization/forms/bulk_edit.py:248 #: netbox/virtualization/forms/model_forms.py:326 msgid "Untagged VLAN" msgstr "未标记的VLAN" -#: netbox/dcim/forms/bulk_edit.py:1382 netbox/dcim/forms/model_forms.py:1316 -#: netbox/dcim/tables/devices.py:582 +#: netbox/dcim/forms/bulk_edit.py:1484 netbox/dcim/forms/model_forms.py:1368 +#: netbox/dcim/tables/devices.py:585 #: netbox/virtualization/forms/bulk_edit.py:256 #: netbox/virtualization/forms/model_forms.py:335 msgid "Tagged VLANs" msgstr "已标记 VLANs" -#: netbox/dcim/forms/bulk_edit.py:1392 netbox/dcim/forms/model_forms.py:1289 +#: netbox/dcim/forms/bulk_edit.py:1494 netbox/dcim/forms/model_forms.py:1341 msgid "Wireless LAN group" msgstr "无线局域网组" -#: netbox/dcim/forms/bulk_edit.py:1397 netbox/dcim/forms/model_forms.py:1294 -#: netbox/dcim/tables/devices.py:613 netbox/netbox/navigation/menu.py:133 +#: netbox/dcim/forms/bulk_edit.py:1499 netbox/dcim/forms/model_forms.py:1346 +#: netbox/dcim/tables/devices.py:616 netbox/netbox/navigation/menu.py:146 #: netbox/templates/dcim/interface.html:280 #: netbox/wireless/tables/wirelesslan.py:24 msgid "Wireless LANs" msgstr "无线局域网" -#: netbox/dcim/forms/bulk_edit.py:1406 netbox/dcim/forms/filtersets.py:1268 -#: netbox/dcim/forms/model_forms.py:1337 netbox/ipam/forms/bulk_edit.py:284 -#: netbox/ipam/forms/bulk_edit.py:376 netbox/ipam/forms/filtersets.py:169 +#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328 +#: netbox/dcim/forms/model_forms.py:1389 netbox/ipam/forms/bulk_edit.py:285 +#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169 #: netbox/templates/dcim/interface.html:122 #: netbox/templates/ipam/prefix.html:95 #: netbox/virtualization/forms/model_forms.py:349 msgid "Addressing" msgstr "寻址" -#: netbox/dcim/forms/bulk_edit.py:1407 netbox/dcim/forms/filtersets.py:660 -#: netbox/dcim/forms/model_forms.py:1338 +#: netbox/dcim/forms/bulk_edit.py:1509 netbox/dcim/forms/filtersets.py:720 +#: netbox/dcim/forms/model_forms.py:1390 #: netbox/virtualization/forms/model_forms.py:350 msgid "Operation" msgstr "操作" -#: netbox/dcim/forms/bulk_edit.py:1408 netbox/dcim/forms/filtersets.py:1269 -#: netbox/dcim/forms/model_forms.py:935 netbox/dcim/forms/model_forms.py:1340 +#: netbox/dcim/forms/bulk_edit.py:1510 netbox/dcim/forms/filtersets.py:1329 +#: netbox/dcim/forms/model_forms.py:987 netbox/dcim/forms/model_forms.py:1392 msgid "PoE" msgstr "PoE" -#: netbox/dcim/forms/bulk_edit.py:1409 netbox/dcim/forms/model_forms.py:1339 +#: netbox/dcim/forms/bulk_edit.py:1511 netbox/dcim/forms/model_forms.py:1391 #: netbox/templates/dcim/interface.html:99 #: netbox/virtualization/forms/bulk_edit.py:267 #: netbox/virtualization/forms/model_forms.py:351 msgid "Related Interfaces" msgstr "相关接口" -#: netbox/dcim/forms/bulk_edit.py:1410 netbox/dcim/forms/model_forms.py:1341 +#: netbox/dcim/forms/bulk_edit.py:1512 netbox/dcim/forms/model_forms.py:1393 #: netbox/virtualization/forms/bulk_edit.py:268 #: netbox/virtualization/forms/model_forms.py:352 msgid "802.1Q Switching" msgstr "802.1Q 交换" -#: netbox/dcim/forms/bulk_edit.py:1472 netbox/dcim/forms/bulk_edit.py:1474 +#: netbox/dcim/forms/bulk_edit.py:1574 netbox/dcim/forms/bulk_edit.py:1576 msgid "Interface mode must be specified to assign VLANs" msgstr "该接口模式下,必须指定VLAN" -#: netbox/dcim/forms/bulk_edit.py:1479 netbox/dcim/forms/common.py:50 +#: netbox/dcim/forms/bulk_edit.py:1581 netbox/dcim/forms/common.py:50 msgid "An access interface cannot have tagged VLANs assigned." msgstr "access接口不允许指定Tag的VLAN" -#: netbox/dcim/forms/bulk_import.py:63 +#: netbox/dcim/forms/bulk_import.py:64 msgid "Name of parent region" msgstr "上一级区域的名称" -#: netbox/dcim/forms/bulk_import.py:77 +#: netbox/dcim/forms/bulk_import.py:78 msgid "Name of parent site group" msgstr "上一级站点组的名称" -#: netbox/dcim/forms/bulk_import.py:96 +#: netbox/dcim/forms/bulk_import.py:97 msgid "Assigned region" msgstr "指定地区" -#: netbox/dcim/forms/bulk_import.py:103 netbox/tenancy/forms/bulk_import.py:44 +#: netbox/dcim/forms/bulk_import.py:104 netbox/tenancy/forms/bulk_import.py:44 #: netbox/tenancy/forms/bulk_import.py:85 #: netbox/wireless/forms/bulk_import.py:40 msgid "Assigned group" msgstr "指定组" -#: netbox/dcim/forms/bulk_import.py:122 +#: netbox/dcim/forms/bulk_import.py:123 msgid "available options" msgstr "可用选项" -#: netbox/dcim/forms/bulk_import.py:133 netbox/dcim/forms/bulk_import.py:482 -#: netbox/dcim/forms/bulk_import.py:1281 netbox/ipam/forms/bulk_import.py:174 -#: netbox/ipam/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:134 netbox/dcim/forms/bulk_import.py:543 +#: netbox/dcim/forms/bulk_import.py:1342 netbox/ipam/forms/bulk_import.py:175 +#: netbox/ipam/forms/bulk_import.py:433 #: netbox/virtualization/forms/bulk_import.py:63 #: netbox/virtualization/forms/bulk_import.py:89 msgid "Assigned site" msgstr "指定站点" -#: netbox/dcim/forms/bulk_import.py:140 +#: netbox/dcim/forms/bulk_import.py:141 msgid "Parent location" msgstr "上一级位置" -#: netbox/dcim/forms/bulk_import.py:142 +#: netbox/dcim/forms/bulk_import.py:143 msgid "Location not found." msgstr "未找到该位置" -#: netbox/dcim/forms/bulk_import.py:196 -msgid "Name of assigned tenant" -msgstr "指定租户名称" - -#: netbox/dcim/forms/bulk_import.py:208 -msgid "Name of assigned role" -msgstr "指定规则名称" +#: netbox/dcim/forms/bulk_import.py:185 +msgid "The manufacturer of this rack type" +msgstr "这种机架类型的制造商" -#: netbox/dcim/forms/bulk_import.py:214 -msgid "Rack type" -msgstr "机柜类型" +#: netbox/dcim/forms/bulk_import.py:196 +msgid "The lowest-numbered position in the rack" +msgstr "机架中编号最低的位置" -#: netbox/dcim/forms/bulk_import.py:219 +#: netbox/dcim/forms/bulk_import.py:201 netbox/dcim/forms/bulk_import.py:268 msgid "Rail-to-rail width (in inches)" msgstr "设备安装宽度(英寸)" -#: netbox/dcim/forms/bulk_import.py:225 +#: netbox/dcim/forms/bulk_import.py:207 netbox/dcim/forms/bulk_import.py:274 msgid "Unit for outer dimensions" msgstr "外形尺寸单位" -#: netbox/dcim/forms/bulk_import.py:231 +#: netbox/dcim/forms/bulk_import.py:213 netbox/dcim/forms/bulk_import.py:286 msgid "Unit for rack weights" msgstr "机柜重量单位" +#: netbox/dcim/forms/bulk_import.py:245 +msgid "Name of assigned tenant" +msgstr "指定租户名称" + #: netbox/dcim/forms/bulk_import.py:257 +msgid "Name of assigned role" +msgstr "指定规则名称" + +#: netbox/dcim/forms/bulk_import.py:280 netbox/dcim/forms/bulk_import.py:413 +#: netbox/dcim/forms/bulk_import.py:583 +msgid "Airflow direction" +msgstr "风道方向" + +#: netbox/dcim/forms/bulk_import.py:312 msgid "Parent site" msgstr "上一级站点" -#: netbox/dcim/forms/bulk_import.py:264 netbox/dcim/forms/bulk_import.py:1294 +#: netbox/dcim/forms/bulk_import.py:319 netbox/dcim/forms/bulk_import.py:1355 msgid "Rack's location (if any)" msgstr "机柜所在位置(如果有)" -#: netbox/dcim/forms/bulk_import.py:273 netbox/dcim/forms/model_forms.py:253 -#: netbox/dcim/tables/racks.py:153 +#: netbox/dcim/forms/bulk_import.py:328 netbox/dcim/forms/model_forms.py:311 +#: netbox/dcim/tables/racks.py:222 #: netbox/templates/dcim/rackreservation.html:12 #: netbox/templates/dcim/rackreservation.html:45 msgid "Units" msgstr "单元(U)" -#: netbox/dcim/forms/bulk_import.py:276 +#: netbox/dcim/forms/bulk_import.py:331 msgid "Comma-separated list of individual unit numbers" msgstr "占用U位号列表,以逗号分隔" -#: netbox/dcim/forms/bulk_import.py:319 +#: netbox/dcim/forms/bulk_import.py:374 msgid "The manufacturer which produces this device type" msgstr "生产这种类型设备的制造商" -#: netbox/dcim/forms/bulk_import.py:326 +#: netbox/dcim/forms/bulk_import.py:381 msgid "The default platform for devices of this type (optional)" msgstr "此类型设备的默认平台(可选)" -#: netbox/dcim/forms/bulk_import.py:331 +#: netbox/dcim/forms/bulk_import.py:386 msgid "Device weight" msgstr "设备重量" -#: netbox/dcim/forms/bulk_import.py:337 +#: netbox/dcim/forms/bulk_import.py:392 msgid "Unit for device weight" msgstr "设备重量单位" -#: netbox/dcim/forms/bulk_import.py:357 +#: netbox/dcim/forms/bulk_import.py:418 msgid "Module weight" msgstr "模块重量" -#: netbox/dcim/forms/bulk_import.py:363 +#: netbox/dcim/forms/bulk_import.py:424 msgid "Unit for module weight" msgstr "模块重量单位" -#: netbox/dcim/forms/bulk_import.py:393 +#: netbox/dcim/forms/bulk_import.py:454 msgid "Limit platform assignments to this manufacturer" msgstr "限定此系统平台的制造商" -#: netbox/dcim/forms/bulk_import.py:415 netbox/dcim/forms/bulk_import.py:1364 +#: netbox/dcim/forms/bulk_import.py:476 netbox/dcim/forms/bulk_import.py:1425 #: netbox/tenancy/forms/bulk_import.py:106 msgid "Assigned role" msgstr "指定规则" -#: netbox/dcim/forms/bulk_import.py:428 +#: netbox/dcim/forms/bulk_import.py:489 msgid "Device type manufacturer" msgstr "设备制造商" -#: netbox/dcim/forms/bulk_import.py:434 +#: netbox/dcim/forms/bulk_import.py:495 msgid "Device type model" msgstr "设备型号" -#: netbox/dcim/forms/bulk_import.py:441 +#: netbox/dcim/forms/bulk_import.py:502 #: netbox/virtualization/forms/bulk_import.py:126 msgid "Assigned platform" msgstr "指定系统平台" -#: netbox/dcim/forms/bulk_import.py:449 netbox/dcim/forms/bulk_import.py:453 -#: netbox/dcim/forms/model_forms.py:479 +#: netbox/dcim/forms/bulk_import.py:510 netbox/dcim/forms/bulk_import.py:514 +#: netbox/dcim/forms/model_forms.py:536 msgid "Virtual chassis" msgstr "堆叠" -#: netbox/dcim/forms/bulk_import.py:456 netbox/dcim/forms/filtersets.py:668 -#: netbox/dcim/forms/filtersets.py:838 netbox/dcim/forms/model_forms.py:465 -#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:548 -#: netbox/extras/forms/filtersets.py:331 netbox/ipam/forms/bulk_edit.py:493 -#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:459 +#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728 +#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522 +#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596 +#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482 +#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447 #: netbox/templates/dcim/device.html:239 #: netbox/templates/virtualization/cluster.html:10 -#: netbox/templates/virtualization/virtualmachine.html:88 -#: netbox/templates/virtualization/virtualmachine.html:97 +#: netbox/templates/virtualization/virtualmachine.html:92 +#: netbox/templates/virtualization/virtualmachine.html:101 #: netbox/virtualization/filtersets.py:157 -#: netbox/virtualization/filtersets.py:273 +#: netbox/virtualization/filtersets.py:277 #: netbox/virtualization/forms/bulk_edit.py:129 #: netbox/virtualization/forms/bulk_import.py:92 #: netbox/virtualization/forms/filtersets.py:99 #: netbox/virtualization/forms/filtersets.py:123 -#: netbox/virtualization/forms/filtersets.py:200 +#: netbox/virtualization/forms/filtersets.py:204 #: netbox/virtualization/forms/model_forms.py:79 #: netbox/virtualization/forms/model_forms.py:176 -#: netbox/virtualization/tables/virtualmachines.py:66 +#: netbox/virtualization/tables/virtualmachines.py:67 msgid "Cluster" msgstr "集群" -#: netbox/dcim/forms/bulk_import.py:460 +#: netbox/dcim/forms/bulk_import.py:521 msgid "Virtualization cluster" msgstr "虚拟化集群" -#: netbox/dcim/forms/bulk_import.py:489 +#: netbox/dcim/forms/bulk_import.py:550 msgid "Assigned location (if any)" msgstr "指定位置(如果有)" -#: netbox/dcim/forms/bulk_import.py:496 +#: netbox/dcim/forms/bulk_import.py:557 msgid "Assigned rack (if any)" msgstr "指定机柜(如果有)" -#: netbox/dcim/forms/bulk_import.py:499 +#: netbox/dcim/forms/bulk_import.py:560 msgid "Face" msgstr "朝向" -#: netbox/dcim/forms/bulk_import.py:502 +#: netbox/dcim/forms/bulk_import.py:563 msgid "Mounted rack face" msgstr "机架正面安装" -#: netbox/dcim/forms/bulk_import.py:509 +#: netbox/dcim/forms/bulk_import.py:570 msgid "Parent device (for child devices)" msgstr "上一级设备(用于子设备)" -#: netbox/dcim/forms/bulk_import.py:512 +#: netbox/dcim/forms/bulk_import.py:573 msgid "Device bay" msgstr "设备托架" -#: netbox/dcim/forms/bulk_import.py:516 +#: netbox/dcim/forms/bulk_import.py:577 msgid "Device bay in which this device is installed (for child devices)" msgstr "安装此设备的设备托架(用于子设备)" -#: netbox/dcim/forms/bulk_import.py:522 -msgid "Airflow direction" -msgstr "风道方向" - -#: netbox/dcim/forms/bulk_import.py:583 +#: netbox/dcim/forms/bulk_import.py:644 msgid "The device in which this module is installed" msgstr "安装此模块的设备" -#: netbox/dcim/forms/bulk_import.py:586 netbox/dcim/forms/model_forms.py:583 +#: netbox/dcim/forms/bulk_import.py:647 netbox/dcim/forms/model_forms.py:640 msgid "Module bay" msgstr "设备板卡插槽" -#: netbox/dcim/forms/bulk_import.py:589 +#: netbox/dcim/forms/bulk_import.py:650 msgid "The module bay in which this module is installed" msgstr "安装此模块的模块托架" -#: netbox/dcim/forms/bulk_import.py:595 +#: netbox/dcim/forms/bulk_import.py:656 msgid "The type of module" msgstr "模块类型" -#: netbox/dcim/forms/bulk_import.py:603 netbox/dcim/forms/model_forms.py:599 +#: netbox/dcim/forms/bulk_import.py:664 netbox/dcim/forms/model_forms.py:656 msgid "Replicate components" msgstr "组件冗余" -#: netbox/dcim/forms/bulk_import.py:605 +#: netbox/dcim/forms/bulk_import.py:666 msgid "" "Automatically populate components associated with this module type (enabled " "by default)" msgstr "自动填充此模块类型关联的组件(默认启用)" -#: netbox/dcim/forms/bulk_import.py:608 netbox/dcim/forms/model_forms.py:605 +#: netbox/dcim/forms/bulk_import.py:669 netbox/dcim/forms/model_forms.py:662 msgid "Adopt components" msgstr "选定组件" -#: netbox/dcim/forms/bulk_import.py:610 netbox/dcim/forms/model_forms.py:608 +#: netbox/dcim/forms/bulk_import.py:671 netbox/dcim/forms/model_forms.py:665 msgid "Adopt already existing components" msgstr "选定已经存在的组件" -#: netbox/dcim/forms/bulk_import.py:650 netbox/dcim/forms/bulk_import.py:676 -#: netbox/dcim/forms/bulk_import.py:702 +#: netbox/dcim/forms/bulk_import.py:711 netbox/dcim/forms/bulk_import.py:737 +#: netbox/dcim/forms/bulk_import.py:763 msgid "Port type" msgstr "端口类型" -#: netbox/dcim/forms/bulk_import.py:658 netbox/dcim/forms/bulk_import.py:684 +#: netbox/dcim/forms/bulk_import.py:719 netbox/dcim/forms/bulk_import.py:745 msgid "Port speed in bps" msgstr "端口速率(bps)" -#: netbox/dcim/forms/bulk_import.py:722 +#: netbox/dcim/forms/bulk_import.py:783 msgid "Outlet type" msgstr "插座类型" -#: netbox/dcim/forms/bulk_import.py:729 +#: netbox/dcim/forms/bulk_import.py:790 msgid "Local power port which feeds this outlet" msgstr "该插座供电的电源端口" -#: netbox/dcim/forms/bulk_import.py:735 +#: netbox/dcim/forms/bulk_import.py:796 msgid "Electrical phase (for three-phase circuits)" msgstr "供电相位(用于三相电)" -#: netbox/dcim/forms/bulk_import.py:776 netbox/dcim/forms/model_forms.py:1264 +#: netbox/dcim/forms/bulk_import.py:837 netbox/dcim/forms/model_forms.py:1316 #: netbox/virtualization/forms/bulk_import.py:155 #: netbox/virtualization/forms/model_forms.py:305 msgid "Parent interface" msgstr "上一级接口" -#: netbox/dcim/forms/bulk_import.py:783 netbox/dcim/forms/model_forms.py:1272 +#: netbox/dcim/forms/bulk_import.py:844 netbox/dcim/forms/model_forms.py:1324 #: netbox/virtualization/forms/bulk_import.py:162 #: netbox/virtualization/forms/model_forms.py:313 msgid "Bridged interface" msgstr "桥接接口" -#: netbox/dcim/forms/bulk_import.py:786 +#: netbox/dcim/forms/bulk_import.py:847 msgid "Lag" msgstr "聚合接口" -#: netbox/dcim/forms/bulk_import.py:790 +#: netbox/dcim/forms/bulk_import.py:851 msgid "Parent LAG interface" msgstr "上一级聚合接口" -#: netbox/dcim/forms/bulk_import.py:793 +#: netbox/dcim/forms/bulk_import.py:854 msgid "Vdcs" msgstr "Vdcs" -#: netbox/dcim/forms/bulk_import.py:798 +#: netbox/dcim/forms/bulk_import.py:859 msgid "VDC names separated by commas, encased with double quotes. Example:" msgstr "VDC名称,用逗号分隔,用双引号包含。例如:" -#: netbox/dcim/forms/bulk_import.py:804 +#: netbox/dcim/forms/bulk_import.py:865 msgid "Physical medium" msgstr "物理接口类型" -#: netbox/dcim/forms/bulk_import.py:807 netbox/dcim/forms/filtersets.py:1305 +#: netbox/dcim/forms/bulk_import.py:868 netbox/dcim/forms/filtersets.py:1365 msgid "Duplex" msgstr "双工" -#: netbox/dcim/forms/bulk_import.py:812 +#: netbox/dcim/forms/bulk_import.py:873 msgid "Poe mode" msgstr "POE模式" -#: netbox/dcim/forms/bulk_import.py:818 +#: netbox/dcim/forms/bulk_import.py:879 msgid "Poe type" msgstr "POE类型" -#: netbox/dcim/forms/bulk_import.py:827 +#: netbox/dcim/forms/bulk_import.py:888 #: netbox/virtualization/forms/bulk_import.py:168 msgid "IEEE 802.1Q operational mode (for L2 interfaces)" msgstr "IEEE 802.1Q 运作模式(针对二层接口)" -#: netbox/dcim/forms/bulk_import.py:834 netbox/ipam/forms/bulk_import.py:160 -#: netbox/ipam/forms/bulk_import.py:246 netbox/ipam/forms/bulk_import.py:282 +#: netbox/dcim/forms/bulk_import.py:895 netbox/ipam/forms/bulk_import.py:161 +#: netbox/ipam/forms/bulk_import.py:247 netbox/ipam/forms/bulk_import.py:283 #: netbox/ipam/forms/filtersets.py:201 netbox/ipam/forms/filtersets.py:277 #: netbox/ipam/forms/filtersets.py:336 #: netbox/virtualization/forms/bulk_import.py:175 msgid "Assigned VRF" msgstr "指定VRF" -#: netbox/dcim/forms/bulk_import.py:837 +#: netbox/dcim/forms/bulk_import.py:898 msgid "Rf role" msgstr "射频类型" -#: netbox/dcim/forms/bulk_import.py:840 +#: netbox/dcim/forms/bulk_import.py:901 msgid "Wireless role (AP/station)" msgstr "无线角色(AP/基站)" -#: netbox/dcim/forms/bulk_import.py:876 +#: netbox/dcim/forms/bulk_import.py:937 #, python-brace-format msgid "VDC {vdc} is not assigned to device {device}" msgstr "VDC {vdc} 没有指定给设备 {device}" -#: netbox/dcim/forms/bulk_import.py:890 netbox/dcim/forms/model_forms.py:948 -#: netbox/dcim/forms/model_forms.py:1522 +#: netbox/dcim/forms/bulk_import.py:951 netbox/dcim/forms/model_forms.py:1000 +#: netbox/dcim/forms/model_forms.py:1574 #: netbox/dcim/forms/object_import.py:117 msgid "Rear port" msgstr "后置端口" -#: netbox/dcim/forms/bulk_import.py:893 +#: netbox/dcim/forms/bulk_import.py:954 msgid "Corresponding rear port" msgstr "对应后置端口" -#: netbox/dcim/forms/bulk_import.py:898 netbox/dcim/forms/bulk_import.py:939 -#: netbox/dcim/forms/bulk_import.py:1155 +#: netbox/dcim/forms/bulk_import.py:959 netbox/dcim/forms/bulk_import.py:1000 +#: netbox/dcim/forms/bulk_import.py:1216 msgid "Physical medium classification" msgstr "物理端口类型" -#: netbox/dcim/forms/bulk_import.py:967 netbox/dcim/tables/devices.py:815 +#: netbox/dcim/forms/bulk_import.py:1028 netbox/dcim/tables/devices.py:818 msgid "Installed device" msgstr "安装设备" -#: netbox/dcim/forms/bulk_import.py:971 +#: netbox/dcim/forms/bulk_import.py:1032 msgid "Child device installed within this bay" msgstr "此托架内安装的子设备" -#: netbox/dcim/forms/bulk_import.py:973 +#: netbox/dcim/forms/bulk_import.py:1034 msgid "Child device not found." msgstr "子设备未找到" -#: netbox/dcim/forms/bulk_import.py:1031 +#: netbox/dcim/forms/bulk_import.py:1092 msgid "Parent inventory item" msgstr "上一级库存项" -#: netbox/dcim/forms/bulk_import.py:1034 +#: netbox/dcim/forms/bulk_import.py:1095 msgid "Component type" msgstr "组件类型" -#: netbox/dcim/forms/bulk_import.py:1038 +#: netbox/dcim/forms/bulk_import.py:1099 msgid "Component Type" msgstr "组件类型" -#: netbox/dcim/forms/bulk_import.py:1041 +#: netbox/dcim/forms/bulk_import.py:1102 msgid "Compnent name" msgstr "组件名称" -#: netbox/dcim/forms/bulk_import.py:1043 +#: netbox/dcim/forms/bulk_import.py:1104 msgid "Component Name" msgstr "组件名称" -#: netbox/dcim/forms/bulk_import.py:1085 +#: netbox/dcim/forms/bulk_import.py:1146 #, python-brace-format msgid "Component not found: {device} - {component_name}" msgstr "组件未找到: {device} - {component_name}" -#: netbox/dcim/forms/bulk_import.py:1110 +#: netbox/dcim/forms/bulk_import.py:1171 msgid "Side A device" msgstr "A端设备" -#: netbox/dcim/forms/bulk_import.py:1113 netbox/dcim/forms/bulk_import.py:1131 +#: netbox/dcim/forms/bulk_import.py:1174 netbox/dcim/forms/bulk_import.py:1192 msgid "Device name" msgstr "设备名字" -#: netbox/dcim/forms/bulk_import.py:1116 +#: netbox/dcim/forms/bulk_import.py:1177 msgid "Side A type" msgstr "A端线缆类型" -#: netbox/dcim/forms/bulk_import.py:1119 netbox/dcim/forms/bulk_import.py:1137 +#: netbox/dcim/forms/bulk_import.py:1180 netbox/dcim/forms/bulk_import.py:1198 msgid "Termination type" msgstr "线缆接口类型" -#: netbox/dcim/forms/bulk_import.py:1122 +#: netbox/dcim/forms/bulk_import.py:1183 msgid "Side A name" msgstr "A端设备名称" -#: netbox/dcim/forms/bulk_import.py:1123 netbox/dcim/forms/bulk_import.py:1141 +#: netbox/dcim/forms/bulk_import.py:1184 netbox/dcim/forms/bulk_import.py:1202 msgid "Termination name" msgstr "线缆类型名称" -#: netbox/dcim/forms/bulk_import.py:1128 +#: netbox/dcim/forms/bulk_import.py:1189 msgid "Side B device" msgstr "B端设备" -#: netbox/dcim/forms/bulk_import.py:1134 +#: netbox/dcim/forms/bulk_import.py:1195 msgid "Side B type" msgstr "B端线缆类型" -#: netbox/dcim/forms/bulk_import.py:1140 +#: netbox/dcim/forms/bulk_import.py:1201 msgid "Side B name" msgstr "B端设备名称" -#: netbox/dcim/forms/bulk_import.py:1149 +#: netbox/dcim/forms/bulk_import.py:1210 #: netbox/wireless/forms/bulk_import.py:86 msgid "Connection status" msgstr "连接状态" -#: netbox/dcim/forms/bulk_import.py:1201 +#: netbox/dcim/forms/bulk_import.py:1262 #, python-brace-format msgid "Side {side_upper}: {device} {termination_object} is already connected" msgstr " {side_upper}端: {device} {termination_object}已连接" -#: netbox/dcim/forms/bulk_import.py:1207 +#: netbox/dcim/forms/bulk_import.py:1268 #, python-brace-format msgid "{side_upper} side termination not found: {device} {name}" msgstr "{side_upper} 端接口类型未发现: {device} {name}" -#: netbox/dcim/forms/bulk_import.py:1232 netbox/dcim/forms/model_forms.py:733 -#: netbox/dcim/tables/devices.py:1003 netbox/templates/dcim/device.html:132 +#: netbox/dcim/forms/bulk_import.py:1293 netbox/dcim/forms/model_forms.py:785 +#: netbox/dcim/tables/devices.py:1023 netbox/templates/dcim/device.html:132 #: netbox/templates/dcim/virtualchassis.html:27 #: netbox/templates/dcim/virtualchassis.html:67 msgid "Master" msgstr "Master" -#: netbox/dcim/forms/bulk_import.py:1236 +#: netbox/dcim/forms/bulk_import.py:1297 msgid "Master device" msgstr "主设备" -#: netbox/dcim/forms/bulk_import.py:1253 +#: netbox/dcim/forms/bulk_import.py:1314 msgid "Name of parent site" msgstr "父站点名称" -#: netbox/dcim/forms/bulk_import.py:1287 +#: netbox/dcim/forms/bulk_import.py:1348 msgid "Upstream power panel" msgstr "上一级电源面板" -#: netbox/dcim/forms/bulk_import.py:1317 +#: netbox/dcim/forms/bulk_import.py:1378 msgid "Primary or redundant" msgstr "主线路/备用线路" -#: netbox/dcim/forms/bulk_import.py:1322 +#: netbox/dcim/forms/bulk_import.py:1383 msgid "Supply type (AC/DC)" msgstr "供应类型(AC/DC)" -#: netbox/dcim/forms/bulk_import.py:1327 +#: netbox/dcim/forms/bulk_import.py:1388 msgid "Single or three-phase" msgstr "单相或三相" @@ -4189,23 +4560,30 @@ msgid "" "parent device/VM, or they must be global" msgstr "标记的VLAN ({vlans}) 必须与接口所属设备/虚拟机属于同一站点,或者是全局VLAN" -#: netbox/dcim/forms/common.py:110 +#: netbox/dcim/forms/common.py:126 msgid "" "Cannot install module with placeholder values in a module bay with no " "position defined." msgstr "无法在未定义位置的模块托架中安装具有占位符值的模块。" -#: netbox/dcim/forms/common.py:119 +#: netbox/dcim/forms/common.py:131 +#, python-brace-format +msgid "" +"Cannot install module with placeholder values in a module bay tree {level} " +"in tree but {tokens} placeholders given." +msgstr "无法在模块月桂树中安装具有占位符值的模块 {level} 在树里但是 {tokens} 给定的占位符。" + +#: netbox/dcim/forms/common.py:144 #, python-brace-format msgid "Cannot adopt {model} {name} as it already belongs to a module" msgstr "无法选定 {model} {name} ,因为它已属于某个模块" -#: netbox/dcim/forms/common.py:128 +#: netbox/dcim/forms/common.py:153 #, python-brace-format msgid "A {model} named {name} already exists" msgstr "名为 {name} 的 {model} 已存在" -#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:686 +#: netbox/dcim/forms/connections.py:49 netbox/dcim/forms/model_forms.py:738 #: netbox/dcim/tables/power.py:66 #: netbox/templates/dcim/inc/cable_termination.html:37 #: netbox/templates/dcim/powerfeed.html:24 @@ -4214,7 +4592,7 @@ msgstr "名为 {name} 的 {model} 已存在" msgid "Power Panel" msgstr "电源面板" -#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:713 +#: netbox/dcim/forms/connections.py:58 netbox/dcim/forms/model_forms.py:765 #: netbox/templates/dcim/powerfeed.html:21 #: netbox/templates/dcim/powerport.html:80 msgid "Power Feed" @@ -4224,15 +4602,15 @@ msgstr "电力供给" msgid "Side" msgstr "端" -#: netbox/dcim/forms/filtersets.py:135 netbox/dcim/tables/devices.py:295 +#: netbox/dcim/forms/filtersets.py:136 netbox/dcim/tables/devices.py:295 msgid "Device Status" msgstr "设备状态" -#: netbox/dcim/forms/filtersets.py:148 +#: netbox/dcim/forms/filtersets.py:149 msgid "Parent region" msgstr "上一级地区" -#: netbox/dcim/forms/filtersets.py:162 netbox/tenancy/forms/bulk_import.py:28 +#: netbox/dcim/forms/filtersets.py:163 netbox/tenancy/forms/bulk_import.py:28 #: netbox/tenancy/forms/bulk_import.py:62 #: netbox/tenancy/forms/filtersets.py:33 netbox/tenancy/forms/filtersets.py:62 #: netbox/wireless/forms/bulk_import.py:25 @@ -4240,62 +4618,67 @@ msgstr "上一级地区" msgid "Parent group" msgstr "上一级组" -#: netbox/dcim/forms/filtersets.py:241 netbox/templates/dcim/location.html:58 +#: netbox/dcim/forms/filtersets.py:242 netbox/templates/dcim/location.html:58 #: netbox/templates/dcim/site.html:56 msgid "Facility" msgstr "设施" -#: netbox/dcim/forms/filtersets.py:257 netbox/dcim/forms/filtersets.py:342 +#: netbox/dcim/forms/filtersets.py:380 +msgid "Rack type" +msgstr "机柜类型" + +#: netbox/dcim/forms/filtersets.py:397 msgid "Function" msgstr "功能用途" -#: netbox/dcim/forms/filtersets.py:428 netbox/dcim/forms/model_forms.py:317 +#: netbox/dcim/forms/filtersets.py:483 netbox/dcim/forms/model_forms.py:373 #: netbox/templates/inc/panels/image_attachments.html:6 msgid "Images" msgstr "图片" -#: netbox/dcim/forms/filtersets.py:431 netbox/dcim/forms/filtersets.py:556 -#: netbox/dcim/forms/filtersets.py:666 +#: netbox/dcim/forms/filtersets.py:486 netbox/dcim/forms/filtersets.py:611 +#: netbox/dcim/forms/filtersets.py:726 msgid "Components" msgstr "组件" -#: netbox/dcim/forms/filtersets.py:451 +#: netbox/dcim/forms/filtersets.py:506 msgid "Subdevice role" msgstr "子设备角色" -#: netbox/dcim/forms/filtersets.py:730 +#: netbox/dcim/forms/filtersets.py:790 netbox/dcim/tables/racks.py:54 +#: netbox/templates/dcim/racktype.html:20 msgid "Model" msgstr "型号" -#: netbox/dcim/forms/filtersets.py:774 +#: netbox/dcim/forms/filtersets.py:834 msgid "Has an OOB IP" msgstr "有带外管理IP" -#: netbox/dcim/forms/filtersets.py:781 +#: netbox/dcim/forms/filtersets.py:841 msgid "Virtual chassis member" msgstr "堆叠数量" -#: netbox/dcim/forms/filtersets.py:830 +#: netbox/dcim/forms/filtersets.py:890 msgid "Has virtual device contexts" msgstr "有虚拟设备上下文" -#: netbox/dcim/forms/filtersets.py:843 netbox/extras/filtersets.py:537 -#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/forms/filtersets.py:464 +#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585 +#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452 #: netbox/virtualization/forms/filtersets.py:112 msgid "Cluster group" msgstr "堆叠组" -#: netbox/dcim/forms/filtersets.py:1150 +#: netbox/dcim/forms/filtersets.py:1210 msgid "Cabled" msgstr "已连接" -#: netbox/dcim/forms/filtersets.py:1157 +#: netbox/dcim/forms/filtersets.py:1217 msgid "Occupied" msgstr "已占用" -#: netbox/dcim/forms/filtersets.py:1184 netbox/dcim/forms/filtersets.py:1209 -#: netbox/dcim/forms/filtersets.py:1233 netbox/dcim/forms/filtersets.py:1253 -#: netbox/dcim/forms/filtersets.py:1276 netbox/dcim/tables/devices.py:361 +#: netbox/dcim/forms/filtersets.py:1244 netbox/dcim/forms/filtersets.py:1269 +#: netbox/dcim/forms/filtersets.py:1293 netbox/dcim/forms/filtersets.py:1313 +#: netbox/dcim/forms/filtersets.py:1336 netbox/dcim/tables/devices.py:364 #: netbox/templates/dcim/consoleport.html:55 #: netbox/templates/dcim/consoleserverport.html:55 #: netbox/templates/dcim/frontport.html:69 @@ -4307,43 +4690,43 @@ msgstr "已占用" msgid "Connection" msgstr "连接" -#: netbox/dcim/forms/filtersets.py:1288 netbox/extras/forms/bulk_edit.py:316 -#: netbox/extras/forms/bulk_import.py:239 -#: netbox/extras/forms/filtersets.py:473 -#: netbox/extras/forms/model_forms.py:551 netbox/extras/tables/tables.py:519 +#: netbox/dcim/forms/filtersets.py:1348 netbox/extras/forms/bulk_edit.py:326 +#: netbox/extras/forms/bulk_import.py:247 +#: netbox/extras/forms/filtersets.py:464 +#: netbox/extras/forms/model_forms.py:675 netbox/extras/tables/tables.py:579 #: netbox/templates/extras/journalentry.html:30 msgid "Kind" msgstr "类型" -#: netbox/dcim/forms/filtersets.py:1317 +#: netbox/dcim/forms/filtersets.py:1377 msgid "Mgmt only" msgstr "仅用于管理" -#: netbox/dcim/forms/filtersets.py:1329 netbox/dcim/forms/model_forms.py:1330 +#: netbox/dcim/forms/filtersets.py:1389 netbox/dcim/forms/model_forms.py:1382 #: netbox/dcim/models/device_components.py:630 #: netbox/templates/dcim/interface.html:129 msgid "WWN" msgstr "WWN" -#: netbox/dcim/forms/filtersets.py:1349 +#: netbox/dcim/forms/filtersets.py:1409 msgid "Wireless channel" msgstr "无线信道" -#: netbox/dcim/forms/filtersets.py:1353 +#: netbox/dcim/forms/filtersets.py:1413 msgid "Channel frequency (MHz)" msgstr "信道频率(MHz)" -#: netbox/dcim/forms/filtersets.py:1357 +#: netbox/dcim/forms/filtersets.py:1417 msgid "Channel width (MHz)" msgstr "信道频宽(MHz)" -#: netbox/dcim/forms/filtersets.py:1361 +#: netbox/dcim/forms/filtersets.py:1421 #: netbox/templates/dcim/interface.html:85 msgid "Transmit power (dBm)" msgstr "信道功率(dBm)" -#: netbox/dcim/forms/filtersets.py:1386 netbox/dcim/forms/filtersets.py:1411 -#: netbox/dcim/tables/devices.py:324 netbox/templates/dcim/cable.html:12 +#: netbox/dcim/forms/filtersets.py:1446 netbox/dcim/forms/filtersets.py:1471 +#: netbox/dcim/tables/devices.py:327 netbox/templates/dcim/cable.html:12 #: netbox/templates/dcim/cable_trace.html:46 #: netbox/templates/dcim/frontport.html:77 #: netbox/templates/dcim/htmx/cable_edit.html:50 @@ -4353,7 +4736,7 @@ msgstr "信道功率(dBm)" msgid "Cable" msgstr "电缆" -#: netbox/dcim/forms/filtersets.py:1490 netbox/dcim/tables/devices.py:925 +#: netbox/dcim/forms/filtersets.py:1550 netbox/dcim/tables/devices.py:945 msgid "Discovered" msgstr "已发现" @@ -4362,119 +4745,97 @@ msgstr "已发现" msgid "A virtual chassis member already exists in position {vc_position}." msgstr "在 {vc_position}中已存在虚拟机箱成员。" -#: netbox/dcim/forms/model_forms.py:139 +#: netbox/dcim/forms/model_forms.py:140 msgid "Contact Info" msgstr "联系方式" -#: netbox/dcim/forms/model_forms.py:194 netbox/templates/dcim/rackrole.html:19 +#: netbox/dcim/forms/model_forms.py:195 netbox/templates/dcim/rackrole.html:19 msgid "Rack Role" msgstr "机柜角色" -#: netbox/dcim/forms/model_forms.py:227 -msgid "Inventory Control" -msgstr "库存管理" +#: netbox/dcim/forms/model_forms.py:212 netbox/dcim/forms/model_forms.py:362 +#: netbox/dcim/forms/model_forms.py:446 +#: netbox/utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "缩写" -#: netbox/dcim/forms/model_forms.py:231 -msgid "Outer Dimensions" -msgstr "外部尺寸" +#: netbox/dcim/forms/model_forms.py:259 +msgid "Select a pre-defined rack type, or set physical characteristics below." +msgstr "选择预定义的机架类型,或在下面设置物理特征。" -#: netbox/dcim/forms/model_forms.py:233 netbox/templates/dcim/device.html:315 -#: netbox/templates/dcim/rack.html:73 -msgid "Dimensions" -msgstr "外部尺寸" +#: netbox/dcim/forms/model_forms.py:265 +msgid "Inventory Control" +msgstr "库存管理" -#: netbox/dcim/forms/model_forms.py:255 +#: netbox/dcim/forms/model_forms.py:313 msgid "" "Comma-separated list of numeric unit IDs. A range may be specified using a " "hyphen." msgstr "以逗号分隔的数字U位 列表。 可以使用-字符指定范围。" -#: netbox/dcim/forms/model_forms.py:266 netbox/dcim/tables/racks.py:133 +#: netbox/dcim/forms/model_forms.py:322 netbox/dcim/tables/racks.py:202 msgid "Reservation" msgstr "预留" -#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:389 -#: netbox/utilities/forms/fields/fields.py:47 -msgid "Slug" -msgstr "缩写" - -#: netbox/dcim/forms/model_forms.py:315 -#: netbox/templates/dcim/devicetype.html:11 -msgid "Chassis" -msgstr "机箱" - -#: netbox/dcim/forms/model_forms.py:366 +#: netbox/dcim/forms/model_forms.py:423 #: netbox/templates/dcim/devicerole.html:23 msgid "Device Role" msgstr "设备角色" -#: netbox/dcim/forms/model_forms.py:433 netbox/dcim/models/devices.py:634 +#: netbox/dcim/forms/model_forms.py:490 netbox/dcim/models/devices.py:644 msgid "The lowest-numbered unit occupied by the device" msgstr "设备在机柜上最下面的U位" -#: netbox/dcim/forms/model_forms.py:490 +#: netbox/dcim/forms/model_forms.py:547 msgid "The position in the virtual chassis this device is identified by" msgstr "该设备在虚拟机箱中的位置由以下方式标识" -#: netbox/dcim/forms/model_forms.py:494 netbox/templates/dcim/device.html:133 -#: netbox/templates/dcim/virtualchassis.html:68 -#: netbox/templates/dcim/virtualchassis_edit.html:56 -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:26 -#: netbox/tenancy/forms/bulk_edit.py:147 -#: netbox/tenancy/forms/filtersets.py:110 -msgid "Priority" -msgstr "优先级" - -#: netbox/dcim/forms/model_forms.py:495 +#: netbox/dcim/forms/model_forms.py:552 msgid "The priority of the device in the virtual chassis" msgstr "堆叠中设备的优先级" -#: netbox/dcim/forms/model_forms.py:602 +#: netbox/dcim/forms/model_forms.py:659 msgid "Automatically populate components associated with this module type" msgstr "自动填充与此模块类型关联的组件" -#: netbox/dcim/forms/model_forms.py:664 -msgid "Maximum length is 32767 (any unit)" -msgstr "最大长度为32767(任意单位)" - -#: netbox/dcim/forms/model_forms.py:715 +#: netbox/dcim/forms/model_forms.py:767 msgid "Characteristics" msgstr "特性" -#: netbox/dcim/forms/model_forms.py:1035 +#: netbox/dcim/forms/model_forms.py:1087 msgid "Console port template" msgstr "控制台端口模板" -#: netbox/dcim/forms/model_forms.py:1043 +#: netbox/dcim/forms/model_forms.py:1095 msgid "Console server port template" msgstr "控制口模版" -#: netbox/dcim/forms/model_forms.py:1051 +#: netbox/dcim/forms/model_forms.py:1103 msgid "Front port template" msgstr "前向端口模版" -#: netbox/dcim/forms/model_forms.py:1059 +#: netbox/dcim/forms/model_forms.py:1111 msgid "Interface template" msgstr "接口模版" -#: netbox/dcim/forms/model_forms.py:1067 +#: netbox/dcim/forms/model_forms.py:1119 msgid "Power outlet template" msgstr "电源插座模版" -#: netbox/dcim/forms/model_forms.py:1075 +#: netbox/dcim/forms/model_forms.py:1127 msgid "Power port template" msgstr "电源接口模版" -#: netbox/dcim/forms/model_forms.py:1083 +#: netbox/dcim/forms/model_forms.py:1135 msgid "Rear port template" msgstr "后置接口模版" -#: netbox/dcim/forms/model_forms.py:1092 netbox/dcim/forms/model_forms.py:1335 -#: netbox/dcim/forms/model_forms.py:1498 netbox/dcim/forms/model_forms.py:1530 -#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:317 +#: netbox/dcim/forms/model_forms.py:1144 netbox/dcim/forms/model_forms.py:1387 +#: netbox/dcim/forms/model_forms.py:1550 netbox/dcim/forms/model_forms.py:1582 +#: netbox/dcim/tables/connections.py:65 netbox/ipam/forms/bulk_import.py:318 #: netbox/ipam/forms/model_forms.py:280 netbox/ipam/forms/model_forms.py:289 #: netbox/ipam/tables/fhrp.py:64 netbox/ipam/tables/ip.py:372 -#: netbox/ipam/tables/vlans.py:165 +#: netbox/ipam/tables/vlans.py:169 #: netbox/templates/circuits/inc/circuit_termination_fields.html:51 #: netbox/templates/dcim/frontport.html:106 #: netbox/templates/dcim/interface.html:27 @@ -4485,7 +4846,7 @@ msgstr "后置接口模版" #: netbox/templates/vpn/tunneltermination.html:31 #: netbox/templates/wireless/inc/wirelesslink_interface.html:10 #: netbox/templates/wireless/wirelesslink.html:10 -#: netbox/templates/wireless/wirelesslink.html:45 +#: netbox/templates/wireless/wirelesslink.html:55 #: netbox/virtualization/forms/model_forms.py:348 #: netbox/vpn/forms/bulk_import.py:297 netbox/vpn/forms/model_forms.py:436 #: netbox/vpn/forms/model_forms.py:445 @@ -4494,7 +4855,7 @@ msgstr "后置接口模版" msgid "Interface" msgstr "接口" -#: netbox/dcim/forms/model_forms.py:1093 netbox/dcim/forms/model_forms.py:1531 +#: netbox/dcim/forms/model_forms.py:1145 netbox/dcim/forms/model_forms.py:1583 #: netbox/dcim/tables/connections.py:27 #: netbox/templates/dcim/consoleport.html:17 #: netbox/templates/dcim/consoleserverport.html:74 @@ -4502,14 +4863,14 @@ msgstr "接口" msgid "Console Port" msgstr "Console 端口" -#: netbox/dcim/forms/model_forms.py:1094 netbox/dcim/forms/model_forms.py:1532 +#: netbox/dcim/forms/model_forms.py:1146 netbox/dcim/forms/model_forms.py:1584 #: netbox/templates/dcim/consoleport.html:73 #: netbox/templates/dcim/consoleserverport.html:17 #: netbox/templates/dcim/frontport.html:109 msgid "Console Server Port" msgstr "Console 服务器端口" -#: netbox/dcim/forms/model_forms.py:1095 netbox/dcim/forms/model_forms.py:1533 +#: netbox/dcim/forms/model_forms.py:1147 netbox/dcim/forms/model_forms.py:1585 #: netbox/templates/circuits/inc/circuit_termination_fields.html:52 #: netbox/templates/dcim/consoleport.html:76 #: netbox/templates/dcim/consoleserverport.html:77 @@ -4520,8 +4881,8 @@ msgstr "Console 服务器端口" msgid "Front Port" msgstr "前置接口" -#: netbox/dcim/forms/model_forms.py:1096 netbox/dcim/forms/model_forms.py:1534 -#: netbox/dcim/tables/devices.py:703 +#: netbox/dcim/forms/model_forms.py:1148 netbox/dcim/forms/model_forms.py:1586 +#: netbox/dcim/tables/devices.py:706 #: netbox/templates/circuits/inc/circuit_termination_fields.html:53 #: netbox/templates/dcim/consoleport.html:79 #: netbox/templates/dcim/consoleserverport.html:80 @@ -4533,76 +4894,76 @@ msgstr "前置接口" msgid "Rear Port" msgstr "后置接口" -#: netbox/dcim/forms/model_forms.py:1097 netbox/dcim/forms/model_forms.py:1535 -#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:509 +#: netbox/dcim/forms/model_forms.py:1149 netbox/dcim/forms/model_forms.py:1587 +#: netbox/dcim/tables/connections.py:46 netbox/dcim/tables/devices.py:512 #: netbox/templates/dcim/poweroutlet.html:44 #: netbox/templates/dcim/powerport.html:17 msgid "Power Port" msgstr "电源接口" -#: netbox/dcim/forms/model_forms.py:1098 netbox/dcim/forms/model_forms.py:1536 +#: netbox/dcim/forms/model_forms.py:1150 netbox/dcim/forms/model_forms.py:1588 #: netbox/templates/dcim/poweroutlet.html:17 #: netbox/templates/dcim/powerport.html:77 msgid "Power Outlet" msgstr "电源插座" -#: netbox/dcim/forms/model_forms.py:1100 netbox/dcim/forms/model_forms.py:1538 +#: netbox/dcim/forms/model_forms.py:1152 netbox/dcim/forms/model_forms.py:1590 msgid "Component Assignment" msgstr "组件分配" -#: netbox/dcim/forms/model_forms.py:1143 netbox/dcim/forms/model_forms.py:1585 +#: netbox/dcim/forms/model_forms.py:1195 netbox/dcim/forms/model_forms.py:1637 msgid "An InventoryItem can only be assigned to a single component." msgstr "库存项只能分配给单个组件" -#: netbox/dcim/forms/model_forms.py:1280 +#: netbox/dcim/forms/model_forms.py:1332 msgid "LAG interface" msgstr "链路聚合接口" -#: netbox/dcim/forms/model_forms.py:1431 +#: netbox/dcim/forms/model_forms.py:1483 msgid "Child Device" msgstr "子设备" -#: netbox/dcim/forms/model_forms.py:1432 +#: netbox/dcim/forms/model_forms.py:1484 msgid "" "Child devices must first be created and assigned to the site and rack of the" " parent device." msgstr "必须首先创建子设备,并将其分配给父设备的站点和机柜。" -#: netbox/dcim/forms/model_forms.py:1474 +#: netbox/dcim/forms/model_forms.py:1526 msgid "Console port" msgstr "Console 接口" -#: netbox/dcim/forms/model_forms.py:1482 +#: netbox/dcim/forms/model_forms.py:1534 msgid "Console server port" msgstr "Console 服务器端口" -#: netbox/dcim/forms/model_forms.py:1490 +#: netbox/dcim/forms/model_forms.py:1542 msgid "Front port" msgstr "前置接口" -#: netbox/dcim/forms/model_forms.py:1506 +#: netbox/dcim/forms/model_forms.py:1558 msgid "Power outlet" msgstr "电源插座" -#: netbox/dcim/forms/model_forms.py:1526 +#: netbox/dcim/forms/model_forms.py:1578 #: netbox/templates/dcim/inventoryitem.html:17 msgid "Inventory Item" msgstr "库存项" -#: netbox/dcim/forms/model_forms.py:1599 +#: netbox/dcim/forms/model_forms.py:1651 #: netbox/templates/dcim/inventoryitemrole.html:15 msgid "Inventory Item Role" msgstr "库存物品分类" -#: netbox/dcim/forms/model_forms.py:1617 netbox/templates/dcim/device.html:190 +#: netbox/dcim/forms/model_forms.py:1669 netbox/templates/dcim/device.html:190 #: netbox/templates/dcim/virtualdevicecontext.html:30 -#: netbox/templates/virtualization/virtualmachine.html:48 +#: netbox/templates/virtualization/virtualmachine.html:52 msgid "Primary IPv4" msgstr "主 IPv4" -#: netbox/dcim/forms/model_forms.py:1626 netbox/templates/dcim/device.html:206 +#: netbox/dcim/forms/model_forms.py:1678 netbox/templates/dcim/device.html:206 #: netbox/templates/dcim/virtualdevicecontext.html:41 -#: netbox/templates/virtualization/virtualmachine.html:64 +#: netbox/templates/virtualization/virtualmachine.html:68 msgid "Primary IPv6" msgstr "主 IPv6" @@ -4652,7 +5013,7 @@ msgid "" "selected number of rear port positions ({rearport_count})." msgstr "要创建的前置端口数 ({frontport_count}) 必须与所选的后置端口数({rearport_count})匹配。" -#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1009 +#: netbox/dcim/forms/object_create.py:409 netbox/dcim/tables/devices.py:1029 #: netbox/ipam/tables/fhrp.py:31 netbox/templates/dcim/virtualchassis.html:53 #: netbox/templates/dcim/virtualchassis_edit.html:47 #: netbox/templates/ipam/fhrpgroup.html:38 @@ -4676,7 +5037,7 @@ msgstr "必须为第一个VC成员指定一个位置。" #: netbox/dcim/models/cables.py:62 #: netbox/dcim/models/device_component_templates.py:55 #: netbox/dcim/models/device_components.py:63 -#: netbox/extras/models/customfields.py:110 +#: netbox/extras/models/customfields.py:111 msgid "label" msgstr "标记" @@ -4793,199 +5154,199 @@ msgid "" "module type." msgstr "组件模板必须与设备类型或模块类型相关联。" -#: netbox/dcim/models/device_component_templates.py:186 +#: netbox/dcim/models/device_component_templates.py:213 msgid "console port template" msgstr "console端口模板" -#: netbox/dcim/models/device_component_templates.py:187 +#: netbox/dcim/models/device_component_templates.py:214 msgid "console port templates" msgstr "console端口模板" -#: netbox/dcim/models/device_component_templates.py:220 +#: netbox/dcim/models/device_component_templates.py:247 msgid "console server port template" msgstr "console服务器端口模板" -#: netbox/dcim/models/device_component_templates.py:221 +#: netbox/dcim/models/device_component_templates.py:248 msgid "console server port templates" msgstr "console服务器端口模板" -#: netbox/dcim/models/device_component_templates.py:252 +#: netbox/dcim/models/device_component_templates.py:279 #: netbox/dcim/models/device_components.py:353 msgid "maximum draw" msgstr "最大功率" -#: netbox/dcim/models/device_component_templates.py:259 +#: netbox/dcim/models/device_component_templates.py:286 #: netbox/dcim/models/device_components.py:360 msgid "allocated draw" msgstr "分配功率" -#: netbox/dcim/models/device_component_templates.py:269 +#: netbox/dcim/models/device_component_templates.py:296 msgid "power port template" msgstr "电源端口模版" -#: netbox/dcim/models/device_component_templates.py:270 +#: netbox/dcim/models/device_component_templates.py:297 msgid "power port templates" msgstr "电源端口模版" -#: netbox/dcim/models/device_component_templates.py:289 +#: netbox/dcim/models/device_component_templates.py:316 #: netbox/dcim/models/device_components.py:383 #, python-brace-format msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." msgstr "分配功率不能超过最大功率({maximum_draw}瓦)" -#: netbox/dcim/models/device_component_templates.py:321 +#: netbox/dcim/models/device_component_templates.py:348 #: netbox/dcim/models/device_components.py:478 msgid "feed leg" msgstr "馈电线路" -#: netbox/dcim/models/device_component_templates.py:325 +#: netbox/dcim/models/device_component_templates.py:352 #: netbox/dcim/models/device_components.py:482 msgid "Phase (for three-phase feeds)" msgstr "相位(用于三相电)" -#: netbox/dcim/models/device_component_templates.py:331 +#: netbox/dcim/models/device_component_templates.py:358 msgid "power outlet template" msgstr "电源插座模版" -#: netbox/dcim/models/device_component_templates.py:332 +#: netbox/dcim/models/device_component_templates.py:359 msgid "power outlet templates" msgstr "电源插座模版" -#: netbox/dcim/models/device_component_templates.py:341 +#: netbox/dcim/models/device_component_templates.py:368 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same device type" msgstr "父电源端口 ({power_port}) 必须属于相同的设备类型" -#: netbox/dcim/models/device_component_templates.py:345 +#: netbox/dcim/models/device_component_templates.py:372 #, python-brace-format msgid "Parent power port ({power_port}) must belong to the same module type" msgstr "父电源端口 ({power_port}) 必须属于相同的设备类型" -#: netbox/dcim/models/device_component_templates.py:397 +#: netbox/dcim/models/device_component_templates.py:424 #: netbox/dcim/models/device_components.py:612 msgid "management only" msgstr "仅限管理" -#: netbox/dcim/models/device_component_templates.py:405 +#: netbox/dcim/models/device_component_templates.py:432 #: netbox/dcim/models/device_components.py:551 msgid "bridge interface" msgstr "桥接接口" -#: netbox/dcim/models/device_component_templates.py:423 +#: netbox/dcim/models/device_component_templates.py:450 #: netbox/dcim/models/device_components.py:637 msgid "wireless role" msgstr "无线角色" -#: netbox/dcim/models/device_component_templates.py:429 +#: netbox/dcim/models/device_component_templates.py:456 msgid "interface template" msgstr "接口模版" -#: netbox/dcim/models/device_component_templates.py:430 +#: netbox/dcim/models/device_component_templates.py:457 msgid "interface templates" msgstr "接口模版" -#: netbox/dcim/models/device_component_templates.py:437 +#: netbox/dcim/models/device_component_templates.py:464 #: netbox/dcim/models/device_components.py:805 -#: netbox/virtualization/models/virtualmachines.py:400 +#: netbox/virtualization/models/virtualmachines.py:405 msgid "An interface cannot be bridged to itself." msgstr "接口不能桥接到自己" -#: netbox/dcim/models/device_component_templates.py:440 +#: netbox/dcim/models/device_component_templates.py:467 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same device type" msgstr "桥接接口({bridge}) 必须属于相同的设备类型" -#: netbox/dcim/models/device_component_templates.py:444 +#: netbox/dcim/models/device_component_templates.py:471 #, python-brace-format msgid "Bridge interface ({bridge}) must belong to the same module type" msgstr "桥接接口({bridge}) 必须属于相同的模块类型" -#: netbox/dcim/models/device_component_templates.py:500 +#: netbox/dcim/models/device_component_templates.py:527 #: netbox/dcim/models/device_components.py:985 msgid "rear port position" msgstr "后置接口位置" -#: netbox/dcim/models/device_component_templates.py:525 +#: netbox/dcim/models/device_component_templates.py:552 msgid "front port template" msgstr "前置接口模板" -#: netbox/dcim/models/device_component_templates.py:526 +#: netbox/dcim/models/device_component_templates.py:553 msgid "front port templates" msgstr "前置接口模板" -#: netbox/dcim/models/device_component_templates.py:536 +#: netbox/dcim/models/device_component_templates.py:563 #, python-brace-format msgid "Rear port ({name}) must belong to the same device type" msgstr "后置接口({name})必须属于相同的设备类型" -#: netbox/dcim/models/device_component_templates.py:542 +#: netbox/dcim/models/device_component_templates.py:569 #, python-brace-format msgid "" "Invalid rear port position ({position}); rear port {name} has only {count} " "positions" msgstr "无效的后端口位置 ({position});后端口{name}只有{count}个" -#: netbox/dcim/models/device_component_templates.py:595 +#: netbox/dcim/models/device_component_templates.py:622 #: netbox/dcim/models/device_components.py:1054 msgid "positions" msgstr "位置" -#: netbox/dcim/models/device_component_templates.py:606 +#: netbox/dcim/models/device_component_templates.py:633 msgid "rear port template" msgstr "后置端口模版" -#: netbox/dcim/models/device_component_templates.py:607 +#: netbox/dcim/models/device_component_templates.py:634 msgid "rear port templates" msgstr "后置端口模版" -#: netbox/dcim/models/device_component_templates.py:636 -#: netbox/dcim/models/device_components.py:1095 +#: netbox/dcim/models/device_component_templates.py:663 +#: netbox/dcim/models/device_components.py:1104 msgid "position" msgstr "位置" -#: netbox/dcim/models/device_component_templates.py:639 -#: netbox/dcim/models/device_components.py:1098 +#: netbox/dcim/models/device_component_templates.py:666 +#: netbox/dcim/models/device_components.py:1107 msgid "Identifier to reference when renaming installed components" msgstr "重命名已安装组件时要引用的标识符" -#: netbox/dcim/models/device_component_templates.py:645 +#: netbox/dcim/models/device_component_templates.py:672 msgid "module bay template" msgstr "模块托架模版" -#: netbox/dcim/models/device_component_templates.py:646 +#: netbox/dcim/models/device_component_templates.py:673 msgid "module bay templates" msgstr "模块托架模版" -#: netbox/dcim/models/device_component_templates.py:673 +#: netbox/dcim/models/device_component_templates.py:700 msgid "device bay template" msgstr "设备托架模版" -#: netbox/dcim/models/device_component_templates.py:674 +#: netbox/dcim/models/device_component_templates.py:701 msgid "device bay templates" msgstr "设备托架模版" -#: netbox/dcim/models/device_component_templates.py:687 +#: netbox/dcim/models/device_component_templates.py:714 #, python-brace-format msgid "" "Subdevice role of device type ({device_type}) must be set to \"parent\" to " "allow device bays." msgstr "设备类型({device_type})的子设备角色必须设置为“父设备”,才能允许设备托架。" -#: netbox/dcim/models/device_component_templates.py:742 -#: netbox/dcim/models/device_components.py:1224 +#: netbox/dcim/models/device_component_templates.py:769 +#: netbox/dcim/models/device_components.py:1263 msgid "part ID" msgstr "零件ID" -#: netbox/dcim/models/device_component_templates.py:744 -#: netbox/dcim/models/device_components.py:1226 +#: netbox/dcim/models/device_component_templates.py:771 +#: netbox/dcim/models/device_components.py:1265 msgid "Manufacturer-assigned part identifier" msgstr "制造商指定的零件标识符" -#: netbox/dcim/models/device_component_templates.py:761 +#: netbox/dcim/models/device_component_templates.py:788 msgid "inventory item template" msgstr "库存项模版" -#: netbox/dcim/models/device_component_templates.py:762 +#: netbox/dcim/models/device_component_templates.py:789 msgid "inventory item templates" msgstr "库存项模版" @@ -5126,27 +5487,27 @@ msgstr "由所选通道填充(如有)" msgid "transmit power (dBm)" msgstr "发射功率(dBm)" -#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:116 +#: netbox/dcim/models/device_components.py:690 netbox/wireless/models.py:117 msgid "wireless LANs" msgstr "无线局域网" #: netbox/dcim/models/device_components.py:698 -#: netbox/virtualization/models/virtualmachines.py:330 +#: netbox/virtualization/models/virtualmachines.py:335 msgid "untagged VLAN" msgstr "未标记VLAN" #: netbox/dcim/models/device_components.py:704 -#: netbox/virtualization/models/virtualmachines.py:336 +#: netbox/virtualization/models/virtualmachines.py:341 msgid "tagged VLANs" msgstr "已标记 VLANs" #: netbox/dcim/models/device_components.py:746 -#: netbox/virtualization/models/virtualmachines.py:372 +#: netbox/virtualization/models/virtualmachines.py:377 msgid "interface" msgstr "接口" #: netbox/dcim/models/device_components.py:747 -#: netbox/virtualization/models/virtualmachines.py:373 +#: netbox/virtualization/models/virtualmachines.py:378 msgid "interfaces" msgstr "接口" @@ -5161,7 +5522,7 @@ msgid "{display_type} interfaces cannot be marked as connected." msgstr "{display_type}接口不能标记为已连接。" #: netbox/dcim/models/device_components.py:775 -#: netbox/virtualization/models/virtualmachines.py:385 +#: netbox/virtualization/models/virtualmachines.py:390 msgid "An interface cannot be its own parent." msgstr "接口不能是自己的父级。" @@ -5304,90 +5665,96 @@ msgid "" " ({frontport_count})" msgstr "位置数不能小于映射的前置端口数({frontport_count})" -#: netbox/dcim/models/device_components.py:1104 +#: netbox/dcim/models/device_components.py:1121 msgid "module bay" msgstr "设备板卡插槽" -#: netbox/dcim/models/device_components.py:1105 +#: netbox/dcim/models/device_components.py:1122 msgid "module bays" msgstr "设备板卡插槽" -#: netbox/dcim/models/device_components.py:1126 +#: netbox/dcim/models/device_components.py:1139 +#: netbox/dcim/models/devices.py:1217 +msgid "A module bay cannot belong to a module installed within it." +msgstr "模块托架不能属于安装在其中的模块。" + +#: netbox/dcim/models/device_components.py:1165 msgid "device bay" msgstr "设备托架" -#: netbox/dcim/models/device_components.py:1127 +#: netbox/dcim/models/device_components.py:1166 msgid "device bays" msgstr "设备托架" -#: netbox/dcim/models/device_components.py:1137 +#: netbox/dcim/models/device_components.py:1176 #, python-brace-format msgid "This type of device ({device_type}) does not support device bays." msgstr "此类型的设备 ({device_type}) 不支持设备托架。" -#: netbox/dcim/models/device_components.py:1143 +#: netbox/dcim/models/device_components.py:1182 msgid "Cannot install a device into itself." msgstr "无法将设备安装到自身中。" -#: netbox/dcim/models/device_components.py:1151 +#: netbox/dcim/models/device_components.py:1190 #, python-brace-format msgid "" "Cannot install the specified device; device is already installed in {bay}." msgstr "无法安装指定的设备;设备已安装在{bay}中。" -#: netbox/dcim/models/device_components.py:1172 +#: netbox/dcim/models/device_components.py:1211 msgid "inventory item role" msgstr "库存物品分类" -#: netbox/dcim/models/device_components.py:1173 +#: netbox/dcim/models/device_components.py:1212 msgid "inventory item roles" msgstr "库存物品分类" -#: netbox/dcim/models/device_components.py:1230 -#: netbox/dcim/models/devices.py:597 netbox/dcim/models/devices.py:1163 -#: netbox/dcim/models/racks.py:114 +#: netbox/dcim/models/device_components.py:1269 +#: netbox/dcim/models/devices.py:607 netbox/dcim/models/devices.py:1174 +#: netbox/dcim/models/racks.py:313 +#: netbox/virtualization/models/virtualmachines.py:131 msgid "serial number" msgstr "序列号" -#: netbox/dcim/models/device_components.py:1238 -#: netbox/dcim/models/devices.py:605 netbox/dcim/models/devices.py:1170 -#: netbox/dcim/models/racks.py:121 +#: netbox/dcim/models/device_components.py:1277 +#: netbox/dcim/models/devices.py:615 netbox/dcim/models/devices.py:1181 +#: netbox/dcim/models/racks.py:320 msgid "asset tag" msgstr "资产标签" -#: netbox/dcim/models/device_components.py:1239 +#: netbox/dcim/models/device_components.py:1278 msgid "A unique tag used to identify this item" msgstr "用于识别该项目的唯一标识" -#: netbox/dcim/models/device_components.py:1242 +#: netbox/dcim/models/device_components.py:1281 msgid "discovered" msgstr "已发现" -#: netbox/dcim/models/device_components.py:1244 +#: netbox/dcim/models/device_components.py:1283 msgid "This item was automatically discovered" msgstr "此项目是自动发现的" -#: netbox/dcim/models/device_components.py:1262 +#: netbox/dcim/models/device_components.py:1301 msgid "inventory item" msgstr "库存项" -#: netbox/dcim/models/device_components.py:1263 +#: netbox/dcim/models/device_components.py:1302 msgid "inventory items" msgstr "库存项" -#: netbox/dcim/models/device_components.py:1274 +#: netbox/dcim/models/device_components.py:1313 msgid "Cannot assign self as parent." msgstr "无法将自身分配为父级。" -#: netbox/dcim/models/device_components.py:1282 +#: netbox/dcim/models/device_components.py:1321 msgid "Parent inventory item does not belong to the same device." msgstr "父库存项不能属于同一设备。" -#: netbox/dcim/models/device_components.py:1288 +#: netbox/dcim/models/device_components.py:1327 msgid "Cannot move an inventory item with dependent children" msgstr "无法移动具有子项的库存项目" -#: netbox/dcim/models/device_components.py:1296 +#: netbox/dcim/models/device_components.py:1335 msgid "Cannot assign inventory item to component on another device" msgstr "无法将库存项分配给其他设备上的组件" @@ -5400,6 +5767,7 @@ msgid "manufacturers" msgstr "厂商" #: netbox/dcim/models/devices.py:82 netbox/dcim/models/devices.py:382 +#: netbox/dcim/models/racks.py:133 msgid "model" msgstr "型号" @@ -5415,7 +5783,7 @@ msgstr "部件编码(PN)" msgid "Discrete part number (optional)" msgstr "独立部件编码(PN) (可选)" -#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:138 +#: netbox/dcim/models/devices.py:107 netbox/dcim/models/racks.py:54 msgid "height (U)" msgstr "高度(U)" @@ -5445,7 +5813,8 @@ msgid "" "device type is neither a parent nor a child." msgstr "父设备将子设备放置在设备托架中。如果此设备类型既不是父设备也不是子设备,请保留为空。" -#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:649 +#: netbox/dcim/models/devices.py:128 netbox/dcim/models/devices.py:392 +#: netbox/dcim/models/devices.py:659 netbox/dcim/models/racks.py:324 msgid "airflow" msgstr "气流方向" @@ -5485,185 +5854,185 @@ msgstr "必须删除与此设备关联的所有设备托架模板,然后才能 msgid "Child device types must be 0U." msgstr "子设备类型高度必须为0U。" -#: netbox/dcim/models/devices.py:405 +#: netbox/dcim/models/devices.py:411 msgid "module type" msgstr "模块类型" -#: netbox/dcim/models/devices.py:406 +#: netbox/dcim/models/devices.py:412 msgid "module types" msgstr "模块类型" -#: netbox/dcim/models/devices.py:475 +#: netbox/dcim/models/devices.py:485 msgid "Virtual machines may be assigned to this role" msgstr "虚拟机可以使用该型号/角色" -#: netbox/dcim/models/devices.py:487 +#: netbox/dcim/models/devices.py:497 msgid "device role" msgstr "设备角色" -#: netbox/dcim/models/devices.py:488 +#: netbox/dcim/models/devices.py:498 msgid "device roles" msgstr "设备角色" -#: netbox/dcim/models/devices.py:505 +#: netbox/dcim/models/devices.py:515 msgid "Optionally limit this platform to devices of a certain manufacturer" msgstr "可选择将此平台限定为特定制造商的设备" -#: netbox/dcim/models/devices.py:517 +#: netbox/dcim/models/devices.py:527 msgid "platform" msgstr "操作系统" -#: netbox/dcim/models/devices.py:518 +#: netbox/dcim/models/devices.py:528 msgid "platforms" msgstr "操作系统" -#: netbox/dcim/models/devices.py:566 +#: netbox/dcim/models/devices.py:576 msgid "The function this device serves" msgstr "该设备的功能" -#: netbox/dcim/models/devices.py:598 +#: netbox/dcim/models/devices.py:608 msgid "Chassis serial number, assigned by the manufacturer" msgstr "制造商分配的机箱序列号" -#: netbox/dcim/models/devices.py:606 netbox/dcim/models/devices.py:1171 +#: netbox/dcim/models/devices.py:616 netbox/dcim/models/devices.py:1182 msgid "A unique tag used to identify this device" msgstr "用于识别该设备的唯一标签" -#: netbox/dcim/models/devices.py:633 +#: netbox/dcim/models/devices.py:643 msgid "position (U)" msgstr "机柜位置(U)" -#: netbox/dcim/models/devices.py:640 +#: netbox/dcim/models/devices.py:650 msgid "rack face" msgstr "机柜安装方向" -#: netbox/dcim/models/devices.py:660 netbox/dcim/models/devices.py:1380 +#: netbox/dcim/models/devices.py:670 netbox/dcim/models/devices.py:1408 #: netbox/virtualization/models/virtualmachines.py:100 msgid "primary IPv4" msgstr "首选 IPv4" -#: netbox/dcim/models/devices.py:668 netbox/dcim/models/devices.py:1388 +#: netbox/dcim/models/devices.py:678 netbox/dcim/models/devices.py:1416 #: netbox/virtualization/models/virtualmachines.py:108 msgid "primary IPv6" msgstr "首选 IPv6" -#: netbox/dcim/models/devices.py:676 +#: netbox/dcim/models/devices.py:686 msgid "out-of-band IP" msgstr "带外管理IP地址" -#: netbox/dcim/models/devices.py:693 +#: netbox/dcim/models/devices.py:703 msgid "VC position" msgstr "堆叠位置" -#: netbox/dcim/models/devices.py:696 +#: netbox/dcim/models/devices.py:706 msgid "Virtual chassis position" msgstr "堆叠位置" -#: netbox/dcim/models/devices.py:699 +#: netbox/dcim/models/devices.py:709 msgid "VC priority" msgstr "VC优先级" -#: netbox/dcim/models/devices.py:703 +#: netbox/dcim/models/devices.py:713 msgid "Virtual chassis master election priority" msgstr "堆叠主设备优先级" -#: netbox/dcim/models/devices.py:706 netbox/dcim/models/sites.py:207 +#: netbox/dcim/models/devices.py:716 netbox/dcim/models/sites.py:207 msgid "latitude" msgstr "纬度" -#: netbox/dcim/models/devices.py:711 netbox/dcim/models/devices.py:719 +#: netbox/dcim/models/devices.py:721 netbox/dcim/models/devices.py:729 #: netbox/dcim/models/sites.py:212 netbox/dcim/models/sites.py:220 msgid "GPS coordinate in decimal format (xx.yyyyyy)" msgstr "GPS坐标(十进制格式, xx.yyyyyy)" -#: netbox/dcim/models/devices.py:714 netbox/dcim/models/sites.py:215 +#: netbox/dcim/models/devices.py:724 netbox/dcim/models/sites.py:215 msgid "longitude" msgstr "经度" -#: netbox/dcim/models/devices.py:787 +#: netbox/dcim/models/devices.py:797 msgid "Device name must be unique per site." msgstr "每个站点的设备名称必须唯一。" -#: netbox/dcim/models/devices.py:798 netbox/ipam/models/services.py:75 +#: netbox/dcim/models/devices.py:808 netbox/ipam/models/services.py:75 msgid "device" msgstr "设备" -#: netbox/dcim/models/devices.py:799 +#: netbox/dcim/models/devices.py:809 msgid "devices" msgstr "设备" -#: netbox/dcim/models/devices.py:825 +#: netbox/dcim/models/devices.py:835 #, python-brace-format msgid "Rack {rack} does not belong to site {site}." msgstr "机柜 {rack} 不属于 {site}站点." -#: netbox/dcim/models/devices.py:830 +#: netbox/dcim/models/devices.py:840 #, python-brace-format msgid "Location {location} does not belong to site {site}." msgstr "地点 {location} 不属于 {site}站点." -#: netbox/dcim/models/devices.py:836 +#: netbox/dcim/models/devices.py:846 #, python-brace-format msgid "Rack {rack} does not belong to location {location}." msgstr "机柜{rack}不属于{location}地点." -#: netbox/dcim/models/devices.py:843 +#: netbox/dcim/models/devices.py:853 msgid "Cannot select a rack face without assigning a rack." msgstr "在未分配机柜的情况下,无法选择安装在机柜的哪一面。" -#: netbox/dcim/models/devices.py:847 +#: netbox/dcim/models/devices.py:857 msgid "Cannot select a rack position without assigning a rack." msgstr "在未分配机柜的情况下,无法选择安装在机柜的哪个位置。" -#: netbox/dcim/models/devices.py:853 +#: netbox/dcim/models/devices.py:863 msgid "Position must be in increments of 0.5 rack units." msgstr "机柜位置必须以0.5个U位递增。" -#: netbox/dcim/models/devices.py:857 +#: netbox/dcim/models/devices.py:867 msgid "Must specify rack face when defining rack position." msgstr "指定机柜安装位置时必须指定安装在机柜的哪一面。" -#: netbox/dcim/models/devices.py:865 +#: netbox/dcim/models/devices.py:875 #, python-brace-format msgid "" "A 0U device type ({device_type}) cannot be assigned to a rack position." msgstr "无法将0U的设备类型({device_type})的设备安装在机柜中。" -#: netbox/dcim/models/devices.py:876 +#: netbox/dcim/models/devices.py:886 msgid "" "Child device types cannot be assigned to a rack face. This is an attribute " "of the parent device." msgstr "子设备类型不能安装到机柜的前/后面。这是父设备的一个属性。" -#: netbox/dcim/models/devices.py:883 +#: netbox/dcim/models/devices.py:893 msgid "" "Child device types cannot be assigned to a rack position. This is an " "attribute of the parent device." msgstr "子设备类型不能安装到机柜某个位置。这是父设备的一个属性。" -#: netbox/dcim/models/devices.py:897 +#: netbox/dcim/models/devices.py:907 #, python-brace-format msgid "" "U{position} is already occupied or does not have sufficient space to " "accommodate this device type: {device_type} ({u_height}U)" msgstr "{position}U已被占用或没有足够的空间容纳此设备类型:{device_type} ({u_height}U)" -#: netbox/dcim/models/devices.py:912 +#: netbox/dcim/models/devices.py:922 #, python-brace-format msgid "{ip} is not an IPv4 address." msgstr "{ip} 不是有效的IPv4地址" -#: netbox/dcim/models/devices.py:921 netbox/dcim/models/devices.py:936 +#: netbox/dcim/models/devices.py:931 netbox/dcim/models/devices.py:946 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this device." msgstr "指定的IP地址 ({ip}) 未分配给该设备。" -#: netbox/dcim/models/devices.py:927 +#: netbox/dcim/models/devices.py:937 #, python-brace-format msgid "{ip} is not an IPv6 address." msgstr "{ip} 不是有效的IPv6地址" -#: netbox/dcim/models/devices.py:954 +#: netbox/dcim/models/devices.py:964 #, python-brace-format msgid "" "The assigned platform is limited to {platform_manufacturer} device types, " @@ -5671,84 +6040,84 @@ msgid "" msgstr "" "指定的平台仅限于{platform_manufacturer} 的设备类型,但此设备的类型属于{devicetype_manufacturer}。" -#: netbox/dcim/models/devices.py:965 +#: netbox/dcim/models/devices.py:975 #, python-brace-format msgid "The assigned cluster belongs to a different site ({site})" msgstr "分配的群集属于其他站点({site})" -#: netbox/dcim/models/devices.py:973 +#: netbox/dcim/models/devices.py:983 msgid "A device assigned to a virtual chassis must have its position defined." msgstr "分配给集群的设备必须定义其位置。" -#: netbox/dcim/models/devices.py:1178 +#: netbox/dcim/models/devices.py:1189 msgid "module" msgstr "模块" -#: netbox/dcim/models/devices.py:1179 +#: netbox/dcim/models/devices.py:1190 msgid "modules" msgstr "模块" -#: netbox/dcim/models/devices.py:1195 +#: netbox/dcim/models/devices.py:1206 #, python-brace-format msgid "" "Module must be installed within a module bay belonging to the assigned " "device ({device})." msgstr "模块必须安装在属于指定设备({device})的模块托架内。" -#: netbox/dcim/models/devices.py:1299 +#: netbox/dcim/models/devices.py:1327 msgid "domain" msgstr "域" -#: netbox/dcim/models/devices.py:1312 netbox/dcim/models/devices.py:1313 +#: netbox/dcim/models/devices.py:1340 netbox/dcim/models/devices.py:1341 msgid "virtual chassis" msgstr "堆叠" -#: netbox/dcim/models/devices.py:1328 +#: netbox/dcim/models/devices.py:1356 #, python-brace-format msgid "" "The selected master ({master}) is not assigned to this virtual chassis." msgstr "所选主设备({master})未分配给此堆叠。" -#: netbox/dcim/models/devices.py:1344 +#: netbox/dcim/models/devices.py:1372 #, python-brace-format msgid "" "Unable to delete virtual chassis {self}. There are member interfaces which " "form a cross-chassis LAG interfaces." msgstr "无法删除堆叠 {self}。有成员接口属于跨机箱聚合。" -#: netbox/dcim/models/devices.py:1369 netbox/vpn/models/l2vpn.py:37 +#: netbox/dcim/models/devices.py:1397 netbox/vpn/models/l2vpn.py:37 msgid "identifier" msgstr "标识符" -#: netbox/dcim/models/devices.py:1370 +#: netbox/dcim/models/devices.py:1398 msgid "Numeric identifier unique to the parent device" msgstr "父设备唯一的标识符" -#: netbox/dcim/models/devices.py:1398 netbox/extras/models/customfields.py:211 -#: netbox/extras/models/models.py:127 netbox/extras/models/models.py:722 -#: netbox/netbox/models/__init__.py:114 +#: netbox/dcim/models/devices.py:1426 netbox/extras/models/customfields.py:225 +#: netbox/extras/models/models.py:107 netbox/extras/models/models.py:694 +#: netbox/netbox/models/__init__.py:115 msgid "comments" msgstr "评论" -#: netbox/dcim/models/devices.py:1414 +#: netbox/dcim/models/devices.py:1442 msgid "virtual device context" msgstr "设备虚拟实例" -#: netbox/dcim/models/devices.py:1415 +#: netbox/dcim/models/devices.py:1443 msgid "virtual device contexts" msgstr "设备虚拟实例" -#: netbox/dcim/models/devices.py:1447 +#: netbox/dcim/models/devices.py:1475 #, python-brace-format msgid "{ip} is not an IPv{family} address." msgstr "{ip} 不是有效的 IPv{family} 地址" -#: netbox/dcim/models/devices.py:1453 +#: netbox/dcim/models/devices.py:1481 msgid "Primary IP address must belong to an interface on the assigned device." msgstr "首选 IP 地址必须属于指定设备上的接口。" #: netbox/dcim/models/mixins.py:15 netbox/extras/models/configs.py:41 -#: netbox/extras/models/models.py:341 netbox/extras/models/models.py:550 +#: netbox/extras/models/models.py:313 netbox/extras/models/models.py:522 #: netbox/extras/models/search.py:48 netbox/ipam/models/ip.py:194 msgid "weight" msgstr "重量" @@ -5822,157 +6191,169 @@ msgstr "机柜{rack} ({rack_site})和电源面板{powerpanel} ({powerpanel_site} msgid "Voltage cannot be negative for AC supply" msgstr "交流电源的电压不能为负" -#: netbox/dcim/models/racks.py:50 -msgid "rack role" -msgstr "机柜角色" - -#: netbox/dcim/models/racks.py:51 -msgid "rack roles" -msgstr "机柜角色" - -#: netbox/dcim/models/racks.py:75 -msgid "facility ID" -msgstr "标识符ID" - -#: netbox/dcim/models/racks.py:76 -msgid "Locally-assigned identifier" -msgstr "本地分配的标识符" - -#: netbox/dcim/models/racks.py:109 netbox/ipam/forms/bulk_import.py:200 -#: netbox/ipam/forms/bulk_import.py:265 netbox/ipam/forms/bulk_import.py:300 -#: netbox/ipam/forms/bulk_import.py:467 -#: netbox/virtualization/forms/bulk_import.py:112 -msgid "Functional role" -msgstr "功能角色" - -#: netbox/dcim/models/racks.py:122 -msgid "A unique tag used to identify this rack" -msgstr "用于识别该机柜的唯一标识" - -#: netbox/dcim/models/racks.py:133 +#: netbox/dcim/models/racks.py:47 msgid "width" msgstr "宽度" -#: netbox/dcim/models/racks.py:134 +#: netbox/dcim/models/racks.py:48 msgid "Rail-to-rail width" msgstr "机柜间宽度" -#: netbox/dcim/models/racks.py:140 +#: netbox/dcim/models/racks.py:56 msgid "Height in rack units" msgstr "以U为单位的机柜高度" -#: netbox/dcim/models/racks.py:144 +#: netbox/dcim/models/racks.py:60 msgid "starting unit" msgstr "起始U位" -#: netbox/dcim/models/racks.py:146 +#: netbox/dcim/models/racks.py:62 msgid "Starting unit for rack" msgstr "此机柜的起始U位" -#: netbox/dcim/models/racks.py:150 +#: netbox/dcim/models/racks.py:66 msgid "descending units" msgstr "U位显示降序" -#: netbox/dcim/models/racks.py:151 +#: netbox/dcim/models/racks.py:67 msgid "Units are numbered top-to-bottom" msgstr "U位从上到下编号" -#: netbox/dcim/models/racks.py:154 +#: netbox/dcim/models/racks.py:72 msgid "outer width" msgstr "外部宽度" -#: netbox/dcim/models/racks.py:157 +#: netbox/dcim/models/racks.py:75 msgid "Outer dimension of rack (width)" msgstr "机柜外部尺寸(宽)" -#: netbox/dcim/models/racks.py:160 +#: netbox/dcim/models/racks.py:78 msgid "outer depth" msgstr "外部长度/深度" -#: netbox/dcim/models/racks.py:163 +#: netbox/dcim/models/racks.py:81 msgid "Outer dimension of rack (depth)" msgstr "机架外形尺寸(深度)" -#: netbox/dcim/models/racks.py:166 +#: netbox/dcim/models/racks.py:84 msgid "outer unit" msgstr "外框尺寸的单位" -#: netbox/dcim/models/racks.py:172 -msgid "max weight" -msgstr "最大承重" - -#: netbox/dcim/models/racks.py:175 -msgid "Maximum load capacity for the rack" -msgstr "机柜最大承重" - -#: netbox/dcim/models/racks.py:183 +#: netbox/dcim/models/racks.py:90 msgid "mounting depth" msgstr "安装深度" -#: netbox/dcim/models/racks.py:187 +#: netbox/dcim/models/racks.py:94 msgid "" "Maximum depth of a mounted device, in millimeters. For four-post racks, this" " is the distance between the front and rear rails." msgstr "已安装设备的最大深度(以毫米为单位)。 对于四柱机架,这是前导轨和后导轨之间的距离。" -#: netbox/dcim/models/racks.py:221 +#: netbox/dcim/models/racks.py:102 +msgid "max weight" +msgstr "最大承重" + +#: netbox/dcim/models/racks.py:105 +msgid "Maximum load capacity for the rack" +msgstr "机柜最大承重" + +#: netbox/dcim/models/racks.py:125 netbox/dcim/models/racks.py:252 +msgid "form factor" +msgstr "外形规格" + +#: netbox/dcim/models/racks.py:162 +msgid "rack type" +msgstr "机架类型" + +#: netbox/dcim/models/racks.py:163 +msgid "rack types" +msgstr "机架类型" + +#: netbox/dcim/models/racks.py:180 netbox/dcim/models/racks.py:379 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "设置外部宽度/深度时必须指定单位" + +#: netbox/dcim/models/racks.py:184 netbox/dcim/models/racks.py:383 +msgid "Must specify a unit when setting a maximum weight" +msgstr "设置最大承重时必须指定单位" + +#: netbox/dcim/models/racks.py:230 +msgid "rack role" +msgstr "机柜角色" + +#: netbox/dcim/models/racks.py:231 +msgid "rack roles" +msgstr "机柜角色" + +#: netbox/dcim/models/racks.py:274 +msgid "facility ID" +msgstr "标识符ID" + +#: netbox/dcim/models/racks.py:275 +msgid "Locally-assigned identifier" +msgstr "本地分配的标识符" + +#: netbox/dcim/models/racks.py:308 netbox/ipam/forms/bulk_import.py:201 +#: netbox/ipam/forms/bulk_import.py:266 netbox/ipam/forms/bulk_import.py:301 +#: netbox/ipam/forms/bulk_import.py:459 +#: netbox/virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "功能角色" + +#: netbox/dcim/models/racks.py:321 +msgid "A unique tag used to identify this rack" +msgstr "用于识别该机柜的唯一标识" + +#: netbox/dcim/models/racks.py:359 msgid "rack" msgstr "机柜" -#: netbox/dcim/models/racks.py:222 +#: netbox/dcim/models/racks.py:360 msgid "racks" msgstr "机柜" -#: netbox/dcim/models/racks.py:237 +#: netbox/dcim/models/racks.py:375 #, python-brace-format msgid "Assigned location must belong to parent site ({site})." msgstr "指定的位置必须属于父站点({site})。" -#: netbox/dcim/models/racks.py:241 -msgid "Must specify a unit when setting an outer width/depth" -msgstr "设置外部宽度/深度时必须指定单位" - -#: netbox/dcim/models/racks.py:245 -msgid "Must specify a unit when setting a maximum weight" -msgstr "设置最大承重时必须指定单位" - -#: netbox/dcim/models/racks.py:255 +#: netbox/dcim/models/racks.py:393 #, python-brace-format msgid "" "Rack must be at least {min_height}U tall to house currently installed " "devices." msgstr "机柜必须有至少{min_height}U高,才可以容纳当前安装的设备。" -#: netbox/dcim/models/racks.py:262 +#: netbox/dcim/models/racks.py:400 #, python-brace-format msgid "" "Rack unit numbering must begin at {position} or less to house currently " "installed devices." msgstr "机柜单元编号必须从{position}或以上开始,才能容纳当前安装的设备。" -#: netbox/dcim/models/racks.py:270 +#: netbox/dcim/models/racks.py:408 #, python-brace-format msgid "Location must be from the same site, {site}." msgstr "位置必须来自同一站点 {site}。" -#: netbox/dcim/models/racks.py:523 +#: netbox/dcim/models/racks.py:670 msgid "units" msgstr "位置" -#: netbox/dcim/models/racks.py:549 +#: netbox/dcim/models/racks.py:696 msgid "rack reservation" msgstr "机柜预留" -#: netbox/dcim/models/racks.py:550 +#: netbox/dcim/models/racks.py:697 msgid "rack reservations" msgstr "机柜预留" -#: netbox/dcim/models/racks.py:567 +#: netbox/dcim/models/racks.py:714 #, python-brace-format msgid "Invalid unit(s) for {height}U rack: {unit_list}" msgstr "{height}U机柜中无效的U位: {unit_list}" -#: netbox/dcim/models/racks.py:580 +#: netbox/dcim/models/racks.py:727 #, python-brace-format msgid "The following units have already been reserved: {unit_list}" msgstr "以下U位已被保留:{unit_list}" @@ -6074,11 +6455,11 @@ msgstr "本端A" msgid "Termination B" msgstr "对端B" -#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:22 +#: netbox/dcim/tables/cables.py:66 netbox/wireless/tables/wirelesslink.py:23 msgid "Device A" msgstr "设备A" -#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:31 +#: netbox/dcim/tables/cables.py:72 netbox/wireless/tables/wirelesslink.py:32 msgid "Device B" msgstr "设备B" @@ -6113,13 +6494,13 @@ msgid "Reachable" msgstr "可达性" #: netbox/dcim/tables/devices.py:58 netbox/dcim/tables/devices.py:106 -#: netbox/dcim/tables/racks.py:81 netbox/dcim/tables/sites.py:105 -#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:442 -#: netbox/netbox/navigation/menu.py:56 netbox/netbox/navigation/menu.py:60 -#: netbox/netbox/navigation/menu.py:62 +#: netbox/dcim/tables/racks.py:150 netbox/dcim/tables/sites.py:105 +#: netbox/dcim/tables/sites.py:148 netbox/extras/tables/tables.py:545 +#: netbox/netbox/navigation/menu.py:69 netbox/netbox/navigation/menu.py:73 +#: netbox/netbox/navigation/menu.py:75 #: netbox/virtualization/forms/model_forms.py:122 #: netbox/virtualization/tables/clusters.py:83 -#: netbox/virtualization/views.py:205 +#: netbox/virtualization/views.py:206 msgid "Devices" msgstr "设备" @@ -6129,17 +6510,17 @@ msgid "VMs" msgstr "VMs" #: netbox/dcim/tables/devices.py:100 netbox/dcim/tables/devices.py:216 -#: netbox/extras/forms/model_forms.py:506 +#: netbox/extras/forms/model_forms.py:630 #: netbox/templates/dcim/device.html:112 #: netbox/templates/dcim/device/render_config.html:11 #: netbox/templates/dcim/device/render_config.html:14 #: netbox/templates/dcim/devicerole.html:44 #: netbox/templates/dcim/platform.html:41 #: netbox/templates/extras/configtemplate.html:10 -#: netbox/templates/virtualization/virtualmachine.html:44 +#: netbox/templates/virtualization/virtualmachine.html:48 #: netbox/templates/virtualization/virtualmachine/render_config.html:11 #: netbox/templates/virtualization/virtualmachine/render_config.html:14 -#: netbox/virtualization/tables/virtualmachines.py:106 +#: netbox/virtualization/tables/virtualmachines.py:107 msgid "Config Template" msgstr "配置模版" @@ -6147,22 +6528,22 @@ msgstr "配置模版" msgid "Site Group" msgstr "站点组" -#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1044 -#: netbox/ipam/forms/bulk_import.py:511 netbox/ipam/forms/model_forms.py:306 +#: netbox/dcim/tables/devices.py:187 netbox/dcim/tables/devices.py:1064 +#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/model_forms.py:306 #: netbox/ipam/forms/model_forms.py:315 netbox/ipam/tables/ip.py:356 #: netbox/ipam/tables/ip.py:423 netbox/ipam/tables/ip.py:446 #: netbox/templates/ipam/ipaddress.html:11 -#: netbox/virtualization/tables/virtualmachines.py:94 +#: netbox/virtualization/tables/virtualmachines.py:95 msgid "IP Address" msgstr "IP地址" -#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1048 -#: netbox/virtualization/tables/virtualmachines.py:85 +#: netbox/dcim/tables/devices.py:191 netbox/dcim/tables/devices.py:1068 +#: netbox/virtualization/tables/virtualmachines.py:86 msgid "IPv4 Address" msgstr "IPv4 地址" -#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1052 -#: netbox/virtualization/tables/virtualmachines.py:89 +#: netbox/dcim/tables/devices.py:195 netbox/dcim/tables/devices.py:1072 +#: netbox/virtualization/tables/virtualmachines.py:90 msgid "IPv6 Address" msgstr "IPv6 地址" @@ -6199,10 +6580,10 @@ msgstr "电源接口" msgid "Power outlets" msgstr "电源插座" -#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1057 -#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:990 -#: netbox/dcim/views.py:1229 netbox/dcim/views.py:1910 -#: netbox/netbox/navigation/menu.py:81 netbox/netbox/navigation/menu.py:237 +#: netbox/dcim/tables/devices.py:246 netbox/dcim/tables/devices.py:1077 +#: netbox/dcim/tables/devicetypes.py:129 netbox/dcim/views.py:1042 +#: netbox/dcim/views.py:1281 netbox/dcim/views.py:1977 +#: netbox/netbox/navigation/menu.py:94 netbox/netbox/navigation/menu.py:250 #: netbox/templates/dcim/device/base.html:37 #: netbox/templates/dcim/device_list.html:43 #: netbox/templates/dcim/devicetype/base.html:34 @@ -6212,8 +6593,8 @@ msgstr "电源插座" #: netbox/templates/dcim/virtualdevicecontext.html:81 #: netbox/templates/virtualization/virtualmachine/base.html:27 #: netbox/templates/virtualization/virtualmachine_list.html:14 -#: netbox/virtualization/tables/virtualmachines.py:100 -#: netbox/virtualization/views.py:365 netbox/wireless/tables/wirelesslan.py:55 +#: netbox/virtualization/tables/virtualmachines.py:101 +#: netbox/virtualization/views.py:366 netbox/wireless/tables/wirelesslan.py:55 msgid "Interfaces" msgstr "接口" @@ -6239,8 +6620,8 @@ msgid "Module Bay" msgstr "设备板卡插槽" #: netbox/dcim/tables/devices.py:318 netbox/dcim/tables/devicetypes.py:48 -#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1065 -#: netbox/dcim/views.py:2008 netbox/netbox/navigation/menu.py:90 +#: netbox/dcim/tables/devicetypes.py:144 netbox/dcim/views.py:1117 +#: netbox/dcim/views.py:2075 netbox/netbox/navigation/menu.py:103 #: netbox/templates/dcim/device/base.html:52 #: netbox/templates/dcim/device_list.html:71 #: netbox/templates/dcim/devicetype/base.html:49 @@ -6249,30 +6630,30 @@ msgstr "设备板卡插槽" msgid "Inventory Items" msgstr "库存项目" -#: netbox/dcim/tables/devices.py:330 +#: netbox/dcim/tables/devices.py:333 msgid "Cable Color" msgstr "线缆颜色" -#: netbox/dcim/tables/devices.py:336 +#: netbox/dcim/tables/devices.py:339 msgid "Link Peers" msgstr "链接对等体" -#: netbox/dcim/tables/devices.py:339 +#: netbox/dcim/tables/devices.py:342 msgid "Mark Connected" msgstr "标记已连接" -#: netbox/dcim/tables/devices.py:458 +#: netbox/dcim/tables/devices.py:461 msgid "Maximum draw (W)" msgstr "最大功率(W)" -#: netbox/dcim/tables/devices.py:461 +#: netbox/dcim/tables/devices.py:464 msgid "Allocated draw (W)" msgstr "分配功率(W)" -#: netbox/dcim/tables/devices.py:555 netbox/ipam/forms/model_forms.py:698 +#: netbox/dcim/tables/devices.py:558 netbox/ipam/forms/model_forms.py:701 #: netbox/ipam/tables/fhrp.py:28 netbox/ipam/views.py:596 -#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:145 -#: netbox/netbox/navigation/menu.py:147 +#: netbox/ipam/views.py:696 netbox/netbox/navigation/menu.py:158 +#: netbox/netbox/navigation/menu.py:160 #: netbox/templates/dcim/interface.html:339 #: netbox/templates/ipam/ipaddress_bulk_add.html:15 #: netbox/templates/ipam/service.html:40 @@ -6281,12 +6662,12 @@ msgstr "分配功率(W)" msgid "IP Addresses" msgstr "IP地址" -#: netbox/dcim/tables/devices.py:561 netbox/netbox/navigation/menu.py:189 +#: netbox/dcim/tables/devices.py:564 netbox/netbox/navigation/menu.py:202 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:6 msgid "FHRP Groups" msgstr "网关冗余协议组" -#: netbox/dcim/tables/devices.py:573 netbox/templates/dcim/interface.html:89 +#: netbox/dcim/tables/devices.py:576 netbox/templates/dcim/interface.html:89 #: netbox/templates/virtualization/vminterface.html:67 #: netbox/templates/vpn/tunnel.html:18 #: netbox/templates/vpn/tunneltermination.html:13 @@ -6297,52 +6678,52 @@ msgstr "网关冗余协议组" msgid "Tunnel" msgstr "隧道" -#: netbox/dcim/tables/devices.py:598 netbox/dcim/tables/devicetypes.py:228 +#: netbox/dcim/tables/devices.py:601 netbox/dcim/tables/devicetypes.py:228 #: netbox/templates/dcim/interface.html:65 msgid "Management Only" msgstr "仅限管理" -#: netbox/dcim/tables/devices.py:617 +#: netbox/dcim/tables/devices.py:620 msgid "VDCs" msgstr "VDCs" -#: netbox/dcim/tables/devices.py:862 netbox/templates/dcim/modulebay.html:49 +#: netbox/dcim/tables/devices.py:869 netbox/templates/dcim/modulebay.html:53 msgid "Installed Module" msgstr "已安装的模块" -#: netbox/dcim/tables/devices.py:865 +#: netbox/dcim/tables/devices.py:872 msgid "Module Serial" msgstr "模块状态" -#: netbox/dcim/tables/devices.py:869 +#: netbox/dcim/tables/devices.py:876 msgid "Module Asset Tag" msgstr "模块资产标签" -#: netbox/dcim/tables/devices.py:878 +#: netbox/dcim/tables/devices.py:885 msgid "Module Status" msgstr "模块状态" -#: netbox/dcim/tables/devices.py:920 netbox/dcim/tables/devicetypes.py:313 +#: netbox/dcim/tables/devices.py:940 netbox/dcim/tables/devicetypes.py:313 #: netbox/templates/dcim/inventoryitem.html:40 msgid "Component" msgstr "组件" -#: netbox/dcim/tables/devices.py:976 +#: netbox/dcim/tables/devices.py:996 msgid "Items" msgstr "项目" -#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:71 -#: netbox/netbox/navigation/menu.py:73 +#: netbox/dcim/tables/devicetypes.py:38 netbox/netbox/navigation/menu.py:84 +#: netbox/netbox/navigation/menu.py:86 msgid "Device Types" msgstr "设备型号" -#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:74 +#: netbox/dcim/tables/devicetypes.py:43 netbox/netbox/navigation/menu.py:87 msgid "Module Types" msgstr "设备配件类型" -#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:380 -#: netbox/extras/forms/model_forms.py:413 netbox/extras/tables/tables.py:437 -#: netbox/netbox/navigation/menu.py:65 +#: netbox/dcim/tables/devicetypes.py:53 netbox/extras/forms/filtersets.py:371 +#: netbox/extras/forms/model_forms.py:537 netbox/extras/tables/tables.py:540 +#: netbox/netbox/navigation/menu.py:78 msgid "Platforms" msgstr "操作系统" @@ -6361,12 +6742,13 @@ msgid "U Height" msgstr "U高度" #: netbox/dcim/tables/devicetypes.py:114 netbox/dcim/tables/modules.py:26 +#: netbox/dcim/tables/racks.py:89 msgid "Instances" msgstr "实例" -#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:930 -#: netbox/dcim/views.py:1169 netbox/dcim/views.py:1846 -#: netbox/netbox/navigation/menu.py:84 +#: netbox/dcim/tables/devicetypes.py:117 netbox/dcim/views.py:982 +#: netbox/dcim/views.py:1221 netbox/dcim/views.py:1913 +#: netbox/netbox/navigation/menu.py:97 #: netbox/templates/dcim/device/base.html:25 #: netbox/templates/dcim/device_list.html:15 #: netbox/templates/dcim/devicetype/base.html:22 @@ -6375,9 +6757,9 @@ msgstr "实例" msgid "Console Ports" msgstr "Console口" -#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:945 -#: netbox/dcim/views.py:1184 netbox/dcim/views.py:1862 -#: netbox/netbox/navigation/menu.py:85 +#: netbox/dcim/tables/devicetypes.py:120 netbox/dcim/views.py:997 +#: netbox/dcim/views.py:1236 netbox/dcim/views.py:1929 +#: netbox/netbox/navigation/menu.py:98 #: netbox/templates/dcim/device/base.html:28 #: netbox/templates/dcim/device_list.html:22 #: netbox/templates/dcim/devicetype/base.html:25 @@ -6386,9 +6768,9 @@ msgstr "Console口" msgid "Console Server Ports" msgstr "Console 服务端口" -#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:960 -#: netbox/dcim/views.py:1199 netbox/dcim/views.py:1878 -#: netbox/netbox/navigation/menu.py:86 +#: netbox/dcim/tables/devicetypes.py:123 netbox/dcim/views.py:1012 +#: netbox/dcim/views.py:1251 netbox/dcim/views.py:1945 +#: netbox/netbox/navigation/menu.py:99 #: netbox/templates/dcim/device/base.html:31 #: netbox/templates/dcim/device_list.html:29 #: netbox/templates/dcim/devicetype/base.html:28 @@ -6397,9 +6779,9 @@ msgstr "Console 服务端口" msgid "Power Ports" msgstr "电源接口" -#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:975 -#: netbox/dcim/views.py:1214 netbox/dcim/views.py:1894 -#: netbox/netbox/navigation/menu.py:87 +#: netbox/dcim/tables/devicetypes.py:126 netbox/dcim/views.py:1027 +#: netbox/dcim/views.py:1266 netbox/dcim/views.py:1961 +#: netbox/netbox/navigation/menu.py:100 #: netbox/templates/dcim/device/base.html:34 #: netbox/templates/dcim/device_list.html:36 #: netbox/templates/dcim/devicetype/base.html:31 @@ -6408,9 +6790,9 @@ msgstr "电源接口" msgid "Power Outlets" msgstr "PDU" -#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1005 -#: netbox/dcim/views.py:1244 netbox/dcim/views.py:1932 -#: netbox/netbox/navigation/menu.py:82 +#: netbox/dcim/tables/devicetypes.py:132 netbox/dcim/views.py:1057 +#: netbox/dcim/views.py:1296 netbox/dcim/views.py:1999 +#: netbox/netbox/navigation/menu.py:95 #: netbox/templates/dcim/device/base.html:40 #: netbox/templates/dcim/devicetype/base.html:37 #: netbox/templates/dcim/module.html:37 @@ -6418,9 +6800,9 @@ msgstr "PDU" msgid "Front Ports" msgstr "前置端口" -#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1020 -#: netbox/dcim/views.py:1259 netbox/dcim/views.py:1948 -#: netbox/netbox/navigation/menu.py:83 +#: netbox/dcim/tables/devicetypes.py:135 netbox/dcim/views.py:1072 +#: netbox/dcim/views.py:1311 netbox/dcim/views.py:2015 +#: netbox/netbox/navigation/menu.py:96 #: netbox/templates/dcim/device/base.html:43 #: netbox/templates/dcim/device_list.html:50 #: netbox/templates/dcim/devicetype/base.html:40 @@ -6429,23 +6811,26 @@ msgstr "前置端口" msgid "Rear Ports" msgstr "后置端口" -#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1050 -#: netbox/dcim/views.py:1988 netbox/netbox/navigation/menu.py:89 +#: netbox/dcim/tables/devicetypes.py:138 netbox/dcim/views.py:1102 +#: netbox/dcim/views.py:2055 netbox/netbox/navigation/menu.py:102 #: netbox/templates/dcim/device/base.html:49 #: netbox/templates/dcim/device_list.html:57 #: netbox/templates/dcim/devicetype/base.html:46 msgid "Device Bays" msgstr "机柜托架" -#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1035 -#: netbox/dcim/views.py:1968 netbox/netbox/navigation/menu.py:88 +#: netbox/dcim/tables/devicetypes.py:141 netbox/dcim/views.py:1087 +#: netbox/dcim/views.py:1326 netbox/dcim/views.py:2035 +#: netbox/netbox/navigation/menu.py:101 #: netbox/templates/dcim/device/base.html:46 #: netbox/templates/dcim/device_list.html:64 #: netbox/templates/dcim/devicetype/base.html:43 +#: netbox/templates/dcim/module.html:43 +#: netbox/templates/dcim/moduletype/base.html:43 msgid "Module Bays" msgstr "设备板卡插槽" -#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:282 +#: netbox/dcim/tables/power.py:36 netbox/netbox/navigation/menu.py:297 #: netbox/templates/dcim/powerpanel.html:51 msgid "Power Feeds" msgstr "电力来源" @@ -6458,41 +6843,45 @@ msgstr "最大利用率" msgid "Available Power (VA)" msgstr "可用功率 (VA)" -#: netbox/dcim/tables/racks.py:29 netbox/dcim/tables/sites.py:143 -#: netbox/netbox/navigation/menu.py:24 netbox/netbox/navigation/menu.py:26 +#: netbox/dcim/tables/racks.py:30 netbox/dcim/tables/sites.py:143 +#: netbox/netbox/navigation/menu.py:43 netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:49 msgid "Racks" msgstr "机柜" -#: netbox/dcim/tables/racks.py:73 netbox/templates/dcim/device.html:318 -#: netbox/templates/dcim/rack.html:90 +#: netbox/dcim/tables/racks.py:63 netbox/dcim/tables/racks.py:142 +#: netbox/templates/dcim/device.html:318 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:14 msgid "Height" msgstr "高度" -#: netbox/dcim/tables/racks.py:85 -msgid "Space" -msgstr "空间" - -#: netbox/dcim/tables/racks.py:96 netbox/templates/dcim/rack.html:100 +#: netbox/dcim/tables/racks.py:67 netbox/dcim/tables/racks.py:165 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:18 msgid "Outer Width" msgstr "外部宽度" -#: netbox/dcim/tables/racks.py:100 netbox/templates/dcim/rack.html:110 +#: netbox/dcim/tables/racks.py:71 netbox/dcim/tables/racks.py:169 +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:28 msgid "Outer Depth" msgstr "外部长度/深度" -#: netbox/dcim/tables/racks.py:108 +#: netbox/dcim/tables/racks.py:79 netbox/dcim/tables/racks.py:177 msgid "Max Weight" msgstr "最大承重" +#: netbox/dcim/tables/racks.py:154 +msgid "Space" +msgstr "空间" + #: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57 -#: netbox/extras/forms/filtersets.py:360 -#: netbox/extras/forms/model_forms.py:393 netbox/ipam/forms/bulk_edit.py:129 +#: netbox/extras/forms/filtersets.py:351 +#: netbox/extras/forms/model_forms.py:517 netbox/ipam/forms/bulk_edit.py:130 #: netbox/ipam/forms/model_forms.py:153 netbox/ipam/tables/asn.py:66 #: netbox/netbox/navigation/menu.py:15 netbox/netbox/navigation/menu.py:17 msgid "Sites" msgstr "站点" -#: netbox/dcim/tests/test_api.py:50 +#: netbox/dcim/tests/test_api.py:47 msgid "Test case must set peer_termination_type" msgstr "测试用例必须设置对端端点类型" @@ -6501,77 +6890,77 @@ msgstr "测试用例必须设置对端端点类型" msgid "Disconnected {count} {type}" msgstr "已断开连接{count} {type}" -#: netbox/dcim/views.py:688 netbox/netbox/navigation/menu.py:28 +#: netbox/dcim/views.py:740 netbox/netbox/navigation/menu.py:51 msgid "Reservations" msgstr "机柜预留" -#: netbox/dcim/views.py:707 netbox/templates/dcim/location.html:90 +#: netbox/dcim/views.py:759 netbox/templates/dcim/location.html:90 #: netbox/templates/dcim/site.html:140 msgid "Non-Racked Devices" msgstr "未上架设备" -#: netbox/dcim/views.py:2021 netbox/extras/forms/model_forms.py:453 +#: netbox/dcim/views.py:2088 netbox/extras/forms/model_forms.py:577 #: netbox/templates/extras/configcontext.html:10 #: netbox/virtualization/forms/model_forms.py:225 -#: netbox/virtualization/views.py:406 +#: netbox/virtualization/views.py:407 msgid "Config Context" msgstr "配置实例" -#: netbox/dcim/views.py:2031 netbox/virtualization/views.py:416 +#: netbox/dcim/views.py:2098 netbox/virtualization/views.py:417 msgid "Render Config" msgstr "提交配置" -#: netbox/dcim/views.py:2064 netbox/virtualization/views.py:449 +#: netbox/dcim/views.py:2131 netbox/virtualization/views.py:450 #, python-brace-format msgid "An error occurred while rendering the template: {error}" msgstr "渲染模板时出错: {error}" -#: netbox/dcim/views.py:2082 netbox/extras/tables/tables.py:447 -#: netbox/netbox/navigation/menu.py:234 netbox/netbox/navigation/menu.py:236 -#: netbox/virtualization/views.py:179 +#: netbox/dcim/views.py:2149 netbox/extras/tables/tables.py:550 +#: netbox/netbox/navigation/menu.py:247 netbox/netbox/navigation/menu.py:249 +#: netbox/virtualization/views.py:180 msgid "Virtual Machines" msgstr "虚拟机" -#: netbox/dcim/views.py:2830 +#: netbox/dcim/views.py:2897 #, python-brace-format msgid "Installed device {device} in bay {device_bay}." msgstr "已安装的设备 {device} 在海湾里 {device_bay}。" -#: netbox/dcim/views.py:2871 +#: netbox/dcim/views.py:2938 #, python-brace-format msgid "Removed device {device} from bay {device_bay}." msgstr "已移除的设备 {device} 来自海湾 {device_bay}。" -#: netbox/dcim/views.py:2977 netbox/ipam/tables/ip.py:234 +#: netbox/dcim/views.py:3044 netbox/ipam/tables/ip.py:234 msgid "Children" msgstr "子网" -#: netbox/dcim/views.py:3443 +#: netbox/dcim/views.py:3510 #, python-brace-format msgid "Added member {device}" msgstr "已添加成员 {device}" -#: netbox/dcim/views.py:3490 +#: netbox/dcim/views.py:3557 #, python-brace-format msgid "Unable to remove master device {device} from the virtual chassis." msgstr "无法移除主设备 {device} 来自虚拟机箱。" -#: netbox/dcim/views.py:3503 +#: netbox/dcim/views.py:3570 #, python-brace-format msgid "Removed {device} from virtual chassis {chassis}" msgstr "已移除 {device} 来自虚拟机箱 {chassis}" -#: netbox/extras/api/customfields.py:88 +#: netbox/extras/api/customfields.py:89 #, python-brace-format msgid "Unknown related object(s): {name}" msgstr "未知的相关对象: {name}" -#: netbox/extras/api/serializers_/customfields.py:74 +#: netbox/extras/api/serializers_/customfields.py:73 msgid "Changing the type of custom fields is not supported." msgstr "不支持更改自定义字段的类型。" -#: netbox/extras/api/serializers_/scripts.py:71 -#: netbox/extras/api/serializers_/scripts.py:76 +#: netbox/extras/api/serializers_/scripts.py:70 +#: netbox/extras/api/serializers_/scripts.py:75 msgid "Scheduling is not enabled for this script." msgstr "脚本计划未启用。" @@ -6620,7 +7009,7 @@ msgid "Multiple objects" msgstr "多个对象" #: netbox/extras/choices.py:53 netbox/netbox/preferences.py:21 -#: netbox/templates/extras/customfield.html:66 netbox/vpn/choices.py:20 +#: netbox/templates/extras/customfield.html:78 netbox/vpn/choices.py:20 #: netbox/wireless/choices.py:27 msgid "Disabled" msgstr "禁用" @@ -6655,7 +7044,7 @@ msgstr "否" #: netbox/extras/choices.py:108 netbox/templates/tenancy/contact.html:57 #: netbox/tenancy/forms/bulk_edit.py:118 -#: netbox/wireless/forms/model_forms.py:162 +#: netbox/wireless/forms/model_forms.py:168 msgid "Link" msgstr "链接" @@ -6675,65 +7064,56 @@ msgstr "按字母顺序 (A-Z)" msgid "Alphabetical (Z-A)" msgstr "按字母顺序 (Z-A)" -#: netbox/extras/choices.py:143 netbox/templates/generic/object.html:61 -msgid "Updated" -msgstr "更新于" - -#: netbox/extras/choices.py:144 -msgid "Deleted" -msgstr "删除" - -#: netbox/extras/choices.py:161 netbox/extras/choices.py:185 +#: netbox/extras/choices.py:144 netbox/extras/choices.py:167 msgid "Info" msgstr "信息" -#: netbox/extras/choices.py:162 netbox/extras/choices.py:184 +#: netbox/extras/choices.py:145 netbox/extras/choices.py:168 msgid "Success" msgstr "成功" -#: netbox/extras/choices.py:163 netbox/extras/choices.py:186 +#: netbox/extras/choices.py:146 netbox/extras/choices.py:169 msgid "Warning" msgstr "警告" -#: netbox/extras/choices.py:164 +#: netbox/extras/choices.py:147 msgid "Danger" msgstr "危急" -#: netbox/extras/choices.py:182 +#: netbox/extras/choices.py:165 msgid "Debug" msgstr "调试" -#: netbox/extras/choices.py:183 netbox/netbox/choices.py:101 +#: netbox/extras/choices.py:166 netbox/netbox/choices.py:101 msgid "Default" msgstr "默认" -#: netbox/extras/choices.py:187 +#: netbox/extras/choices.py:170 msgid "Failure" msgstr "失败" -#: netbox/extras/choices.py:203 +#: netbox/extras/choices.py:186 msgid "Hourly" msgstr "每小时" -#: netbox/extras/choices.py:204 +#: netbox/extras/choices.py:187 msgid "12 hours" msgstr "12小时制" -#: netbox/extras/choices.py:205 +#: netbox/extras/choices.py:188 msgid "Daily" msgstr "每天" -#: netbox/extras/choices.py:206 +#: netbox/extras/choices.py:189 msgid "Weekly" msgstr "周" -#: netbox/extras/choices.py:207 +#: netbox/extras/choices.py:190 msgid "30 days" msgstr "30天" -#: netbox/extras/choices.py:272 netbox/extras/tables/tables.py:303 +#: netbox/extras/choices.py:226 #: netbox/templates/dcim/virtualchassis_edit.html:107 -#: netbox/templates/extras/eventrule.html:40 #: netbox/templates/generic/bulk_add_component.html:68 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/generic/object_edit.html:80 @@ -6741,18 +7121,16 @@ msgstr "30天" msgid "Create" msgstr "创建" -#: netbox/extras/choices.py:273 netbox/extras/tables/tables.py:306 -#: netbox/templates/extras/eventrule.html:44 +#: netbox/extras/choices.py:227 msgid "Update" msgstr "更新" -#: netbox/extras/choices.py:274 netbox/extras/tables/tables.py:309 +#: netbox/extras/choices.py:228 #: netbox/templates/circuits/inc/circuit_termination.html:23 #: netbox/templates/dcim/inc/panels/inventory_items.html:37 #: netbox/templates/dcim/moduletype/component_templates.html:23 #: netbox/templates/dcim/powerpanel.html:66 -#: netbox/templates/extras/eventrule.html:48 -#: netbox/templates/extras/script_list.html:37 +#: netbox/templates/extras/script_list.html:35 #: netbox/templates/generic/bulk_delete.html:20 #: netbox/templates/generic/bulk_delete.html:66 #: netbox/templates/generic/object_delete.html:19 @@ -6763,81 +7141,85 @@ msgstr "更新" msgid "Delete" msgstr "删除" -#: netbox/extras/choices.py:298 netbox/netbox/choices.py:57 +#: netbox/extras/choices.py:252 netbox/netbox/choices.py:57 #: netbox/netbox/choices.py:102 msgid "Blue" msgstr "蓝色" -#: netbox/extras/choices.py:299 netbox/netbox/choices.py:56 +#: netbox/extras/choices.py:253 netbox/netbox/choices.py:56 #: netbox/netbox/choices.py:103 msgid "Indigo" msgstr "靛青色" -#: netbox/extras/choices.py:300 netbox/netbox/choices.py:54 +#: netbox/extras/choices.py:254 netbox/netbox/choices.py:54 #: netbox/netbox/choices.py:104 msgid "Purple" msgstr "紫色" -#: netbox/extras/choices.py:301 netbox/netbox/choices.py:51 +#: netbox/extras/choices.py:255 netbox/netbox/choices.py:51 #: netbox/netbox/choices.py:105 msgid "Pink" msgstr "粉红色" -#: netbox/extras/choices.py:302 netbox/netbox/choices.py:50 +#: netbox/extras/choices.py:256 netbox/netbox/choices.py:50 #: netbox/netbox/choices.py:106 msgid "Red" msgstr "红色" -#: netbox/extras/choices.py:303 netbox/netbox/choices.py:68 +#: netbox/extras/choices.py:257 netbox/netbox/choices.py:68 #: netbox/netbox/choices.py:107 msgid "Orange" msgstr "橙色" -#: netbox/extras/choices.py:304 netbox/netbox/choices.py:66 +#: netbox/extras/choices.py:258 netbox/netbox/choices.py:66 #: netbox/netbox/choices.py:108 msgid "Yellow" msgstr "黄色" -#: netbox/extras/choices.py:305 netbox/netbox/choices.py:63 +#: netbox/extras/choices.py:259 netbox/netbox/choices.py:63 #: netbox/netbox/choices.py:109 msgid "Green" msgstr "绿色" -#: netbox/extras/choices.py:306 netbox/netbox/choices.py:60 +#: netbox/extras/choices.py:260 netbox/netbox/choices.py:60 #: netbox/netbox/choices.py:110 msgid "Teal" msgstr "蓝色" -#: netbox/extras/choices.py:307 netbox/netbox/choices.py:59 +#: netbox/extras/choices.py:261 netbox/netbox/choices.py:59 #: netbox/netbox/choices.py:111 msgid "Cyan" msgstr "蓝绿色" -#: netbox/extras/choices.py:308 netbox/netbox/choices.py:112 +#: netbox/extras/choices.py:262 netbox/netbox/choices.py:112 msgid "Gray" msgstr "灰色" -#: netbox/extras/choices.py:309 netbox/netbox/choices.py:74 +#: netbox/extras/choices.py:263 netbox/netbox/choices.py:74 #: netbox/netbox/choices.py:113 msgid "Black" msgstr "黑色" -#: netbox/extras/choices.py:310 netbox/netbox/choices.py:75 +#: netbox/extras/choices.py:264 netbox/netbox/choices.py:75 #: netbox/netbox/choices.py:114 msgid "White" msgstr "白色" -#: netbox/extras/choices.py:324 netbox/extras/forms/model_forms.py:242 -#: netbox/extras/forms/model_forms.py:324 +#: netbox/extras/choices.py:279 netbox/extras/forms/model_forms.py:353 +#: netbox/extras/forms/model_forms.py:430 #: netbox/templates/extras/webhook.html:10 msgid "Webhook" msgstr "Webhook" -#: netbox/extras/choices.py:325 netbox/extras/forms/model_forms.py:312 +#: netbox/extras/choices.py:280 netbox/extras/forms/model_forms.py:418 #: netbox/templates/extras/script/base.html:29 msgid "Script" msgstr "脚本" +#: netbox/extras/choices.py:281 +msgid "Notification" +msgstr "通知" + #: netbox/extras/conditions.py:54 #, python-brace-format msgid "Unknown operator: {op}. Must be one of: {operators}" @@ -6906,59 +7288,59 @@ msgstr "统计对象数时要应用的筛选器" msgid "Invalid format. Object filters must be passed as a dictionary." msgstr "无效的格式。对象筛选器必须作为字典传递。" -#: netbox/extras/dashboard/widgets.py:206 +#: netbox/extras/dashboard/widgets.py:209 msgid "Object List" msgstr "对象列表" -#: netbox/extras/dashboard/widgets.py:207 +#: netbox/extras/dashboard/widgets.py:210 msgid "Display an arbitrary list of objects." msgstr "显示任意的对象列表。" -#: netbox/extras/dashboard/widgets.py:220 +#: netbox/extras/dashboard/widgets.py:223 msgid "The default number of objects to display" msgstr "要显示的默认对象数" -#: netbox/extras/dashboard/widgets.py:232 +#: netbox/extras/dashboard/widgets.py:235 msgid "Invalid format. URL parameters must be passed as a dictionary." msgstr "无效的格式。URL参数必须作为字典传递。" -#: netbox/extras/dashboard/widgets.py:272 +#: netbox/extras/dashboard/widgets.py:275 msgid "RSS Feed" msgstr "RSS订阅" -#: netbox/extras/dashboard/widgets.py:277 +#: netbox/extras/dashboard/widgets.py:280 msgid "Embed an RSS feed from an external website." msgstr "嵌入来自外部网站的 RSS 源。" -#: netbox/extras/dashboard/widgets.py:284 +#: netbox/extras/dashboard/widgets.py:287 msgid "Feed URL" msgstr "订阅链接" -#: netbox/extras/dashboard/widgets.py:289 +#: netbox/extras/dashboard/widgets.py:292 msgid "The maximum number of objects to display" msgstr "要多显示的对象数" -#: netbox/extras/dashboard/widgets.py:294 +#: netbox/extras/dashboard/widgets.py:297 msgid "How long to stored the cached content (in seconds)" msgstr "存储缓存内容的时间(秒)" -#: netbox/extras/dashboard/widgets.py:346 +#: netbox/extras/dashboard/widgets.py:349 #: netbox/templates/account/base.html:10 #: netbox/templates/account/bookmarks.html:7 -#: netbox/templates/inc/user_menu.html:30 +#: netbox/templates/inc/user_menu.html:48 msgid "Bookmarks" msgstr "书签" -#: netbox/extras/dashboard/widgets.py:350 +#: netbox/extras/dashboard/widgets.py:353 msgid "Show your personal bookmarks" msgstr "显示您的个人书签" -#: netbox/extras/events.py:137 +#: netbox/extras/events.py:147 #, python-brace-format msgid "Unknown action type for an event rule: {action_type}" msgstr "事件规则的未知操作类型: {action_type}" -#: netbox/extras/events.py:185 +#: netbox/extras/events.py:192 #, python-brace-format msgid "Cannot import events pipeline {name} error: {error}" msgstr "无法导入事件管道 {name}错误: {error}" @@ -6967,554 +7349,544 @@ msgstr "无法导入事件管道 {name}错误: {error}" msgid "Script module (ID)" msgstr "脚本模版(ID)" -#: netbox/extras/filtersets.py:249 netbox/extras/filtersets.py:589 -#: netbox/extras/filtersets.py:621 +#: netbox/extras/filtersets.py:254 netbox/extras/filtersets.py:637 +#: netbox/extras/filtersets.py:665 msgid "Data file (ID)" msgstr "数据文件(ID)" -#: netbox/extras/filtersets.py:526 +#: netbox/extras/filtersets.py:370 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:191 +msgid "Group (name)" +msgstr "组 (名字)" + +#: netbox/extras/filtersets.py:574 #: netbox/virtualization/forms/filtersets.py:118 msgid "Cluster type" msgstr "堆叠类型" -#: netbox/extras/filtersets.py:532 netbox/virtualization/filtersets.py:95 +#: netbox/extras/filtersets.py:580 netbox/virtualization/filtersets.py:95 #: netbox/virtualization/filtersets.py:147 msgid "Cluster type (slug)" msgstr "堆叠类型(缩写)" -#: netbox/extras/filtersets.py:553 netbox/tenancy/forms/forms.py:16 +#: netbox/extras/filtersets.py:601 netbox/tenancy/forms/forms.py:16 #: netbox/tenancy/forms/forms.py:39 msgid "Tenant group" msgstr "租户组" -#: netbox/extras/filtersets.py:559 netbox/tenancy/filtersets.py:189 +#: netbox/extras/filtersets.py:607 netbox/tenancy/filtersets.py:189 #: netbox/tenancy/filtersets.py:209 msgid "Tenant group (slug)" msgstr "租户组(缩写)" -#: netbox/extras/filtersets.py:575 netbox/extras/forms/model_forms.py:371 +#: netbox/extras/filtersets.py:623 netbox/extras/forms/model_forms.py:495 #: netbox/templates/extras/tag.html:11 msgid "Tag" msgstr "标签" -#: netbox/extras/filtersets.py:581 +#: netbox/extras/filtersets.py:629 msgid "Tag (slug)" msgstr "标签(缩写)" -#: netbox/extras/filtersets.py:645 netbox/extras/forms/filtersets.py:438 +#: netbox/extras/filtersets.py:689 netbox/extras/forms/filtersets.py:429 msgid "Has local config context data" msgstr "具有本地配置实例" -#: netbox/extras/filtersets.py:670 -msgid "User name" -msgstr "用户名" - -#: netbox/extras/forms/bulk_edit.py:32 netbox/extras/forms/filtersets.py:57 +#: netbox/extras/forms/bulk_edit.py:35 netbox/extras/forms/filtersets.py:60 msgid "Group name" msgstr "组名称" -#: netbox/extras/forms/bulk_edit.py:40 netbox/extras/forms/filtersets.py:65 -#: netbox/extras/tables/tables.py:50 +#: netbox/extras/forms/bulk_edit.py:43 netbox/extras/forms/filtersets.py:68 +#: netbox/extras/tables/tables.py:65 #: netbox/templates/extras/customfield.html:38 #: netbox/templates/generic/bulk_import.html:118 msgid "Required" msgstr "必须" -#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_import.py:57 -#: netbox/extras/forms/filtersets.py:79 -#: netbox/extras/models/customfields.py:195 +#: netbox/extras/forms/bulk_edit.py:48 netbox/extras/forms/filtersets.py:75 +msgid "Must be unique" +msgstr "必须是唯一的" + +#: netbox/extras/forms/bulk_edit.py:61 netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/filtersets.py:89 +#: netbox/extras/models/customfields.py:209 msgid "UI visible" msgstr "页面可见" -#: netbox/extras/forms/bulk_edit.py:58 netbox/extras/forms/bulk_import.py:63 -#: netbox/extras/forms/filtersets.py:84 -#: netbox/extras/models/customfields.py:202 +#: netbox/extras/forms/bulk_edit.py:66 netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/filtersets.py:94 +#: netbox/extras/models/customfields.py:216 msgid "UI editable" msgstr "页面可编辑" -#: netbox/extras/forms/bulk_edit.py:63 netbox/extras/forms/filtersets.py:87 +#: netbox/extras/forms/bulk_edit.py:71 netbox/extras/forms/filtersets.py:97 msgid "Is cloneable" msgstr "可复制" -#: netbox/extras/forms/bulk_edit.py:103 netbox/extras/forms/filtersets.py:127 +#: netbox/extras/forms/bulk_edit.py:76 netbox/extras/forms/filtersets.py:104 +msgid "Minimum value" +msgstr "最小值" + +#: netbox/extras/forms/bulk_edit.py:80 netbox/extras/forms/filtersets.py:108 +msgid "Maximum value" +msgstr "最大值" + +#: netbox/extras/forms/bulk_edit.py:84 netbox/extras/forms/filtersets.py:112 +msgid "Validation regex" +msgstr "验证正则表达式" + +#: netbox/extras/forms/bulk_edit.py:91 netbox/extras/forms/filtersets.py:46 +#: netbox/extras/forms/model_forms.py:76 +#: netbox/templates/extras/customfield.html:70 +msgid "Behavior" +msgstr "行为" + +#: netbox/extras/forms/bulk_edit.py:128 netbox/extras/forms/filtersets.py:149 msgid "New window" msgstr "新窗口" -#: netbox/extras/forms/bulk_edit.py:112 +#: netbox/extras/forms/bulk_edit.py:137 msgid "Button class" msgstr "按钮类型" -#: netbox/extras/forms/bulk_edit.py:129 netbox/extras/forms/filtersets.py:165 -#: netbox/extras/models/models.py:437 +#: netbox/extras/forms/bulk_edit.py:154 netbox/extras/forms/filtersets.py:187 +#: netbox/extras/models/models.py:409 msgid "MIME type" msgstr "MIME类型" -#: netbox/extras/forms/bulk_edit.py:134 netbox/extras/forms/filtersets.py:168 +#: netbox/extras/forms/bulk_edit.py:159 netbox/extras/forms/filtersets.py:190 msgid "File extension" msgstr "文件扩展名" -#: netbox/extras/forms/bulk_edit.py:139 netbox/extras/forms/filtersets.py:172 +#: netbox/extras/forms/bulk_edit.py:164 netbox/extras/forms/filtersets.py:194 msgid "As attachment" msgstr "作为附件" -#: netbox/extras/forms/bulk_edit.py:167 netbox/extras/forms/filtersets.py:214 -#: netbox/extras/tables/tables.py:225 +#: netbox/extras/forms/bulk_edit.py:192 netbox/extras/forms/filtersets.py:236 +#: netbox/extras/tables/tables.py:256 #: netbox/templates/extras/savedfilter.html:29 msgid "Shared" msgstr "共享性" -#: netbox/extras/forms/bulk_edit.py:190 netbox/extras/forms/filtersets.py:243 -#: netbox/extras/models/models.py:202 +#: netbox/extras/forms/bulk_edit.py:215 netbox/extras/forms/filtersets.py:265 +#: netbox/extras/models/models.py:174 msgid "HTTP method" msgstr "HTTP方法" -#: netbox/extras/forms/bulk_edit.py:194 netbox/extras/forms/filtersets.py:237 +#: netbox/extras/forms/bulk_edit.py:219 netbox/extras/forms/filtersets.py:259 #: netbox/templates/extras/webhook.html:30 msgid "Payload URL" msgstr "有效URL" -#: netbox/extras/forms/bulk_edit.py:199 netbox/extras/models/models.py:242 +#: netbox/extras/forms/bulk_edit.py:224 netbox/extras/models/models.py:214 msgid "SSL verification" msgstr "SSL验证" -#: netbox/extras/forms/bulk_edit.py:202 +#: netbox/extras/forms/bulk_edit.py:227 #: netbox/templates/extras/webhook.html:38 msgid "Secret" msgstr "密钥" -#: netbox/extras/forms/bulk_edit.py:207 +#: netbox/extras/forms/bulk_edit.py:232 msgid "CA file path" msgstr "CA证书文件路径" -#: netbox/extras/forms/bulk_edit.py:226 -msgid "On create" -msgstr "创建时" - -#: netbox/extras/forms/bulk_edit.py:231 -msgid "On update" -msgstr "更新时" - -#: netbox/extras/forms/bulk_edit.py:236 -msgid "On delete" -msgstr "删除时" +#: netbox/extras/forms/bulk_edit.py:253 netbox/extras/forms/bulk_import.py:192 +#: netbox/extras/forms/model_forms.py:377 +msgid "Event types" +msgstr "事件类型" -#: netbox/extras/forms/bulk_edit.py:241 -msgid "On job start" -msgstr "任务开始时" - -#: netbox/extras/forms/bulk_edit.py:246 -msgid "On job end" -msgstr "任务结束时" - -#: netbox/extras/forms/bulk_edit.py:283 +#: netbox/extras/forms/bulk_edit.py:293 msgid "Is active" msgstr "激活的" -#: netbox/extras/forms/bulk_import.py:34 -#: netbox/extras/forms/bulk_import.py:115 -#: netbox/extras/forms/bulk_import.py:136 -#: netbox/extras/forms/bulk_import.py:159 -#: netbox/extras/forms/bulk_import.py:183 -#: netbox/extras/forms/filtersets.py:115 netbox/extras/forms/filtersets.py:202 -#: netbox/extras/forms/model_forms.py:43 -#: netbox/extras/forms/model_forms.py:131 -#: netbox/extras/forms/model_forms.py:163 -#: netbox/extras/forms/model_forms.py:204 -#: netbox/extras/forms/model_forms.py:261 -#: netbox/extras/forms/model_forms.py:365 +#: netbox/extras/forms/bulk_import.py:37 +#: netbox/extras/forms/bulk_import.py:118 +#: netbox/extras/forms/bulk_import.py:139 +#: netbox/extras/forms/bulk_import.py:162 +#: netbox/extras/forms/bulk_import.py:186 +#: netbox/extras/forms/filtersets.py:137 netbox/extras/forms/filtersets.py:224 +#: netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/model_forms.py:205 +#: netbox/extras/forms/model_forms.py:237 +#: netbox/extras/forms/model_forms.py:278 +#: netbox/extras/forms/model_forms.py:372 +#: netbox/extras/forms/model_forms.py:489 #: netbox/users/forms/model_forms.py:277 msgid "Object types" msgstr "对象类型" -#: netbox/extras/forms/bulk_import.py:36 -#: netbox/extras/forms/bulk_import.py:117 -#: netbox/extras/forms/bulk_import.py:138 -#: netbox/extras/forms/bulk_import.py:161 -#: netbox/extras/forms/bulk_import.py:185 +#: netbox/extras/forms/bulk_import.py:39 +#: netbox/extras/forms/bulk_import.py:120 +#: netbox/extras/forms/bulk_import.py:141 +#: netbox/extras/forms/bulk_import.py:164 +#: netbox/extras/forms/bulk_import.py:188 #: netbox/tenancy/forms/bulk_import.py:96 msgid "One or more assigned object types" msgstr "一个或多个分配对象类型" -#: netbox/extras/forms/bulk_import.py:41 +#: netbox/extras/forms/bulk_import.py:44 msgid "Field data type (e.g. text, integer, etc.)" msgstr "字段数据类型(例如文本、整数等)" -#: netbox/extras/forms/bulk_import.py:44 netbox/extras/forms/filtersets.py:186 -#: netbox/extras/forms/filtersets.py:260 -#: netbox/extras/forms/model_forms.py:230 +#: netbox/extras/forms/bulk_import.py:47 netbox/extras/forms/filtersets.py:208 +#: netbox/extras/forms/filtersets.py:281 +#: netbox/extras/forms/model_forms.py:304 +#: netbox/extras/forms/model_forms.py:341 #: netbox/tenancy/forms/filtersets.py:92 msgid "Object type" msgstr "对象类型" -#: netbox/extras/forms/bulk_import.py:47 +#: netbox/extras/forms/bulk_import.py:50 msgid "Object type (for object or multi-object fields)" msgstr "对象类型(用于对象或多对象字段)" -#: netbox/extras/forms/bulk_import.py:50 netbox/extras/forms/filtersets.py:74 +#: netbox/extras/forms/bulk_import.py:53 netbox/extras/forms/filtersets.py:84 msgid "Choice set" msgstr "可选项" -#: netbox/extras/forms/bulk_import.py:54 +#: netbox/extras/forms/bulk_import.py:57 msgid "Choice set (for selection fields)" msgstr "可选项(用于单选框)" -#: netbox/extras/forms/bulk_import.py:60 +#: netbox/extras/forms/bulk_import.py:63 msgid "Whether the custom field is displayed in the UI" msgstr "自定义字段是否显示在页面中" -#: netbox/extras/forms/bulk_import.py:66 +#: netbox/extras/forms/bulk_import.py:69 msgid "Whether the custom field is editable in the UI" msgstr "自定义字段在页面中是否可编辑" -#: netbox/extras/forms/bulk_import.py:82 +#: netbox/extras/forms/bulk_import.py:85 msgid "The base set of predefined choices to use (if any)" msgstr "预定义选项的基本集合(如有)" -#: netbox/extras/forms/bulk_import.py:88 +#: netbox/extras/forms/bulk_import.py:91 msgid "" "Quoted string of comma-separated field choices with optional labels " "separated by colon: \"choice1:First Choice,choice2:Second Choice\"" msgstr "用逗号分隔字段选项,可选标签用冒号分隔,并用引号包围:“选项1:第一选项,选项2:第二选项”" -#: netbox/extras/forms/bulk_import.py:120 netbox/extras/models/models.py:351 +#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:323 msgid "button class" msgstr "按钮类" -#: netbox/extras/forms/bulk_import.py:123 netbox/extras/models/models.py:355 +#: netbox/extras/forms/bulk_import.py:126 netbox/extras/models/models.py:327 msgid "" "The class of the first link in a group will be used for the dropdown button" msgstr "列表中第一个类将用于下拉按钮" -#: netbox/extras/forms/bulk_import.py:188 +#: netbox/extras/forms/bulk_import.py:193 +msgid "The event type(s) which will trigger this rule" +msgstr "将触发此规则的事件类型" + +#: netbox/extras/forms/bulk_import.py:196 msgid "Action object" msgstr "动作对象" -#: netbox/extras/forms/bulk_import.py:190 +#: netbox/extras/forms/bulk_import.py:198 msgid "Webhook name or script as dotted path module.Class" msgstr "Webhook名称或脚本的路径为module.Class" -#: netbox/extras/forms/bulk_import.py:211 +#: netbox/extras/forms/bulk_import.py:219 #, python-brace-format msgid "Webhook {name} not found" msgstr "未找到 Webhook {name}" -#: netbox/extras/forms/bulk_import.py:220 +#: netbox/extras/forms/bulk_import.py:228 #, python-brace-format msgid "Script {name} not found" msgstr "未找到脚本{name}" -#: netbox/extras/forms/bulk_import.py:236 +#: netbox/extras/forms/bulk_import.py:244 msgid "Assigned object type" msgstr "分配的对象类型" -#: netbox/extras/forms/bulk_import.py:241 +#: netbox/extras/forms/bulk_import.py:249 msgid "The classification of entry" msgstr "条目的分类" -#: netbox/extras/forms/filtersets.py:49 netbox/extras/forms/model_forms.py:47 +#: netbox/extras/forms/bulk_import.py:261 +#: netbox/extras/forms/model_forms.py:320 netbox/netbox/navigation/menu.py:390 +#: netbox/templates/extras/notificationgroup.html:41 +#: netbox/templates/users/group.html:29 netbox/users/forms/model_forms.py:237 +#: netbox/users/forms/model_forms.py:249 netbox/users/forms/model_forms.py:301 +#: netbox/users/tables.py:102 +msgid "Users" +msgstr "用户" + +#: netbox/extras/forms/bulk_import.py:265 +msgid "User names separated by commas, encased with double quotes" +msgstr "用户名用逗号分隔,用双引号括起来" + +#: netbox/extras/forms/bulk_import.py:268 +#: netbox/extras/forms/model_forms.py:315 netbox/netbox/navigation/menu.py:410 +#: netbox/templates/extras/notificationgroup.html:31 +#: netbox/users/forms/model_forms.py:182 netbox/users/forms/model_forms.py:194 +#: netbox/users/forms/model_forms.py:306 netbox/users/tables.py:35 +#: netbox/users/tables.py:106 +msgid "Groups" +msgstr "组" + +#: netbox/extras/forms/bulk_import.py:272 +msgid "Group names separated by commas, encased with double quotes" +msgstr "群组名称用逗号分隔,用双引号括起来" + +#: netbox/extras/forms/filtersets.py:52 netbox/extras/forms/model_forms.py:56 msgid "Related object type" msgstr "连接的对象类型" -#: netbox/extras/forms/filtersets.py:54 +#: netbox/extras/forms/filtersets.py:57 msgid "Field type" msgstr "字段类型" -#: netbox/extras/forms/filtersets.py:98 netbox/extras/tables/tables.py:72 +#: netbox/extras/forms/filtersets.py:120 +#: netbox/extras/forms/model_forms.py:157 netbox/extras/tables/tables.py:91 #: netbox/templates/generic/bulk_import.html:154 msgid "Choices" msgstr "选项" -#: netbox/extras/forms/filtersets.py:142 netbox/extras/forms/filtersets.py:328 -#: netbox/extras/forms/filtersets.py:417 -#: netbox/extras/forms/model_forms.py:448 netbox/templates/core/job.html:90 -#: netbox/templates/extras/eventrule.html:90 +#: netbox/extras/forms/filtersets.py:164 netbox/extras/forms/filtersets.py:319 +#: netbox/extras/forms/filtersets.py:408 +#: netbox/extras/forms/model_forms.py:572 netbox/templates/core/job.html:96 +#: netbox/templates/extras/eventrule.html:84 msgid "Data" msgstr "数据" -#: netbox/extras/forms/filtersets.py:153 netbox/extras/forms/filtersets.py:342 -#: netbox/extras/forms/filtersets.py:427 netbox/netbox/choices.py:130 +#: netbox/extras/forms/filtersets.py:175 netbox/extras/forms/filtersets.py:333 +#: netbox/extras/forms/filtersets.py:418 netbox/netbox/choices.py:130 #: netbox/utilities/forms/bulk_import.py:26 msgid "Data file" msgstr "数据文件" -#: netbox/extras/forms/filtersets.py:161 +#: netbox/extras/forms/filtersets.py:183 msgid "Content types" msgstr "内容类型" -#: netbox/extras/forms/filtersets.py:233 netbox/extras/models/models.py:207 +#: netbox/extras/forms/filtersets.py:255 netbox/extras/models/models.py:179 msgid "HTTP content type" msgstr "HTTP内容类型" -#: netbox/extras/forms/filtersets.py:255 -#: netbox/extras/forms/model_forms.py:280 -#: netbox/templates/extras/eventrule.html:37 -msgid "Events" -msgstr "事件" +#: netbox/extras/forms/filtersets.py:286 +msgid "Event type" +msgstr "事件类型" -#: netbox/extras/forms/filtersets.py:265 +#: netbox/extras/forms/filtersets.py:291 msgid "Action type" msgstr "动作类型" -#: netbox/extras/forms/filtersets.py:279 -msgid "Object creations" -msgstr "对象创建" - -#: netbox/extras/forms/filtersets.py:286 -msgid "Object updates" -msgstr "对象更新" - -#: netbox/extras/forms/filtersets.py:293 -msgid "Object deletions" -msgstr "对象删除" - -#: netbox/extras/forms/filtersets.py:300 -msgid "Job starts" -msgstr "开始任务" - #: netbox/extras/forms/filtersets.py:307 -#: netbox/extras/forms/model_forms.py:297 -msgid "Job terminations" -msgstr "终止任务" - -#: netbox/extras/forms/filtersets.py:316 msgid "Tagged object type" msgstr "标记的对象类型" -#: netbox/extras/forms/filtersets.py:321 +#: netbox/extras/forms/filtersets.py:312 msgid "Allowed object type" msgstr "允许的对象类型" -#: netbox/extras/forms/filtersets.py:350 -#: netbox/extras/forms/model_forms.py:383 netbox/netbox/navigation/menu.py:18 +#: netbox/extras/forms/filtersets.py:341 +#: netbox/extras/forms/model_forms.py:507 netbox/netbox/navigation/menu.py:18 msgid "Regions" msgstr "地区" -#: netbox/extras/forms/filtersets.py:355 -#: netbox/extras/forms/model_forms.py:388 +#: netbox/extras/forms/filtersets.py:346 +#: netbox/extras/forms/model_forms.py:512 msgid "Site groups" msgstr "站点组" -#: netbox/extras/forms/filtersets.py:365 -#: netbox/extras/forms/model_forms.py:398 netbox/netbox/navigation/menu.py:20 +#: netbox/extras/forms/filtersets.py:356 +#: netbox/extras/forms/model_forms.py:522 netbox/netbox/navigation/menu.py:20 #: netbox/templates/dcim/site.html:127 msgid "Locations" msgstr "位置" -#: netbox/extras/forms/filtersets.py:370 -#: netbox/extras/forms/model_forms.py:403 +#: netbox/extras/forms/filtersets.py:361 +#: netbox/extras/forms/model_forms.py:527 msgid "Device types" msgstr "设备型号" -#: netbox/extras/forms/filtersets.py:375 -#: netbox/extras/forms/model_forms.py:408 +#: netbox/extras/forms/filtersets.py:366 +#: netbox/extras/forms/model_forms.py:532 msgid "Roles" msgstr "角色" -#: netbox/extras/forms/filtersets.py:385 -#: netbox/extras/forms/model_forms.py:418 +#: netbox/extras/forms/filtersets.py:376 +#: netbox/extras/forms/model_forms.py:542 msgid "Cluster types" msgstr "集群类型" -#: netbox/extras/forms/filtersets.py:390 -#: netbox/extras/forms/model_forms.py:423 +#: netbox/extras/forms/filtersets.py:381 +#: netbox/extras/forms/model_forms.py:547 msgid "Cluster groups" msgstr "集群组" -#: netbox/extras/forms/filtersets.py:395 -#: netbox/extras/forms/model_forms.py:428 netbox/netbox/navigation/menu.py:242 -#: netbox/netbox/navigation/menu.py:244 +#: netbox/extras/forms/filtersets.py:386 +#: netbox/extras/forms/model_forms.py:552 netbox/netbox/navigation/menu.py:255 +#: netbox/netbox/navigation/menu.py:257 #: netbox/templates/virtualization/clustertype.html:30 #: netbox/virtualization/tables/clusters.py:23 #: netbox/virtualization/tables/clusters.py:45 msgid "Clusters" -msgstr "集群" - -#: netbox/extras/forms/filtersets.py:400 -#: netbox/extras/forms/model_forms.py:433 -msgid "Tenant groups" -msgstr "租户组" - -#: netbox/extras/forms/filtersets.py:454 netbox/extras/forms/filtersets.py:489 -msgid "After" -msgstr "之后" +msgstr "集群" -#: netbox/extras/forms/filtersets.py:459 netbox/extras/forms/filtersets.py:494 -msgid "Before" -msgstr "之前" +#: netbox/extras/forms/filtersets.py:391 +#: netbox/extras/forms/model_forms.py:557 +msgid "Tenant groups" +msgstr "租户组" -#: netbox/extras/forms/filtersets.py:484 netbox/extras/tables/tables.py:463 -#: netbox/extras/tables/tables.py:549 netbox/extras/tables/tables.py:586 -#: netbox/templates/extras/objectchange.html:32 -msgid "Time" -msgstr "时间" +#: netbox/extras/forms/model_forms.py:49 +msgid "The type(s) of object that have this custom field" +msgstr "具有此自定义字段的对象的类型" -#: netbox/extras/forms/filtersets.py:498 -#: netbox/extras/forms/model_forms.py:282 netbox/extras/tables/tables.py:477 -#: netbox/templates/extras/eventrule.html:77 -#: netbox/templates/extras/objectchange.html:46 -msgid "Action" -msgstr "动作" +#: netbox/extras/forms/model_forms.py:52 +msgid "Default value" +msgstr "默认值" -#: netbox/extras/forms/model_forms.py:50 +#: netbox/extras/forms/model_forms.py:58 msgid "Type of the related object (for object/multi-object fields only)" msgstr "相关对象的类型(仅适用于对象/多对象字段)" #: netbox/extras/forms/model_forms.py:61 +#: netbox/templates/extras/customfield.html:60 +msgid "Related object filter" +msgstr "相关对象过滤器" + +#: netbox/extras/forms/model_forms.py:63 +msgid "Specify query parameters as a JSON object." +msgstr "将查询参数指定为 JSON 对象。" + +#: netbox/extras/forms/model_forms.py:73 #: netbox/templates/extras/customfield.html:10 msgid "Custom Field" msgstr "自定义字段" -#: netbox/extras/forms/model_forms.py:64 -#: netbox/templates/extras/customfield.html:58 -msgid "Behavior" -msgstr "行为" - -#: netbox/extras/forms/model_forms.py:66 -msgid "Values" -msgstr "值" - -#: netbox/extras/forms/model_forms.py:75 +#: netbox/extras/forms/model_forms.py:85 msgid "" "The type of data stored in this field. For object/multi-object fields, " "select the related object type below." msgstr "存储在此字段中的数据类型。对于对象/多对象字段,请选择下面的相关对象类型。" -#: netbox/extras/forms/model_forms.py:78 +#: netbox/extras/forms/model_forms.py:88 msgid "" "This will be displayed as help text for the form field. Markdown is " "supported." msgstr "这将显示为表单字段的帮助文本。支持Markdown。" -#: netbox/extras/forms/model_forms.py:95 +#: netbox/extras/forms/model_forms.py:143 +msgid "Related Object" +msgstr "相关对象" + +#: netbox/extras/forms/model_forms.py:169 msgid "" "Enter one choice per line. An optional label may be specified for each " "choice by appending it with a colon. Example:" msgstr "每行输入一个选项。可以为每个选项指定一个可选标签,方法是在其后面附加一个冒号。例如:" -#: netbox/extras/forms/model_forms.py:138 +#: netbox/extras/forms/model_forms.py:212 #: netbox/templates/extras/customlink.html:10 msgid "Custom Link" msgstr "自定义链接" -#: netbox/extras/forms/model_forms.py:140 +#: netbox/extras/forms/model_forms.py:214 msgid "Templates" msgstr "模版" -#: netbox/extras/forms/model_forms.py:152 +#: netbox/extras/forms/model_forms.py:226 #, python-brace-format msgid "" "Jinja2 template code for the link text. Reference the object as {example}. " "Links which render as empty text will not be displayed." msgstr "用于链接的Jinja2模板代码。将对象引用为{example}。空链接将不会显示。" -#: netbox/extras/forms/model_forms.py:156 +#: netbox/extras/forms/model_forms.py:230 #, python-brace-format msgid "" "Jinja2 template code for the link URL. Reference the object as {example}." msgstr "URL链接的Jinja2模板代码。将对象引用为 {example}。" -#: netbox/extras/forms/model_forms.py:167 -#: netbox/extras/forms/model_forms.py:500 +#: netbox/extras/forms/model_forms.py:241 +#: netbox/extras/forms/model_forms.py:624 msgid "Template code" msgstr "模版代码" -#: netbox/extras/forms/model_forms.py:173 +#: netbox/extras/forms/model_forms.py:247 #: netbox/templates/extras/exporttemplate.html:12 msgid "Export Template" msgstr "导出模版" -#: netbox/extras/forms/model_forms.py:175 +#: netbox/extras/forms/model_forms.py:249 msgid "Rendering" msgstr "转换" -#: netbox/extras/forms/model_forms.py:189 -#: netbox/extras/forms/model_forms.py:525 +#: netbox/extras/forms/model_forms.py:263 +#: netbox/extras/forms/model_forms.py:649 msgid "Template content is populated from the remote source selected below." msgstr "模板内容是从下面选择的远程源填充的。" -#: netbox/extras/forms/model_forms.py:196 -#: netbox/extras/forms/model_forms.py:532 +#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:656 msgid "Must specify either local content or a data file" msgstr "必须指定本地内容或数据文件" -#: netbox/extras/forms/model_forms.py:210 netbox/netbox/forms/mixins.py:70 +#: netbox/extras/forms/model_forms.py:284 netbox/netbox/forms/mixins.py:70 #: netbox/templates/extras/savedfilter.html:10 msgid "Saved Filter" msgstr "已保存的过滤器" -#: netbox/extras/forms/model_forms.py:245 +#: netbox/extras/forms/model_forms.py:334 +msgid "A notification group specify at least one user or group." +msgstr "通知组至少指定一个用户或组。" + +#: netbox/extras/forms/model_forms.py:356 #: netbox/templates/extras/webhook.html:23 msgid "HTTP Request" msgstr "HTTP 请求" -#: netbox/extras/forms/model_forms.py:247 +#: netbox/extras/forms/model_forms.py:358 #: netbox/templates/extras/webhook.html:44 msgid "SSL" msgstr "SSL" -#: netbox/extras/forms/model_forms.py:265 +#: netbox/extras/forms/model_forms.py:380 msgid "Action choice" msgstr "选择动作" -#: netbox/extras/forms/model_forms.py:270 +#: netbox/extras/forms/model_forms.py:385 msgid "Enter conditions in JSON format." msgstr "已JSON格式输入条件。" -#: netbox/extras/forms/model_forms.py:274 +#: netbox/extras/forms/model_forms.py:389 msgid "" "Enter parameters to pass to the action in JSON format." msgstr "输入以 JSON格式传递的参数。" -#: netbox/extras/forms/model_forms.py:279 +#: netbox/extras/forms/model_forms.py:394 #: netbox/templates/extras/eventrule.html:10 msgid "Event Rule" msgstr "事件规则" -#: netbox/extras/forms/model_forms.py:281 -#: netbox/templates/extras/eventrule.html:66 -msgid "Conditions" -msgstr "条件" - -#: netbox/extras/forms/model_forms.py:293 -msgid "Creations" -msgstr "创建" - -#: netbox/extras/forms/model_forms.py:294 -msgid "Updates" -msgstr "更新" - -#: netbox/extras/forms/model_forms.py:295 -msgid "Deletions" -msgstr "删除" +#: netbox/extras/forms/model_forms.py:395 +msgid "Triggers" +msgstr "触发器" -#: netbox/extras/forms/model_forms.py:296 -msgid "Job executions" -msgstr "任务开始" +#: netbox/extras/forms/model_forms.py:442 +msgid "Notification group" +msgstr "通知组" -#: netbox/extras/forms/model_forms.py:438 netbox/netbox/navigation/menu.py:39 +#: netbox/extras/forms/model_forms.py:562 netbox/netbox/navigation/menu.py:26 #: netbox/tenancy/tables/tenants.py:22 msgid "Tenants" msgstr "租户" -#: netbox/extras/forms/model_forms.py:458 netbox/ipam/forms/filtersets.py:142 -#: netbox/ipam/forms/filtersets.py:553 netbox/ipam/forms/model_forms.py:323 -#: netbox/templates/extras/configcontext.html:60 -#: netbox/templates/ipam/ipaddress.html:59 -#: netbox/templates/ipam/vlan_edit.html:30 -#: netbox/tenancy/forms/filtersets.py:87 netbox/users/forms/model_forms.py:315 -msgid "Assignment" -msgstr "分配" - -#: netbox/extras/forms/model_forms.py:482 +#: netbox/extras/forms/model_forms.py:606 msgid "Data is populated from the remote source selected below." msgstr "数据是从下面选择的远程源填充的。" -#: netbox/extras/forms/model_forms.py:488 +#: netbox/extras/forms/model_forms.py:612 msgid "Must specify either local data or a data file" msgstr "必须指定本地内容或数据文件" -#: netbox/extras/forms/model_forms.py:507 +#: netbox/extras/forms/model_forms.py:631 #: netbox/templates/core/datafile.html:55 msgid "Content" msgstr "内容" @@ -7560,47 +7932,25 @@ msgstr "在指定的时间执行脚本" msgid "Interval at which this script is re-run (in minutes)" msgstr "重新运行此脚本的间隔(分钟)" -#: netbox/extras/management/commands/reindex.py:66 -msgid "No indexers found!" -msgstr "找不到索引!" - -#: netbox/extras/models/change_logging.py:29 -msgid "time" -msgstr "时间" - -#: netbox/extras/models/change_logging.py:42 -msgid "user name" -msgstr "用户名" - -#: netbox/extras/models/change_logging.py:47 -msgid "request ID" -msgstr "请求ID" - -#: netbox/extras/models/change_logging.py:52 -#: netbox/extras/models/staging.py:70 -msgid "action" -msgstr "动作" - -#: netbox/extras/models/change_logging.py:86 -msgid "pre-change data" -msgstr "变更前配置" +#: netbox/extras/jobs.py:49 +msgid "Database changes have been reverted automatically." +msgstr "数据库更改已自动恢复。" -#: netbox/extras/models/change_logging.py:92 -msgid "post-change data" -msgstr "变更后配置" +#: netbox/extras/jobs.py:56 +msgid "Script aborted with error: " +msgstr "脚本因错误而中止:" -#: netbox/extras/models/change_logging.py:106 -msgid "object change" -msgstr "变更的对象" +#: netbox/extras/jobs.py:66 +msgid "An exception occurred: " +msgstr "出现异常:" -#: netbox/extras/models/change_logging.py:107 -msgid "object changes" -msgstr "变更的对象" +#: netbox/extras/jobs.py:71 +msgid "Database changes have been reverted due to error." +msgstr "由于出现错误,数据库更改已回滚。" -#: netbox/extras/models/change_logging.py:123 -#, python-brace-format -msgid "Change logging is not supported for this object type ({type})." -msgstr "此对象类型 ({type}) 不支持更改日志记录。" +#: netbox/extras/management/commands/reindex.py:66 +msgid "No indexers found!" +msgstr "找不到索引!" #: netbox/extras/models/configs.py:130 msgid "config context" @@ -7649,113 +7999,127 @@ msgstr "配置模版" msgid "config templates" msgstr "配置模版" -#: netbox/extras/models/customfields.py:74 +#: netbox/extras/models/customfields.py:75 msgid "The object(s) to which this field applies." msgstr "此字段所应用的对象。" -#: netbox/extras/models/customfields.py:81 +#: netbox/extras/models/customfields.py:82 msgid "The type of data this custom field holds" msgstr "该自定义字段保存的数据类型" -#: netbox/extras/models/customfields.py:88 +#: netbox/extras/models/customfields.py:89 msgid "The type of NetBox object this field maps to (for object fields)" msgstr "此字段映射到的NetBox对象的类型(对于对象字段)" -#: netbox/extras/models/customfields.py:94 +#: netbox/extras/models/customfields.py:95 msgid "Internal field name" msgstr "内部字段名称" -#: netbox/extras/models/customfields.py:98 +#: netbox/extras/models/customfields.py:99 msgid "Only alphanumeric characters and underscores are allowed." msgstr "仅允许输入英文字符、数字和下划线。" -#: netbox/extras/models/customfields.py:103 +#: netbox/extras/models/customfields.py:104 msgid "Double underscores are not permitted in custom field names." msgstr "自定义字段名称中不允许使用双下划线。" -#: netbox/extras/models/customfields.py:114 +#: netbox/extras/models/customfields.py:115 msgid "" "Name of the field as displayed to users (if not provided, 'the field's name " "will be used)" msgstr "向用户显示的字段名称(如果未提供,则使用字段名称)" -#: netbox/extras/models/customfields.py:118 netbox/extras/models/models.py:345 +#: netbox/extras/models/customfields.py:119 netbox/extras/models/models.py:317 msgid "group name" msgstr "组名称" -#: netbox/extras/models/customfields.py:121 +#: netbox/extras/models/customfields.py:122 msgid "Custom fields within the same group will be displayed together" msgstr "同一组内的自定义字段将一起显示" -#: netbox/extras/models/customfields.py:129 +#: netbox/extras/models/customfields.py:130 msgid "required" msgstr "必须" -#: netbox/extras/models/customfields.py:131 +#: netbox/extras/models/customfields.py:132 msgid "" -"If true, this field is required when creating new objects or editing an " -"existing object." -msgstr "如果为true,则在创建新对象或编辑现有对象时需要此字段。" +"This field is required when creating new objects or editing an existing " +"object." +msgstr "创建新对象或编辑现有对象时,此字段是必填字段。" -#: netbox/extras/models/customfields.py:134 +#: netbox/extras/models/customfields.py:135 +msgid "must be unique" +msgstr "必须是唯一的" + +#: netbox/extras/models/customfields.py:137 +msgid "The value of this field must be unique for the assigned object" +msgstr "对于分配的对象,该字段的值必须是唯一的" + +#: netbox/extras/models/customfields.py:140 msgid "search weight" msgstr "搜索权重" -#: netbox/extras/models/customfields.py:137 +#: netbox/extras/models/customfields.py:143 msgid "" "Weighting for search. Lower values are considered more important. Fields " "with a search weight of zero will be ignored." msgstr "搜索权重。值越低越被有限搜索。权重为零的字段将被忽略搜索。" -#: netbox/extras/models/customfields.py:142 +#: netbox/extras/models/customfields.py:148 msgid "filter logic" msgstr "过滤器规则" -#: netbox/extras/models/customfields.py:146 +#: netbox/extras/models/customfields.py:152 msgid "" "Loose matches any instance of a given string; exact matches the entire " "field." msgstr "松散匹配是匹配字段中的任意位置;严格匹配是与整个字段完全匹配。" -#: netbox/extras/models/customfields.py:149 +#: netbox/extras/models/customfields.py:155 msgid "default" msgstr "默认" -#: netbox/extras/models/customfields.py:153 +#: netbox/extras/models/customfields.py:159 msgid "" "Default value for the field (must be a JSON value). Encapsulate strings with" " double quotes (e.g. \"Foo\")." msgstr "字段的默认值(必须是JSON值)。字符串要包含在双引号中(例如“Foo”)。" -#: netbox/extras/models/customfields.py:158 +#: netbox/extras/models/customfields.py:166 +msgid "" +"Filter the object selection choices using a query_params dict (must be a " +"JSON value).Encapsulate strings with double quotes (e.g. \"Foo\")." +msgstr "使用 query_params 字典(必须是 JSON 值)筛选对象选择选项。用双引号(例如 “Foo”)封装字符串。" + +#: netbox/extras/models/customfields.py:172 msgid "display weight" msgstr "显示权重" -#: netbox/extras/models/customfields.py:159 +#: netbox/extras/models/customfields.py:173 msgid "Fields with higher weights appear lower in a form." msgstr "权重约高的字段在页面中显示得位置越低。" -#: netbox/extras/models/customfields.py:164 +#: netbox/extras/models/customfields.py:178 msgid "minimum value" msgstr "最小值" -#: netbox/extras/models/customfields.py:165 +#: netbox/extras/models/customfields.py:179 msgid "Minimum allowed value (for numeric fields)" msgstr "允许的最小值(对于数字字段)" -#: netbox/extras/models/customfields.py:170 +#: netbox/extras/models/customfields.py:184 msgid "maximum value" msgstr "最大值" -#: netbox/extras/models/customfields.py:171 +#: netbox/extras/models/customfields.py:185 msgid "Maximum allowed value (for numeric fields)" msgstr "允许的最大值(对于数字字段)" -#: netbox/extras/models/customfields.py:177 +#: netbox/extras/models/customfields.py:191 msgid "validation regex" msgstr "验证正则表达式" -#: netbox/extras/models/customfields.py:179 +#: netbox/extras/models/customfields.py:193 #, python-brace-format msgid "" "Regular expression to enforce on text field values. Use ^ and $ to force " @@ -7765,275 +8129,245 @@ msgstr "" "要在文本字段值上强制执行的正则表达式。使用^和$可以强制匹配整个字符串。例如, " "^[A-Z]{3}$将限制值只能有三个大写字母。" -#: netbox/extras/models/customfields.py:187 +#: netbox/extras/models/customfields.py:201 msgid "choice set" msgstr "可选项" -#: netbox/extras/models/customfields.py:196 +#: netbox/extras/models/customfields.py:210 msgid "Specifies whether the custom field is displayed in the UI" msgstr "是否在UI中显示此字段" -#: netbox/extras/models/customfields.py:203 +#: netbox/extras/models/customfields.py:217 msgid "Specifies whether the custom field value can be edited in the UI" msgstr "是否在UI中可编辑此字段" -#: netbox/extras/models/customfields.py:207 +#: netbox/extras/models/customfields.py:221 msgid "is cloneable" msgstr "可复制" -#: netbox/extras/models/customfields.py:208 +#: netbox/extras/models/customfields.py:222 msgid "Replicate this value when cloning objects" msgstr "复制对象时同时复制此值" -#: netbox/extras/models/customfields.py:225 +#: netbox/extras/models/customfields.py:239 msgid "custom field" msgstr "自定义字段" -#: netbox/extras/models/customfields.py:226 +#: netbox/extras/models/customfields.py:240 msgid "custom fields" msgstr "自定义字段" -#: netbox/extras/models/customfields.py:315 +#: netbox/extras/models/customfields.py:329 #, python-brace-format msgid "Invalid default value \"{value}\": {error}" msgstr "无效的默认值:“{value}”:{error}" -#: netbox/extras/models/customfields.py:322 +#: netbox/extras/models/customfields.py:336 msgid "A minimum value may be set only for numeric fields" msgstr "只能为数字字段设置最小值" -#: netbox/extras/models/customfields.py:324 +#: netbox/extras/models/customfields.py:338 msgid "A maximum value may be set only for numeric fields" msgstr "只能为数字字段设置最大值" -#: netbox/extras/models/customfields.py:334 +#: netbox/extras/models/customfields.py:348 msgid "" "Regular expression validation is supported only for text and URL fields" msgstr "仅对文本和URL字段支持正则表达式验证" -#: netbox/extras/models/customfields.py:344 +#: netbox/extras/models/customfields.py:354 +msgid "Uniqueness cannot be enforced for boolean fields" +msgstr "无法强制布尔字段的唯一性" + +#: netbox/extras/models/customfields.py:364 msgid "Selection fields must specify a set of choices." msgstr "选择字段必须指定一组可用选项。" -#: netbox/extras/models/customfields.py:348 +#: netbox/extras/models/customfields.py:368 msgid "Choices may be set only on selection fields." msgstr "只能在选择字段上设置选项。" -#: netbox/extras/models/customfields.py:355 +#: netbox/extras/models/customfields.py:375 msgid "Object fields must define an object type." msgstr "对象字段必须定义对象类型。" -#: netbox/extras/models/customfields.py:359 +#: netbox/extras/models/customfields.py:379 #, python-brace-format msgid "{type} fields may not define an object type." msgstr "{type}字段不能定义对象类型。" -#: netbox/extras/models/customfields.py:438 +#: netbox/extras/models/customfields.py:386 +msgid "A related object filter can be defined only for object fields." +msgstr "只能为对象字段定义相关对象过滤器。" + +#: netbox/extras/models/customfields.py:390 +msgid "Filter must be defined as a dictionary mapping attributes to values." +msgstr "过滤器必须定义为将属性映射到值的字典。" + +#: netbox/extras/models/customfields.py:469 msgid "True" msgstr "是" -#: netbox/extras/models/customfields.py:439 +#: netbox/extras/models/customfields.py:470 msgid "False" msgstr "否" -#: netbox/extras/models/customfields.py:521 +#: netbox/extras/models/customfields.py:560 #, python-brace-format msgid "Values must match this regex: {regex}" msgstr "值必须与此正则表达式匹配: {regex}" -#: netbox/extras/models/customfields.py:615 +#: netbox/extras/models/customfields.py:654 msgid "Value must be a string." msgstr "值必须为字符串" -#: netbox/extras/models/customfields.py:617 +#: netbox/extras/models/customfields.py:656 #, python-brace-format msgid "Value must match regex '{regex}'" msgstr "值必须与正则表达式'{regex}'匹配" -#: netbox/extras/models/customfields.py:622 +#: netbox/extras/models/customfields.py:661 msgid "Value must be an integer." msgstr "值必须是整数。" -#: netbox/extras/models/customfields.py:625 -#: netbox/extras/models/customfields.py:640 +#: netbox/extras/models/customfields.py:664 +#: netbox/extras/models/customfields.py:679 #, python-brace-format msgid "Value must be at least {minimum}" msgstr "值最少为{minimum}" -#: netbox/extras/models/customfields.py:629 -#: netbox/extras/models/customfields.py:644 +#: netbox/extras/models/customfields.py:668 +#: netbox/extras/models/customfields.py:683 #, python-brace-format msgid "Value must not exceed {maximum}" msgstr "值最大为{maximum}" -#: netbox/extras/models/customfields.py:637 +#: netbox/extras/models/customfields.py:676 msgid "Value must be a decimal." msgstr "值必须是十进制。" -#: netbox/extras/models/customfields.py:649 +#: netbox/extras/models/customfields.py:688 msgid "Value must be true or false." msgstr "值必须为true或false。" -#: netbox/extras/models/customfields.py:657 +#: netbox/extras/models/customfields.py:696 msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." msgstr "日期格式必须为 ISO 8601 格式(YYYY-MM-DD)." -#: netbox/extras/models/customfields.py:670 +#: netbox/extras/models/customfields.py:705 msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." msgstr "日期和时间必须遵循 ISO 8601 格式 (YYYY-MM-DD HH:MM:SS)." -#: netbox/extras/models/customfields.py:677 +#: netbox/extras/models/customfields.py:712 #, python-brace-format msgid "Invalid choice ({value}) for choice set {choiceset}." msgstr "选项集{choiceset}的选项({value})无效。" -#: netbox/extras/models/customfields.py:687 +#: netbox/extras/models/customfields.py:722 #, python-brace-format msgid "Invalid choice(s) ({value}) for choice set {choiceset}." msgstr "选项集{choiceset}的选项({value})无效。" -#: netbox/extras/models/customfields.py:696 +#: netbox/extras/models/customfields.py:731 #, python-brace-format msgid "Value must be an object ID, not {type}" msgstr "值必须为对象ID, 不是 {type}" -#: netbox/extras/models/customfields.py:702 +#: netbox/extras/models/customfields.py:737 #, python-brace-format msgid "Value must be a list of object IDs, not {type}" msgstr "值必须为对象ID的列表,不是 {type}" -#: netbox/extras/models/customfields.py:706 +#: netbox/extras/models/customfields.py:741 #, python-brace-format msgid "Found invalid object ID: {id}" msgstr "发现错误的对象ID: {id}" -#: netbox/extras/models/customfields.py:709 +#: netbox/extras/models/customfields.py:744 msgid "Required field cannot be empty." msgstr "必填字段不能为空。" -#: netbox/extras/models/customfields.py:728 +#: netbox/extras/models/customfields.py:763 msgid "Base set of predefined choices (optional)" msgstr "预定义选项的基本集合(可选)" -#: netbox/extras/models/customfields.py:740 +#: netbox/extras/models/customfields.py:775 msgid "Choices are automatically ordered alphabetically" msgstr "选项会自动按字母顺序排列" -#: netbox/extras/models/customfields.py:747 +#: netbox/extras/models/customfields.py:782 msgid "custom field choice set" msgstr "自定义字段选择集" -#: netbox/extras/models/customfields.py:748 +#: netbox/extras/models/customfields.py:783 msgid "custom field choice sets" msgstr "自定义字段选择集" -#: netbox/extras/models/customfields.py:784 +#: netbox/extras/models/customfields.py:819 msgid "Must define base or extra choices." msgstr "必须定义基本选项或额外选项。" -#: netbox/extras/models/dashboard.py:19 +#: netbox/extras/models/dashboard.py:18 msgid "layout" msgstr "布局" -#: netbox/extras/models/dashboard.py:23 +#: netbox/extras/models/dashboard.py:22 msgid "config" msgstr "配置" -#: netbox/extras/models/dashboard.py:28 +#: netbox/extras/models/dashboard.py:27 msgid "dashboard" msgstr "仪表盘" -#: netbox/extras/models/dashboard.py:29 +#: netbox/extras/models/dashboard.py:28 msgid "dashboards" msgstr "仪表盘" -#: netbox/extras/models/models.py:51 +#: netbox/extras/models/models.py:52 msgid "object types" msgstr "对象类型" -#: netbox/extras/models/models.py:52 +#: netbox/extras/models/models.py:53 msgid "The object(s) to which this rule applies." msgstr "应用此规则的对象。" -#: netbox/extras/models/models.py:65 -msgid "on create" -msgstr "创建时" - #: netbox/extras/models/models.py:67 -msgid "Triggers when a matching object is created." -msgstr "创建匹配对象时触发。" - -#: netbox/extras/models/models.py:70 -msgid "on update" -msgstr "更新时" - -#: netbox/extras/models/models.py:72 -msgid "Triggers when a matching object is updated." -msgstr "当匹配的对象更新时触发。" - -#: netbox/extras/models/models.py:75 -msgid "on delete" -msgstr "删除时" - -#: netbox/extras/models/models.py:77 -msgid "Triggers when a matching object is deleted." -msgstr "删除匹配对象时触发。" - -#: netbox/extras/models/models.py:80 -msgid "on job start" -msgstr "任务开始时" - -#: netbox/extras/models/models.py:82 -msgid "Triggers when a job for a matching object is started." -msgstr "当匹配对象的任务启动时触发。" - -#: netbox/extras/models/models.py:85 -msgid "on job end" -msgstr "任务结束时" - -#: netbox/extras/models/models.py:87 -msgid "Triggers when a job for a matching object terminates." -msgstr "当匹配对象的任务结束时触发。" +msgid "The types of event which will trigger this rule." +msgstr "将触发此规则的事件类型。" -#: netbox/extras/models/models.py:94 +#: netbox/extras/models/models.py:74 msgid "conditions" msgstr "限制条件" -#: netbox/extras/models/models.py:97 +#: netbox/extras/models/models.py:77 msgid "" "A set of conditions which determine whether the event will be generated." msgstr "一组条件,用于确定是否会生成事件。" -#: netbox/extras/models/models.py:105 +#: netbox/extras/models/models.py:85 msgid "action type" msgstr "动作类型" -#: netbox/extras/models/models.py:124 +#: netbox/extras/models/models.py:104 msgid "Additional data to pass to the action object" msgstr "要传递给动作对象的其他数据" -#: netbox/extras/models/models.py:136 +#: netbox/extras/models/models.py:116 msgid "event rule" msgstr "事件规则" -#: netbox/extras/models/models.py:137 +#: netbox/extras/models/models.py:117 msgid "event rules" msgstr "事件规则" -#: netbox/extras/models/models.py:153 -msgid "" -"At least one event type must be selected: create, update, delete, job start," -" and/or job end." -msgstr "必须至少选择一种事件类型:创建、更新、删除、任务开始和/或任务结束。" - -#: netbox/extras/models/models.py:194 +#: netbox/extras/models/models.py:166 msgid "" "This URL will be called using the HTTP method defined when the webhook is " "called. Jinja2 template processing is supported with the same context as the" " request body." msgstr "此URL将使用调用webhook时定义的HTTP方法进行调用。Jinja2模板处理支持与请求主体相同的描述。" -#: netbox/extras/models/models.py:209 +#: netbox/extras/models/models.py:181 msgid "" "The complete list of official content types is available 点击这里." -#: netbox/extras/models/models.py:214 +#: netbox/extras/models/models.py:186 msgid "additional headers" msgstr "附加标头" -#: netbox/extras/models/models.py:217 +#: netbox/extras/models/models.py:189 msgid "" "User-supplied HTTP headers to be sent with the request in addition to the " "HTTP content type. Headers should be defined in the format Name: " @@ -8056,11 +8390,11 @@ msgstr "" "除了HTTP内容类型之外,还要与请求一起发送用户提供的HTTP标头。标头的定义格式应为 名称: 值. " "Jinja2模板处理支持与请求主体相同的实例(如下)。" -#: netbox/extras/models/models.py:223 +#: netbox/extras/models/models.py:195 msgid "body template" msgstr "内容模版" -#: netbox/extras/models/models.py:226 +#: netbox/extras/models/models.py:198 msgid "" "Jinja2 template for a custom request body. If blank, a JSON object " "representing the change will be included. Available context data includes: " @@ -8071,11 +8405,11 @@ msgstr "" "模块, 时间戳, 用户名, 请求id, 和 " "数据." -#: netbox/extras/models/models.py:232 +#: netbox/extras/models/models.py:204 msgid "secret" msgstr "秘钥" -#: netbox/extras/models/models.py:236 +#: netbox/extras/models/models.py:208 msgid "" "When provided, the request will include a X-Hook-Signature " "header containing a HMAC hex digest of the payload body using the secret as " @@ -8084,186 +8418,233 @@ msgstr "" "当提供时,请求将包括一个X-Hook-Signature " "该标头包含使用机密作为密钥的有效载荷主体的HMAC十六进制摘要。秘钥不会在请求中传输。" -#: netbox/extras/models/models.py:243 +#: netbox/extras/models/models.py:215 msgid "Enable SSL certificate verification. Disable with caution!" msgstr "启用 SSL 证书验证。请谨慎禁用!" -#: netbox/extras/models/models.py:249 netbox/templates/extras/webhook.html:51 +#: netbox/extras/models/models.py:221 netbox/templates/extras/webhook.html:51 msgid "CA File Path" msgstr "CA证书文件路径" -#: netbox/extras/models/models.py:251 +#: netbox/extras/models/models.py:223 msgid "" "The specific CA certificate file to use for SSL verification. Leave blank to" " use the system defaults." msgstr "用于SSL验证的CA证书文件。空为使用系统默认值。" -#: netbox/extras/models/models.py:262 +#: netbox/extras/models/models.py:234 msgid "webhook" msgstr "webhook" -#: netbox/extras/models/models.py:263 +#: netbox/extras/models/models.py:235 msgid "webhooks" msgstr "webhooks" -#: netbox/extras/models/models.py:281 +#: netbox/extras/models/models.py:253 msgid "Do not specify a CA certificate file if SSL verification is disabled." msgstr "如果禁用了SSL验证,请不要指定CA证书文件。" -#: netbox/extras/models/models.py:321 +#: netbox/extras/models/models.py:293 msgid "The object type(s) to which this link applies." msgstr "此链接所应用的对象类型。" -#: netbox/extras/models/models.py:333 +#: netbox/extras/models/models.py:305 msgid "link text" msgstr "链接文本" -#: netbox/extras/models/models.py:334 +#: netbox/extras/models/models.py:306 msgid "Jinja2 template code for link text" msgstr "链接文本的Jinja2模板代码" -#: netbox/extras/models/models.py:337 +#: netbox/extras/models/models.py:309 msgid "link URL" msgstr "链接URL" -#: netbox/extras/models/models.py:338 +#: netbox/extras/models/models.py:310 msgid "Jinja2 template code for link URL" msgstr "链接URL的Jinja2模板代码" -#: netbox/extras/models/models.py:348 +#: netbox/extras/models/models.py:320 msgid "Links with the same group will appear as a dropdown menu" msgstr "同一类的链接将显示为下拉菜单" -#: netbox/extras/models/models.py:358 +#: netbox/extras/models/models.py:330 msgid "new window" msgstr "新窗口" -#: netbox/extras/models/models.py:360 +#: netbox/extras/models/models.py:332 msgid "Force link to open in a new window" msgstr "强制链接在新窗口中打开" -#: netbox/extras/models/models.py:369 +#: netbox/extras/models/models.py:341 msgid "custom link" msgstr "自定义链接" -#: netbox/extras/models/models.py:370 +#: netbox/extras/models/models.py:342 msgid "custom links" msgstr "自定义链接" -#: netbox/extras/models/models.py:417 +#: netbox/extras/models/models.py:389 msgid "The object type(s) to which this template applies." msgstr "应用此模板的对象类型。" -#: netbox/extras/models/models.py:430 +#: netbox/extras/models/models.py:402 msgid "" "Jinja2 template code. The list of objects being exported is passed as a " "context variable named queryset." msgstr "Jinja2模板代码。要导出的对象列表作为queryset的实例变量传递." -#: netbox/extras/models/models.py:438 +#: netbox/extras/models/models.py:410 msgid "Defaults to text/plain; charset=utf-8" msgstr "默认为text/plain; charset=utf-8" -#: netbox/extras/models/models.py:441 +#: netbox/extras/models/models.py:413 msgid "file extension" msgstr "文件扩展名" -#: netbox/extras/models/models.py:444 +#: netbox/extras/models/models.py:416 msgid "Extension to append to the rendered filename" msgstr "附加到文件名的扩展名" -#: netbox/extras/models/models.py:447 +#: netbox/extras/models/models.py:419 msgid "as attachment" msgstr "作为附件" -#: netbox/extras/models/models.py:449 +#: netbox/extras/models/models.py:421 msgid "Download file as attachment" msgstr "将文件作为附件下载" -#: netbox/extras/models/models.py:458 +#: netbox/extras/models/models.py:430 msgid "export template" msgstr "导出模版" -#: netbox/extras/models/models.py:459 +#: netbox/extras/models/models.py:431 msgid "export templates" msgstr "导出模版" -#: netbox/extras/models/models.py:476 +#: netbox/extras/models/models.py:448 #, python-brace-format msgid "\"{name}\" is a reserved name. Please choose a different name." msgstr "\"{name}\"是保留名称。请选择其他名称。" -#: netbox/extras/models/models.py:526 +#: netbox/extras/models/models.py:498 msgid "The object type(s) to which this filter applies." msgstr "应用此筛选器的对象类型。" -#: netbox/extras/models/models.py:558 +#: netbox/extras/models/models.py:530 msgid "shared" msgstr "共享性" -#: netbox/extras/models/models.py:571 +#: netbox/extras/models/models.py:543 msgid "saved filter" msgstr "已保存的过滤器" -#: netbox/extras/models/models.py:572 +#: netbox/extras/models/models.py:544 msgid "saved filters" msgstr "已保存的过滤器" -#: netbox/extras/models/models.py:590 +#: netbox/extras/models/models.py:562 msgid "Filter parameters must be stored as a dictionary of keyword arguments." msgstr "筛选器参数必须存储为关键字参数的字典。" -#: netbox/extras/models/models.py:618 +#: netbox/extras/models/models.py:590 msgid "image height" msgstr "图片高度" -#: netbox/extras/models/models.py:621 +#: netbox/extras/models/models.py:593 msgid "image width" msgstr "图片宽度" -#: netbox/extras/models/models.py:638 +#: netbox/extras/models/models.py:610 msgid "image attachment" msgstr "图片附件" -#: netbox/extras/models/models.py:639 +#: netbox/extras/models/models.py:611 msgid "image attachments" msgstr "图片附件" -#: netbox/extras/models/models.py:653 +#: netbox/extras/models/models.py:625 #, python-brace-format msgid "Image attachments cannot be assigned to this object type ({type})." msgstr "无法将图片附件分配给此对象类型({type})." -#: netbox/extras/models/models.py:716 +#: netbox/extras/models/models.py:688 msgid "kind" msgstr "类型" -#: netbox/extras/models/models.py:730 +#: netbox/extras/models/models.py:702 msgid "journal entry" msgstr "日志条目" -#: netbox/extras/models/models.py:731 +#: netbox/extras/models/models.py:703 msgid "journal entries" msgstr "日志条目" -#: netbox/extras/models/models.py:746 +#: netbox/extras/models/models.py:718 #, python-brace-format msgid "Journaling is not supported for this object type ({type})." msgstr "此对象类型({type})不支持备忘。" -#: netbox/extras/models/models.py:788 +#: netbox/extras/models/models.py:760 msgid "bookmark" msgstr "书签" -#: netbox/extras/models/models.py:789 +#: netbox/extras/models/models.py:761 msgid "bookmarks" msgstr "书签" -#: netbox/extras/models/models.py:802 +#: netbox/extras/models/models.py:774 #, python-brace-format msgid "Bookmarks cannot be assigned to this object type ({type})." msgstr "无法将书签分配给此对象类型({type})。" +#: netbox/extras/models/notifications.py:43 +msgid "read" +msgstr "读" + +#: netbox/extras/models/notifications.py:66 +msgid "event" +msgstr "事件" + +#: netbox/extras/models/notifications.py:84 +msgid "notification" +msgstr "通知" + +#: netbox/extras/models/notifications.py:85 +msgid "notifications" +msgstr "通知" + +#: netbox/extras/models/notifications.py:99 +#: netbox/extras/models/notifications.py:234 +#, python-brace-format +msgid "Objects of this type ({type}) do not support notifications." +msgstr "这种类型的对象 ({type}) 不支持通知。" + +#: netbox/extras/models/notifications.py:137 netbox/users/models/users.py:58 +#: netbox/users/models/users.py:77 +msgid "groups" +msgstr "组" + +#: netbox/extras/models/notifications.py:143 netbox/users/models/users.py:93 +msgid "users" +msgstr "用户" + +#: netbox/extras/models/notifications.py:152 +msgid "notification group" +msgstr "通知组" + +#: netbox/extras/models/notifications.py:153 +msgid "notification groups" +msgstr "通知组" + +#: netbox/extras/models/notifications.py:217 +msgid "subscription" +msgstr "订阅" + +#: netbox/extras/models/notifications.py:218 +msgid "subscriptions" +msgstr "订阅" + #: netbox/extras/models/scripts.py:42 msgid "is executable" msgstr "是可执行的" @@ -8304,19 +8685,19 @@ msgstr "缓存的值" msgid "cached values" msgstr "缓存的值" -#: netbox/extras/models/staging.py:45 +#: netbox/extras/models/staging.py:44 msgid "branch" msgstr "分支" -#: netbox/extras/models/staging.py:46 +#: netbox/extras/models/staging.py:45 msgid "branches" msgstr "分支" -#: netbox/extras/models/staging.py:98 +#: netbox/extras/models/staging.py:97 msgid "staged change" msgstr "暂存变更" -#: netbox/extras/models/staging.py:99 +#: netbox/extras/models/staging.py:98 msgid "staged changes" msgstr "暂存变更" @@ -8340,85 +8721,87 @@ msgstr "标记的项目" msgid "tagged items" msgstr "标记的项目" -#: netbox/extras/scripts.py:439 +#: netbox/extras/scripts.py:429 msgid "Script Data" msgstr "脚本数据" -#: netbox/extras/scripts.py:443 +#: netbox/extras/scripts.py:433 msgid "Script Execution Parameters" msgstr "脚本执行参数" -#: netbox/extras/scripts.py:666 -msgid "Database changes have been reverted automatically." -msgstr "数据库更改已自动恢复。" - -#: netbox/extras/scripts.py:679 -msgid "Script aborted with error: " -msgstr "脚本因错误而中止:" - -#: netbox/extras/scripts.py:689 -msgid "An exception occurred: " -msgstr "出现异常:" - -#: netbox/extras/scripts.py:692 -msgid "Database changes have been reverted due to error." -msgstr "由于出现错误,数据库更改已回滚。" - -#: netbox/extras/signals.py:133 -#, python-brace-format -msgid "Deletion is prevented by a protection rule: {message}" -msgstr "保护规则阻止删除: {message}" +#: netbox/extras/tables/columns.py:12 +#: netbox/templates/htmx/notifications.html:18 +msgid "Dismiss" +msgstr "解雇" -#: netbox/extras/tables/tables.py:47 netbox/extras/tables/tables.py:128 -#: netbox/extras/tables/tables.py:153 netbox/extras/tables/tables.py:219 -#: netbox/extras/tables/tables.py:245 netbox/extras/tables/tables.py:297 -#: netbox/extras/tables/tables.py:343 -#: netbox/templates/extras/customfield.html:93 +#: netbox/extras/tables/tables.py:62 netbox/extras/tables/tables.py:159 +#: netbox/extras/tables/tables.py:184 netbox/extras/tables/tables.py:250 +#: netbox/extras/tables/tables.py:276 netbox/extras/tables/tables.py:412 +#: netbox/extras/tables/tables.py:446 +#: netbox/templates/extras/customfield.html:105 #: netbox/templates/extras/eventrule.html:27 #: netbox/templates/users/objectpermission.html:64 netbox/users/tables.py:80 msgid "Object Types" msgstr "对象类型" -#: netbox/extras/tables/tables.py:54 +#: netbox/extras/tables/tables.py:69 +msgid "Validate Uniqueness" +msgstr "验证唯一性" + +#: netbox/extras/tables/tables.py:73 msgid "Visible" msgstr "可见" -#: netbox/extras/tables/tables.py:57 +#: netbox/extras/tables/tables.py:76 msgid "Editable" msgstr "可编辑" -#: netbox/extras/tables/tables.py:63 +#: netbox/extras/tables/tables.py:82 msgid "Related Object Type" msgstr "相关对象类型" -#: netbox/extras/tables/tables.py:67 -#: netbox/templates/extras/customfield.html:47 +#: netbox/extras/tables/tables.py:86 +#: netbox/templates/extras/customfield.html:51 msgid "Choice Set" msgstr "选项集" -#: netbox/extras/tables/tables.py:75 +#: netbox/extras/tables/tables.py:94 msgid "Is Cloneable" msgstr "可复制" -#: netbox/extras/tables/tables.py:106 +#: netbox/extras/tables/tables.py:98 +#: netbox/templates/extras/customfield.html:118 +msgid "Minimum Value" +msgstr "最小值" + +#: netbox/extras/tables/tables.py:101 +#: netbox/templates/extras/customfield.html:122 +msgid "Maximum Value" +msgstr "最大值" + +#: netbox/extras/tables/tables.py:104 +msgid "Validation Regex" +msgstr "验证正则表达式" + +#: netbox/extras/tables/tables.py:137 msgid "Count" msgstr "计数" -#: netbox/extras/tables/tables.py:109 +#: netbox/extras/tables/tables.py:140 msgid "Order Alphabetically" msgstr "按字母顺序排列" -#: netbox/extras/tables/tables.py:134 +#: netbox/extras/tables/tables.py:165 #: netbox/templates/extras/customlink.html:33 msgid "New Window" msgstr "新窗口" -#: netbox/extras/tables/tables.py:156 +#: netbox/extras/tables/tables.py:187 msgid "As Attachment" msgstr "作为附件" -#: netbox/extras/tables/tables.py:164 netbox/extras/tables/tables.py:384 -#: netbox/extras/tables/tables.py:419 netbox/templates/core/datafile.html:24 +#: netbox/extras/tables/tables.py:195 netbox/extras/tables/tables.py:487 +#: netbox/extras/tables/tables.py:522 netbox/templates/core/datafile.html:24 #: netbox/templates/dcim/device/render_config.html:22 #: netbox/templates/extras/configcontext.html:39 #: netbox/templates/extras/configtemplate.html:31 @@ -8428,63 +8811,54 @@ msgstr "作为附件" msgid "Data File" msgstr "数据文件" -#: netbox/extras/tables/tables.py:169 netbox/extras/tables/tables.py:396 -#: netbox/extras/tables/tables.py:424 +#: netbox/extras/tables/tables.py:200 netbox/extras/tables/tables.py:499 +#: netbox/extras/tables/tables.py:527 msgid "Synced" msgstr "同步" -#: netbox/extras/tables/tables.py:196 +#: netbox/extras/tables/tables.py:227 msgid "Image" msgstr "图片" -#: netbox/extras/tables/tables.py:201 +#: netbox/extras/tables/tables.py:232 msgid "Size (Bytes)" msgstr "大小 (Bytes)" -#: netbox/extras/tables/tables.py:267 +#: netbox/extras/tables/tables.py:339 +msgid "Read" +msgstr "阅读" + +#: netbox/extras/tables/tables.py:382 msgid "SSL Validation" msgstr "SSL验证" -#: netbox/extras/tables/tables.py:312 -msgid "Job Start" -msgstr "开始工作" - -#: netbox/extras/tables/tables.py:315 -msgid "Job End" -msgstr "结束工作" +#: netbox/extras/tables/tables.py:418 +#: netbox/templates/extras/eventrule.html:37 +msgid "Event Types" +msgstr "事件类型" -#: netbox/extras/tables/tables.py:432 netbox/netbox/navigation/menu.py:64 +#: netbox/extras/tables/tables.py:535 netbox/netbox/navigation/menu.py:77 #: netbox/templates/dcim/devicerole.html:8 msgid "Device Roles" msgstr "设备角色" -#: netbox/extras/tables/tables.py:473 netbox/templates/account/profile.html:19 -#: netbox/templates/users/user.html:21 -msgid "Full Name" -msgstr "全名" - -#: netbox/extras/tables/tables.py:490 -#: netbox/templates/extras/objectchange.html:68 -msgid "Request ID" -msgstr "请求ID" - -#: netbox/extras/tables/tables.py:527 +#: netbox/extras/tables/tables.py:587 msgid "Comments (Short)" msgstr "评论(简短)" -#: netbox/extras/tables/tables.py:546 netbox/extras/tables/tables.py:580 +#: netbox/extras/tables/tables.py:606 netbox/extras/tables/tables.py:640 msgid "Line" msgstr "线" -#: netbox/extras/tables/tables.py:553 netbox/extras/tables/tables.py:590 +#: netbox/extras/tables/tables.py:613 netbox/extras/tables/tables.py:650 msgid "Level" msgstr "等级" -#: netbox/extras/tables/tables.py:559 netbox/extras/tables/tables.py:599 +#: netbox/extras/tables/tables.py:619 netbox/extras/tables/tables.py:659 msgid "Message" msgstr "信息" -#: netbox/extras/tables/tables.py:583 +#: netbox/extras/tables/tables.py:643 msgid "Method" msgstr "方法" @@ -8515,37 +8889,37 @@ msgstr "验证规则必须以字典形式传递" msgid "Custom validation failed for {attribute}: {exception}" msgstr "{attribute} 的自定义验证失败:{exception}" -#: netbox/extras/validators.py:140 +#: netbox/extras/validators.py:134 #, python-brace-format msgid "Invalid attribute \"{name}\" for request" msgstr "请求的属性“{name}”无效" -#: netbox/extras/validators.py:157 +#: netbox/extras/validators.py:151 #, python-brace-format msgid "Invalid attribute \"{name}\" for {model}" msgstr "{model}的属性 \"{name}\"无效" -#: netbox/extras/views.py:889 +#: netbox/extras/views.py:961 msgid "Your dashboard has been reset." msgstr "仪表盘已重置。" -#: netbox/extras/views.py:935 +#: netbox/extras/views.py:1007 msgid "Added widget: " msgstr "添加小组件:" -#: netbox/extras/views.py:976 +#: netbox/extras/views.py:1048 msgid "Updated widget: " msgstr "更新小组件:" -#: netbox/extras/views.py:1012 +#: netbox/extras/views.py:1084 msgid "Deleted widget: " msgstr "删除小组件:" -#: netbox/extras/views.py:1014 +#: netbox/extras/views.py:1086 msgid "Error deleting widget: " msgstr "删除小组件错误:" -#: netbox/extras/views.py:1101 +#: netbox/extras/views.py:1173 msgid "Unable to run script: RQ worker process not running." msgstr "无法运行脚本:RQ worker 进程未运行。" @@ -8588,10 +8962,6 @@ msgstr "SLAAC" msgid "Loopback" msgstr "Loopback" -#: netbox/ipam/choices.py:90 netbox/tenancy/choices.py:18 -msgid "Secondary" -msgstr "次要联系人" - #: netbox/ipam/choices.py:91 msgid "Anycast" msgstr "Anycast" @@ -8617,19 +8987,19 @@ msgstr "明文" msgid "Invalid IP address format: {address}" msgstr "IP 地址格式无效: {address}" -#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:323 +#: netbox/ipam/filtersets.py:48 netbox/vpn/filtersets.py:315 msgid "Import target" msgstr "引入target" -#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:329 +#: netbox/ipam/filtersets.py:54 netbox/vpn/filtersets.py:321 msgid "Import target (name)" msgstr "引入target(名称)" -#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:334 +#: netbox/ipam/filtersets.py:59 netbox/vpn/filtersets.py:326 msgid "Export target" msgstr "输出target" -#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:340 +#: netbox/ipam/filtersets.py:65 netbox/vpn/filtersets.py:332 msgid "Export target (name)" msgstr "输出target(名称)" @@ -8694,16 +9064,16 @@ msgid "Prefixes which contain this prefix or IP" msgstr "包含此前缀或IP的前缀" #: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572 -#: netbox/ipam/forms/bulk_edit.py:341 netbox/ipam/forms/filtersets.py:196 +#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196 #: netbox/ipam/forms/filtersets.py:331 msgid "Mask length" msgstr "掩码长度" -#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:446 +#: netbox/ipam/filtersets.py:373 netbox/vpn/filtersets.py:438 msgid "VLAN (ID)" msgstr "VLAN (ID)" -#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:441 +#: netbox/ipam/filtersets.py:377 netbox/vpn/filtersets.py:433 msgid "VLAN number (1-4094)" msgstr "VLAN 号(1-4094)" @@ -8723,23 +9093,23 @@ msgid "Parent prefix" msgstr "上级前缀" #: netbox/ipam/filtersets.py:616 netbox/ipam/filtersets.py:856 -#: netbox/ipam/filtersets.py:1091 netbox/vpn/filtersets.py:404 +#: netbox/ipam/filtersets.py:1105 netbox/vpn/filtersets.py:396 msgid "Virtual machine (name)" msgstr "虚拟机(名称)" #: netbox/ipam/filtersets.py:621 netbox/ipam/filtersets.py:861 -#: netbox/ipam/filtersets.py:1085 netbox/virtualization/filtersets.py:278 -#: netbox/virtualization/filtersets.py:317 netbox/vpn/filtersets.py:409 +#: netbox/ipam/filtersets.py:1099 netbox/virtualization/filtersets.py:282 +#: netbox/virtualization/filtersets.py:321 netbox/vpn/filtersets.py:401 msgid "Virtual machine (ID)" msgstr "虚拟机(ID)" #: netbox/ipam/filtersets.py:627 netbox/vpn/filtersets.py:97 -#: netbox/vpn/filtersets.py:415 +#: netbox/vpn/filtersets.py:407 msgid "Interface (name)" msgstr "接口(名称)" #: netbox/ipam/filtersets.py:638 netbox/vpn/filtersets.py:108 -#: netbox/vpn/filtersets.py:426 +#: netbox/vpn/filtersets.py:418 msgid "VM interface (name)" msgstr "虚拟接口(名称)" @@ -8767,19 +9137,19 @@ msgstr "服务 (ID)" msgid "NAT inside IP address (ID)" msgstr "NAT 内部 IP 地址 (ID)" -#: netbox/ipam/filtersets.py:1096 +#: netbox/ipam/filtersets.py:1110 msgid "IP address (ID)" msgstr "IP 地址 (ID)" -#: netbox/ipam/filtersets.py:1102 netbox/ipam/models/ip.py:788 +#: netbox/ipam/filtersets.py:1116 netbox/ipam/models/ip.py:788 msgid "IP address" msgstr "IP 地址" -#: netbox/ipam/filtersets.py:1131 +#: netbox/ipam/filtersets.py:1141 msgid "Primary IPv4 (ID)" msgstr "首选 IPv4(ID)" -#: netbox/ipam/filtersets.py:1136 +#: netbox/ipam/filtersets.py:1146 msgid "Primary IPv6 (ID)" msgstr "首选IPv6(ID)" @@ -8812,17 +9182,17 @@ msgstr "需要 CIDR 掩码(例如/24)" msgid "Address pattern" msgstr "地址模式" -#: netbox/ipam/forms/bulk_edit.py:48 +#: netbox/ipam/forms/bulk_edit.py:49 msgid "Enforce unique space" msgstr "强制使用唯一空间" -#: netbox/ipam/forms/bulk_edit.py:86 +#: netbox/ipam/forms/bulk_edit.py:87 msgid "Is private" msgstr "私有的" -#: netbox/ipam/forms/bulk_edit.py:107 netbox/ipam/forms/bulk_edit.py:136 -#: netbox/ipam/forms/bulk_edit.py:161 netbox/ipam/forms/bulk_import.py:88 -#: netbox/ipam/forms/bulk_import.py:108 netbox/ipam/forms/bulk_import.py:128 +#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137 +#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89 +#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129 #: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125 #: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96 #: netbox/ipam/forms/model_forms.py:109 netbox/ipam/forms/model_forms.py:131 @@ -8835,20 +9205,20 @@ msgstr "私有的" msgid "RIR" msgstr "区域互联网注册管理机构" -#: netbox/ipam/forms/bulk_edit.py:169 +#: netbox/ipam/forms/bulk_edit.py:170 msgid "Date added" msgstr "添加日期" -#: netbox/ipam/forms/bulk_edit.py:227 netbox/ipam/forms/model_forms.py:583 -#: netbox/ipam/forms/model_forms.py:630 netbox/ipam/tables/ip.py:251 +#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586 +#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251 #: netbox/templates/ipam/vlan_edit.html:37 #: netbox/templates/ipam/vlangroup.html:27 msgid "VLAN Group" msgstr "VLAN组" -#: netbox/ipam/forms/bulk_edit.py:232 netbox/ipam/forms/bulk_import.py:184 +#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185 #: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218 -#: netbox/ipam/models/vlans.py:214 netbox/ipam/tables/ip.py:255 +#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255 #: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12 #: netbox/templates/ipam/vlan/base.html:6 #: netbox/templates/ipam/vlan_edit.html:10 @@ -8857,49 +9227,49 @@ msgstr "VLAN组" #: netbox/vpn/forms/model_forms.py:433 netbox/vpn/forms/model_forms.py:452 #: netbox/wireless/forms/bulk_edit.py:55 #: netbox/wireless/forms/bulk_import.py:48 -#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:101 +#: netbox/wireless/forms/model_forms.py:48 netbox/wireless/models.py:102 msgid "VLAN" msgstr "VLAN" -#: netbox/ipam/forms/bulk_edit.py:243 +#: netbox/ipam/forms/bulk_edit.py:244 msgid "Prefix length" msgstr "前缀长度" -#: netbox/ipam/forms/bulk_edit.py:266 netbox/ipam/forms/filtersets.py:241 +#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241 #: netbox/templates/ipam/prefix.html:85 msgid "Is a pool" msgstr "是一个池" -#: netbox/ipam/forms/bulk_edit.py:271 netbox/ipam/forms/bulk_edit.py:316 +#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317 #: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293 #: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539 msgid "Treat as fully utilized" msgstr "设置为已被全部占用" -#: netbox/ipam/forms/bulk_edit.py:285 netbox/ipam/forms/filtersets.py:171 +#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171 msgid "VLAN Assignment" msgstr "VLAN 分配" -#: netbox/ipam/forms/bulk_edit.py:364 netbox/ipam/models/ip.py:772 +#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772 msgid "DNS name" msgstr "DNS 名称" -#: netbox/ipam/forms/bulk_edit.py:385 netbox/ipam/forms/bulk_edit.py:586 -#: netbox/ipam/forms/bulk_import.py:393 netbox/ipam/forms/bulk_import.py:477 -#: netbox/ipam/forms/bulk_import.py:503 netbox/ipam/forms/filtersets.py:390 -#: netbox/ipam/forms/filtersets.py:537 netbox/templates/ipam/fhrpgroup.html:22 +#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579 +#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469 +#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390 +#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:24 #: netbox/templates/ipam/service.html:32 #: netbox/templates/ipam/servicetemplate.html:19 msgid "Protocol" msgstr "协议" -#: netbox/ipam/forms/bulk_edit.py:392 netbox/ipam/forms/filtersets.py:397 +#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397 #: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26 msgid "Group ID" msgstr "组 ID" -#: netbox/ipam/forms/bulk_edit.py:397 netbox/ipam/forms/filtersets.py:402 +#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402 #: netbox/wireless/forms/bulk_edit.py:68 #: netbox/wireless/forms/bulk_edit.py:115 #: netbox/wireless/forms/bulk_import.py:62 @@ -8911,153 +9281,139 @@ msgstr "组 ID" msgid "Authentication type" msgstr "认证类型" -#: netbox/ipam/forms/bulk_edit.py:402 netbox/ipam/forms/filtersets.py:406 +#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406 msgid "Authentication key" msgstr "认证秘钥" -#: netbox/ipam/forms/bulk_edit.py:419 netbox/ipam/forms/filtersets.py:383 -#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:370 +#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383 +#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386 #: netbox/templates/ipam/fhrpgroup.html:49 #: netbox/templates/wireless/inc/authentication_attrs.html:5 #: netbox/wireless/forms/bulk_edit.py:91 -#: netbox/wireless/forms/bulk_edit.py:138 +#: netbox/wireless/forms/bulk_edit.py:149 #: netbox/wireless/forms/filtersets.py:36 #: netbox/wireless/forms/filtersets.py:76 #: netbox/wireless/forms/model_forms.py:55 -#: netbox/wireless/forms/model_forms.py:164 +#: netbox/wireless/forms/model_forms.py:171 msgid "Authentication" msgstr "身份验证" -#: netbox/ipam/forms/bulk_edit.py:429 -msgid "Minimum child VLAN VID" -msgstr "最小的子VLAN ID" - -#: netbox/ipam/forms/bulk_edit.py:435 -msgid "Maximum child VLAN VID" -msgstr "最大的子VLAN ID" - -#: netbox/ipam/forms/bulk_edit.py:443 netbox/ipam/forms/model_forms.py:572 +#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575 msgid "Scope type" msgstr "作用域类型" -#: netbox/ipam/forms/bulk_edit.py:505 netbox/ipam/forms/model_forms.py:575 -#: netbox/ipam/forms/model_forms.py:585 netbox/ipam/tables/vlans.py:71 +#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60 +msgid "VLAN ID ranges" +msgstr "VLAN ID 范围" + +#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578 +#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71 #: netbox/templates/ipam/vlangroup.html:38 msgid "Scope" msgstr "作用域" -#: netbox/ipam/forms/bulk_edit.py:577 +#: netbox/ipam/forms/bulk_edit.py:570 msgid "Site & Group" msgstr "站点 & 组" -#: netbox/ipam/forms/bulk_edit.py:591 netbox/ipam/forms/model_forms.py:656 -#: netbox/ipam/forms/model_forms.py:688 netbox/ipam/tables/services.py:19 +#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659 +#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19 #: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36 #: netbox/templates/ipam/servicetemplate.html:23 msgid "Ports" msgstr "端口" -#: netbox/ipam/forms/bulk_import.py:47 +#: netbox/ipam/forms/bulk_import.py:48 msgid "Import route targets" msgstr "导入的 Route Targets" -#: netbox/ipam/forms/bulk_import.py:53 +#: netbox/ipam/forms/bulk_import.py:54 msgid "Export route targets" msgstr "导出的Route Targets" -#: netbox/ipam/forms/bulk_import.py:91 netbox/ipam/forms/bulk_import.py:111 -#: netbox/ipam/forms/bulk_import.py:131 +#: netbox/ipam/forms/bulk_import.py:92 netbox/ipam/forms/bulk_import.py:112 +#: netbox/ipam/forms/bulk_import.py:132 msgid "Assigned RIR" msgstr "指定的 RIR" -#: netbox/ipam/forms/bulk_import.py:181 +#: netbox/ipam/forms/bulk_import.py:182 msgid "VLAN's group (if any)" msgstr "VLAN 组(若存在)" -#: netbox/ipam/forms/bulk_import.py:307 +#: netbox/ipam/forms/bulk_import.py:308 msgid "Parent device of assigned interface (if any)" msgstr "指定接口的父设备(如果有)" -#: netbox/ipam/forms/bulk_import.py:310 netbox/ipam/forms/bulk_import.py:496 -#: netbox/ipam/forms/model_forms.py:682 -#: netbox/virtualization/filtersets.py:284 -#: netbox/virtualization/filtersets.py:323 +#: netbox/ipam/forms/bulk_import.py:311 netbox/ipam/forms/bulk_import.py:488 +#: netbox/ipam/forms/model_forms.py:685 +#: netbox/virtualization/filtersets.py:288 +#: netbox/virtualization/filtersets.py:327 #: netbox/virtualization/forms/bulk_edit.py:200 #: netbox/virtualization/forms/bulk_edit.py:326 #: netbox/virtualization/forms/bulk_import.py:146 #: netbox/virtualization/forms/bulk_import.py:207 -#: netbox/virtualization/forms/filtersets.py:208 -#: netbox/virtualization/forms/filtersets.py:244 +#: netbox/virtualization/forms/filtersets.py:212 +#: netbox/virtualization/forms/filtersets.py:248 #: netbox/virtualization/forms/model_forms.py:288 #: netbox/vpn/forms/bulk_import.py:93 netbox/vpn/forms/bulk_import.py:290 msgid "Virtual machine" msgstr "虚拟机" -#: netbox/ipam/forms/bulk_import.py:314 +#: netbox/ipam/forms/bulk_import.py:315 msgid "Parent VM of assigned interface (if any)" msgstr "指定接口的父虚拟机(如果有)" -#: netbox/ipam/forms/bulk_import.py:321 +#: netbox/ipam/forms/bulk_import.py:322 msgid "Assigned interface" msgstr "分配的接口" -#: netbox/ipam/forms/bulk_import.py:324 +#: netbox/ipam/forms/bulk_import.py:325 msgid "Is primary" msgstr "首选" -#: netbox/ipam/forms/bulk_import.py:325 +#: netbox/ipam/forms/bulk_import.py:326 msgid "Make this the primary IP for the assigned device" msgstr "设置为设备的首选 IP" -#: netbox/ipam/forms/bulk_import.py:364 +#: netbox/ipam/forms/bulk_import.py:365 msgid "No device or virtual machine specified; cannot set as primary IP" msgstr "未指定设备或虚拟机;无法设置为首选 IP" -#: netbox/ipam/forms/bulk_import.py:368 +#: netbox/ipam/forms/bulk_import.py:369 msgid "No interface specified; cannot set as primary IP" msgstr "未指定接口;无法设置为首选 IP" -#: netbox/ipam/forms/bulk_import.py:397 +#: netbox/ipam/forms/bulk_import.py:398 msgid "Auth type" msgstr "认证类型" -#: netbox/ipam/forms/bulk_import.py:412 +#: netbox/ipam/forms/bulk_import.py:413 msgid "Scope type (app & model)" msgstr "作用域类型(应用程序&型号)" -#: netbox/ipam/forms/bulk_import.py:418 -#, python-brace-format -msgid "Minimum child VLAN VID (default: {minimum})" -msgstr "最小的子VLAN ID (默认: {minimum})" - -#: netbox/ipam/forms/bulk_import.py:424 -#, python-brace-format -msgid "Maximum child VLAN VID (default: {maximum})" -msgstr "最大的子VLAN ID (默认: {maximum})" - -#: netbox/ipam/forms/bulk_import.py:448 +#: netbox/ipam/forms/bulk_import.py:440 msgid "Assigned VLAN group" msgstr "分配的VLAN组" -#: netbox/ipam/forms/bulk_import.py:479 netbox/ipam/forms/bulk_import.py:505 +#: netbox/ipam/forms/bulk_import.py:471 netbox/ipam/forms/bulk_import.py:497 msgid "IP protocol" msgstr "IP 协议" -#: netbox/ipam/forms/bulk_import.py:493 +#: netbox/ipam/forms/bulk_import.py:485 msgid "Required if not assigned to a VM" msgstr "如果未分配给虚拟机,则为必需" -#: netbox/ipam/forms/bulk_import.py:500 +#: netbox/ipam/forms/bulk_import.py:492 msgid "Required if not assigned to a device" msgstr "如果未分配给设备,则为必需" -#: netbox/ipam/forms/bulk_import.py:525 +#: netbox/ipam/forms/bulk_import.py:517 #, python-brace-format msgid "{ip} is not assigned to this device/VM." msgstr "{ip} 未分配给此设备/虚拟机。" #: netbox/ipam/forms/filtersets.py:47 netbox/ipam/forms/model_forms.py:63 -#: netbox/netbox/navigation/menu.py:176 netbox/vpn/forms/model_forms.py:410 +#: netbox/netbox/navigation/menu.py:189 netbox/vpn/forms/model_forms.py:410 msgid "Route Targets" msgstr "Route Targets" @@ -9133,31 +9489,34 @@ msgstr "指定给一个接口" msgid "DNS Name" msgstr "DNS名称" -#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/forms/filtersets.py:520 -#: netbox/ipam/models/vlans.py:156 netbox/templates/ipam/vlan.html:31 -msgid "VLAN ID" -msgstr "VLAN ID" +#: netbox/ipam/forms/filtersets.py:416 netbox/ipam/models/vlans.py:235 +#: netbox/ipam/tables/ip.py:176 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/views.py:971 netbox/netbox/navigation/menu.py:193 +#: netbox/netbox/navigation/menu.py:195 +msgid "VLANs" +msgstr "VLANs" -#: netbox/ipam/forms/filtersets.py:448 -msgid "Minimum VID" -msgstr "最小的VLAN ID" +#: netbox/ipam/forms/filtersets.py:457 +msgid "Contains VLAN ID" +msgstr "包含 VLAN ID" -#: netbox/ipam/forms/filtersets.py:454 -msgid "Maximum VID" -msgstr "最大的VLAN ID" +#: netbox/ipam/forms/filtersets.py:513 netbox/ipam/models/vlans.py:176 +#: netbox/templates/ipam/vlan.html:31 +msgid "VLAN ID" +msgstr "VLAN ID" -#: netbox/ipam/forms/filtersets.py:563 netbox/ipam/forms/model_forms.py:320 -#: netbox/ipam/forms/model_forms.py:710 netbox/ipam/forms/model_forms.py:736 -#: netbox/ipam/tables/vlans.py:191 +#: netbox/ipam/forms/filtersets.py:556 netbox/ipam/forms/model_forms.py:320 +#: netbox/ipam/forms/model_forms.py:713 netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/tables/vlans.py:195 #: netbox/templates/virtualization/virtualdisk.html:21 #: netbox/templates/virtualization/virtualmachine.html:12 #: netbox/templates/virtualization/vminterface.html:21 #: netbox/templates/vpn/tunneltermination.html:25 -#: netbox/virtualization/forms/filtersets.py:193 -#: netbox/virtualization/forms/filtersets.py:238 +#: netbox/virtualization/forms/filtersets.py:197 +#: netbox/virtualization/forms/filtersets.py:242 #: netbox/virtualization/forms/model_forms.py:220 -#: netbox/virtualization/tables/virtualmachines.py:128 -#: netbox/virtualization/tables/virtualmachines.py:183 +#: netbox/virtualization/tables/virtualmachines.py:135 +#: netbox/virtualization/tables/virtualmachines.py:190 #: netbox/vpn/choices.py:45 netbox/vpn/forms/filtersets.py:293 #: netbox/vpn/forms/model_forms.py:160 netbox/vpn/forms/model_forms.py:171 #: netbox/vpn/forms/model_forms.py:273 netbox/vpn/forms/model_forms.py:454 @@ -9224,43 +9583,48 @@ msgstr "虚拟IP地址" msgid "Assignment already exists" msgstr "已被分配" -#: netbox/ipam/forms/model_forms.py:584 +#: netbox/ipam/forms/model_forms.py:569 +#: netbox/templates/ipam/vlangroup.html:42 +msgid "VLAN IDs" +msgstr "VLAN ID" + +#: netbox/ipam/forms/model_forms.py:587 msgid "Child VLANs" msgstr "子类 VLANs" -#: netbox/ipam/forms/model_forms.py:661 netbox/ipam/forms/model_forms.py:693 +#: netbox/ipam/forms/model_forms.py:664 netbox/ipam/forms/model_forms.py:696 msgid "" "Comma-separated list of one or more port numbers. A range may be specified " "using a hyphen." msgstr "一个或多个端口号的列表,逗号分隔。可以使用连字符指定范围。" -#: netbox/ipam/forms/model_forms.py:666 +#: netbox/ipam/forms/model_forms.py:669 #: netbox/templates/ipam/servicetemplate.html:12 msgid "Service Template" msgstr "服务模版" -#: netbox/ipam/forms/model_forms.py:713 +#: netbox/ipam/forms/model_forms.py:716 msgid "Port(s)" msgstr "端口" -#: netbox/ipam/forms/model_forms.py:714 netbox/ipam/forms/model_forms.py:742 +#: netbox/ipam/forms/model_forms.py:717 netbox/ipam/forms/model_forms.py:745 #: netbox/templates/ipam/service.html:21 msgid "Service" msgstr "服务" -#: netbox/ipam/forms/model_forms.py:727 +#: netbox/ipam/forms/model_forms.py:730 msgid "Service template" msgstr "服务模版" -#: netbox/ipam/forms/model_forms.py:739 +#: netbox/ipam/forms/model_forms.py:742 msgid "From Template" msgstr "来自模版" -#: netbox/ipam/forms/model_forms.py:740 +#: netbox/ipam/forms/model_forms.py:743 msgid "Custom" msgstr "自定义" -#: netbox/ipam/forms/model_forms.py:770 +#: netbox/ipam/forms/model_forms.py:773 msgid "" "Must specify name, protocol, and port(s) if not using a service template." msgstr "如果不使用服务模板,则必须指定名称、协议和端口。" @@ -9298,7 +9662,7 @@ msgstr "组ID" msgid "protocol" msgstr "协议" -#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:27 +#: netbox/ipam/models/fhrp.py:38 netbox/wireless/models.py:28 msgid "authentication type" msgstr "认证类型" @@ -9314,10 +9678,6 @@ msgstr "FHRP组" msgid "FHRP groups" msgstr "网关冗余协议组" -#: netbox/ipam/models/fhrp.py:93 netbox/tenancy/models/contacts.py:134 -msgid "priority" -msgstr "优先级" - #: netbox/ipam/models/fhrp.py:113 msgid "FHRP group assignment" msgstr "指定FHRP组" @@ -9334,7 +9694,7 @@ msgstr "私有" msgid "IP space managed by this RIR is considered private" msgstr "由该RIR管理的IP地址空间被认为是私有的" -#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:169 +#: netbox/ipam/models/ip.py:72 netbox/netbox/navigation/menu.py:182 msgid "RIRs" msgstr "区域互联网注册管理机构" @@ -9574,22 +9934,6 @@ msgid "" "A service must be associated with either a device or a virtual machine." msgstr "服务必须与设备或虚拟机相关联。" -#: netbox/ipam/models/vlans.py:49 -msgid "minimum VLAN ID" -msgstr "最小 VLAN ID" - -#: netbox/ipam/models/vlans.py:55 -msgid "Lowest permissible ID of a child VLAN" -msgstr "子VLAN的最小ID" - -#: netbox/ipam/models/vlans.py:58 -msgid "maximum VLAN ID" -msgstr "最大 VLAN ID" - -#: netbox/ipam/models/vlans.py:64 -msgid "Highest permissible ID of a child VLAN" -msgstr "子VLAN的最大ID" - #: netbox/ipam/models/vlans.py:85 msgid "VLAN groups" msgstr "VLAN 组" @@ -9602,48 +9946,48 @@ msgstr "没有作用域id,无法设置作用域。" msgid "Cannot set scope_id without scope_type." msgstr "没有作用域类型,无法设置作用域。" -#: netbox/ipam/models/vlans.py:102 -msgid "Maximum child VID must be greater than or equal to minimum child VID" -msgstr "最大子VLAN ID必须大于或等于最小子VLAN ID" +#: netbox/ipam/models/vlans.py:101 +msgid "Ranges cannot overlap." +msgstr "范围不能重叠。" + +#: netbox/ipam/models/vlans.py:106 +#, python-brace-format +msgid "" +"Maximum child VID must be greater than or equal to minimum child VID " +"({value})" +msgstr "儿童 VID 的最大值必须大于或等于最小孩子 VID ({value})" -#: netbox/ipam/models/vlans.py:145 +#: netbox/ipam/models/vlans.py:165 msgid "The specific site to which this VLAN is assigned (if any)" msgstr "此VLAN所属的站点(如果有)" -#: netbox/ipam/models/vlans.py:153 +#: netbox/ipam/models/vlans.py:173 msgid "VLAN group (optional)" msgstr "VLAN组(可选)" -#: netbox/ipam/models/vlans.py:161 +#: netbox/ipam/models/vlans.py:181 msgid "Numeric VLAN ID (1-4094)" msgstr "VLAN ID(1-4094)" -#: netbox/ipam/models/vlans.py:179 +#: netbox/ipam/models/vlans.py:199 msgid "Operational status of this VLAN" msgstr "此VLAN的操作状态" -#: netbox/ipam/models/vlans.py:187 +#: netbox/ipam/models/vlans.py:207 msgid "The primary function of this VLAN" msgstr "此VLAN的主要功能" -#: netbox/ipam/models/vlans.py:215 netbox/ipam/tables/ip.py:176 -#: netbox/ipam/tables/vlans.py:78 netbox/ipam/views.py:971 -#: netbox/netbox/navigation/menu.py:180 netbox/netbox/navigation/menu.py:182 -msgid "VLANs" -msgstr "VLANs" - -#: netbox/ipam/models/vlans.py:230 +#: netbox/ipam/models/vlans.py:250 #, python-brace-format msgid "" "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " "site {site}." msgstr "VLAN 已分配给组 {group}(作用域:{scope}); 不能再分配给站点:{site}。" -#: netbox/ipam/models/vlans.py:238 +#: netbox/ipam/models/vlans.py:259 #, python-brace-format -msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" -msgstr "" -"VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgid "VID must be in ranges {ranges} for VLANs in group {group}" +msgstr "VID 必须在范围内 {ranges} 对于组中的 VLAN {group}" #: netbox/ipam/models/vrfs.py:30 msgid "route distinguisher" @@ -9661,8 +10005,8 @@ msgstr "强制使用唯一空间" msgid "Prevent duplicate prefixes/IP addresses within this VRF" msgstr "防止此 VRF 内出现重复的前缀/IP 地址" -#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:173 -#: netbox/netbox/navigation/menu.py:175 +#: netbox/ipam/models/vrfs.py:63 netbox/netbox/navigation/menu.py:186 +#: netbox/netbox/navigation/menu.py:188 msgid "VRFs" msgstr "VRFs" @@ -9690,8 +10034,8 @@ msgstr "站点统计" msgid "Provider Count" msgstr "运营商统计" -#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:166 -#: netbox/netbox/navigation/menu.py:168 +#: netbox/ipam/tables/ip.py:95 netbox/netbox/navigation/menu.py:179 +#: netbox/netbox/navigation/menu.py:181 msgid "Aggregates" msgstr "聚合" @@ -9700,21 +10044,21 @@ msgid "Added" msgstr "已添加" #: netbox/ipam/tables/ip.py:128 netbox/ipam/tables/ip.py:166 -#: netbox/ipam/tables/vlans.py:138 netbox/ipam/views.py:346 -#: netbox/netbox/navigation/menu.py:152 netbox/netbox/navigation/menu.py:154 +#: netbox/ipam/tables/vlans.py:142 netbox/ipam/views.py:346 +#: netbox/netbox/navigation/menu.py:165 netbox/netbox/navigation/menu.py:167 #: netbox/templates/ipam/vlan.html:84 msgid "Prefixes" msgstr "前缀" #: netbox/ipam/tables/ip.py:131 netbox/ipam/tables/ip.py:270 -#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:82 +#: netbox/ipam/tables/ip.py:324 netbox/ipam/tables/vlans.py:86 #: netbox/templates/dcim/device.html:260 #: netbox/templates/ipam/aggregate.html:24 #: netbox/templates/ipam/iprange.html:29 netbox/templates/ipam/prefix.html:106 msgid "Utilization" msgstr "利用率" -#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:148 +#: netbox/ipam/tables/ip.py:171 netbox/netbox/navigation/menu.py:161 msgid "IP Ranges" msgstr "IP范围" @@ -9759,7 +10103,11 @@ msgstr "指定对象" msgid "Scope Type" msgstr "作用域类型" -#: netbox/ipam/tables/vlans.py:107 netbox/ipam/tables/vlans.py:210 +#: netbox/ipam/tables/vlans.py:76 +msgid "VID Ranges" +msgstr "VID 范围" + +#: netbox/ipam/tables/vlans.py:111 netbox/ipam/tables/vlans.py:214 #: netbox/templates/dcim/inc/interface_vlans_table.html:4 msgid "VID" msgstr "VLAN号" @@ -9821,31 +10169,44 @@ msgstr "设备接口" msgid "VM Interfaces" msgstr "VM接口" -#: netbox/netbox/api/fields.py:63 +#: netbox/netbox/api/fields.py:65 msgid "This field may not be blank." msgstr "此字段不能为空。" -#: netbox/netbox/api/fields.py:68 +#: netbox/netbox/api/fields.py:70 msgid "" "Value must be passed directly (e.g. \"foo\": 123); do not use a dictionary " "or list." msgstr "值必须直接传递(e.g. \"foo\": 123); 不要使用字典或列表。" -#: netbox/netbox/api/fields.py:89 +#: netbox/netbox/api/fields.py:91 #, python-brace-format msgid "{value} is not a valid choice." msgstr "{value}不是一个有效的选项。" -#: netbox/netbox/api/fields.py:102 +#: netbox/netbox/api/fields.py:104 #, python-brace-format msgid "Invalid content type: {content_type}" msgstr "无效的内容类型: {content_type}" -#: netbox/netbox/api/fields.py:103 +#: netbox/netbox/api/fields.py:105 msgid "Invalid value. Specify a content type as '.'." msgstr "无效的值。需要将内容类型指定为 '.'。" -#: netbox/netbox/authentication/__init__.py:141 +#: netbox/netbox/api/fields.py:167 +msgid "Ranges must be specified in the form (lower, upper)." +msgstr "必须以表单(下限、上限)指定范围。" + +#: netbox/netbox/api/fields.py:169 +msgid "Range boundaries must be defined as integers." +msgstr "范围边界必须定义为整数。" + +#: netbox/netbox/api/serializers/fields.py:39 +#, python-brace-format +msgid "{class_name} must implement get_view_name()" +msgstr "{class_name} 必须实现 get_view_name ()" + +#: netbox/netbox/authentication/__init__.py:138 #, python-brace-format msgid "Invalid permission {permission} for model {model}" msgstr "模型{model}的权限{permission}无效" @@ -10167,46 +10528,51 @@ msgstr "移除标签" msgid "{class_name} must specify a model class." msgstr "{class_name}必须指定一个模型类。" -#: netbox/netbox/models/features.py:277 +#: netbox/netbox/models/features.py:280 #, python-brace-format msgid "Unknown field name '{name}' in custom field data." msgstr "自定义字段中的字段名称 '{name}' 未知。" -#: netbox/netbox/models/features.py:283 +#: netbox/netbox/models/features.py:286 #, python-brace-format msgid "Invalid value for custom field '{name}': {error}" msgstr "自定义字段'{name}'的值无效: {error}" -#: netbox/netbox/models/features.py:290 +#: netbox/netbox/models/features.py:295 +#, python-brace-format +msgid "Custom field '{name}' must have a unique value." +msgstr "自定义字段 '{name}'必须具有唯一值。" + +#: netbox/netbox/models/features.py:302 #, python-brace-format msgid "Missing required custom field '{name}'." msgstr "缺少必需的自定义字段'{name}'." -#: netbox/netbox/models/features.py:441 +#: netbox/netbox/models/features.py:467 msgid "Remote data source" msgstr "远程数据源" -#: netbox/netbox/models/features.py:451 +#: netbox/netbox/models/features.py:477 msgid "data path" msgstr "文件路径" -#: netbox/netbox/models/features.py:455 +#: netbox/netbox/models/features.py:481 msgid "Path to remote file (relative to data source root)" msgstr "数据源文件路径(相对路径)" -#: netbox/netbox/models/features.py:458 +#: netbox/netbox/models/features.py:484 msgid "auto sync enabled" msgstr "自动同步已启用" -#: netbox/netbox/models/features.py:460 +#: netbox/netbox/models/features.py:486 msgid "Enable automatic synchronization of data when the data file is updated" msgstr "数据文件更新时启用数据自动同步" -#: netbox/netbox/models/features.py:463 +#: netbox/netbox/models/features.py:489 msgid "date synced" msgstr "数据已同步" -#: netbox/netbox/models/features.py:557 +#: netbox/netbox/models/features.py:583 #, python-brace-format msgid "{class_name} must implement a sync_data() method." msgstr "{class_name}必须包含sync_data()方法。" @@ -10220,217 +10586,230 @@ msgid "Site Groups" msgstr "站点组" #: netbox/netbox/navigation/menu.py:27 -msgid "Rack Roles" -msgstr "机柜角色" - -#: netbox/netbox/navigation/menu.py:31 -msgid "Elevations" -msgstr "机柜立面图" - -#: netbox/netbox/navigation/menu.py:40 msgid "Tenant Groups" msgstr "租户组" -#: netbox/netbox/navigation/menu.py:47 +#: netbox/netbox/navigation/menu.py:34 msgid "Contact Groups" msgstr "联系组" -#: netbox/netbox/navigation/menu.py:48 +#: netbox/netbox/navigation/menu.py:35 #: netbox/templates/tenancy/contactrole.html:8 msgid "Contact Roles" msgstr "联系角色" -#: netbox/netbox/navigation/menu.py:49 +#: netbox/netbox/navigation/menu.py:36 msgid "Contact Assignments" msgstr "联系分配" -#: netbox/netbox/navigation/menu.py:63 +#: netbox/netbox/navigation/menu.py:50 +msgid "Rack Roles" +msgstr "机柜角色" + +#: netbox/netbox/navigation/menu.py:54 +msgid "Elevations" +msgstr "机柜立面图" + +#: netbox/netbox/navigation/menu.py:60 netbox/netbox/navigation/menu.py:62 +msgid "Rack Types" +msgstr "机架类型" + +#: netbox/netbox/navigation/menu.py:76 msgid "Modules" msgstr "设备板卡" -#: netbox/netbox/navigation/menu.py:67 netbox/templates/dcim/device.html:160 +#: netbox/netbox/navigation/menu.py:80 netbox/templates/dcim/device.html:160 #: netbox/templates/dcim/virtualdevicecontext.html:8 msgid "Virtual Device Contexts" msgstr "设备虚拟实例" -#: netbox/netbox/navigation/menu.py:75 +#: netbox/netbox/navigation/menu.py:88 msgid "Manufacturers" msgstr "厂商" -#: netbox/netbox/navigation/menu.py:79 +#: netbox/netbox/navigation/menu.py:92 msgid "Device Components" msgstr "设备详情" -#: netbox/netbox/navigation/menu.py:91 +#: netbox/netbox/navigation/menu.py:104 #: netbox/templates/dcim/inventoryitemrole.html:8 msgid "Inventory Item Roles" msgstr "库存物品分类" -#: netbox/netbox/navigation/menu.py:98 netbox/netbox/navigation/menu.py:102 +#: netbox/netbox/navigation/menu.py:111 netbox/netbox/navigation/menu.py:115 msgid "Connections" msgstr "连接" -#: netbox/netbox/navigation/menu.py:104 +#: netbox/netbox/navigation/menu.py:117 msgid "Cables" msgstr "链路" -#: netbox/netbox/navigation/menu.py:105 +#: netbox/netbox/navigation/menu.py:118 msgid "Wireless Links" msgstr "无线连接" -#: netbox/netbox/navigation/menu.py:108 +#: netbox/netbox/navigation/menu.py:121 msgid "Interface Connections" msgstr "接口连接" -#: netbox/netbox/navigation/menu.py:113 +#: netbox/netbox/navigation/menu.py:126 msgid "Console Connections" msgstr "Console 连接" -#: netbox/netbox/navigation/menu.py:118 +#: netbox/netbox/navigation/menu.py:131 msgid "Power Connections" msgstr "电源连接" -#: netbox/netbox/navigation/menu.py:134 +#: netbox/netbox/navigation/menu.py:147 msgid "Wireless LAN Groups" msgstr "无线局域网组" -#: netbox/netbox/navigation/menu.py:155 +#: netbox/netbox/navigation/menu.py:168 msgid "Prefix & VLAN Roles" msgstr "前缀和VLAN角色" -#: netbox/netbox/navigation/menu.py:161 +#: netbox/netbox/navigation/menu.py:174 msgid "ASN Ranges" msgstr "ASN 范围" -#: netbox/netbox/navigation/menu.py:183 +#: netbox/netbox/navigation/menu.py:196 msgid "VLAN Groups" msgstr "VLAN 组" -#: netbox/netbox/navigation/menu.py:190 +#: netbox/netbox/navigation/menu.py:203 msgid "Service Templates" msgstr "服务模版" -#: netbox/netbox/navigation/menu.py:191 netbox/templates/dcim/device.html:302 +#: netbox/netbox/navigation/menu.py:204 netbox/templates/dcim/device.html:302 #: netbox/templates/ipam/ipaddress.html:118 -#: netbox/templates/virtualization/virtualmachine.html:150 +#: netbox/templates/virtualization/virtualmachine.html:154 msgid "Services" msgstr "服务" -#: netbox/netbox/navigation/menu.py:198 +#: netbox/netbox/navigation/menu.py:211 msgid "VPN" msgstr "VPN" -#: netbox/netbox/navigation/menu.py:202 netbox/netbox/navigation/menu.py:204 +#: netbox/netbox/navigation/menu.py:215 netbox/netbox/navigation/menu.py:217 #: netbox/vpn/tables/tunnels.py:24 msgid "Tunnels" msgstr "隧道" -#: netbox/netbox/navigation/menu.py:205 +#: netbox/netbox/navigation/menu.py:218 #: netbox/templates/vpn/tunnelgroup.html:8 msgid "Tunnel Groups" msgstr "隧道组" -#: netbox/netbox/navigation/menu.py:206 +#: netbox/netbox/navigation/menu.py:219 msgid "Tunnel Terminations" msgstr "隧道终端" -#: netbox/netbox/navigation/menu.py:210 netbox/netbox/navigation/menu.py:212 +#: netbox/netbox/navigation/menu.py:223 netbox/netbox/navigation/menu.py:225 #: netbox/vpn/models/l2vpn.py:64 msgid "L2VPNs" msgstr "L2VPN" -#: netbox/netbox/navigation/menu.py:213 netbox/templates/vpn/l2vpn.html:56 +#: netbox/netbox/navigation/menu.py:226 netbox/templates/vpn/l2vpn.html:56 #: netbox/templates/vpn/tunnel.html:72 netbox/vpn/tables/tunnels.py:58 msgid "Terminations" msgstr "终端" -#: netbox/netbox/navigation/menu.py:219 +#: netbox/netbox/navigation/menu.py:232 msgid "IKE Proposals" msgstr "IKE 协议提案" -#: netbox/netbox/navigation/menu.py:220 +#: netbox/netbox/navigation/menu.py:233 #: netbox/templates/vpn/ikeproposal.html:41 msgid "IKE Policies" msgstr "IKE策略" -#: netbox/netbox/navigation/menu.py:221 +#: netbox/netbox/navigation/menu.py:234 msgid "IPSec Proposals" msgstr "IPSec 协议提案" -#: netbox/netbox/navigation/menu.py:222 +#: netbox/netbox/navigation/menu.py:235 #: netbox/templates/vpn/ipsecproposal.html:37 msgid "IPSec Policies" msgstr "IPSec策略" -#: netbox/netbox/navigation/menu.py:223 netbox/templates/vpn/ikepolicy.html:38 +#: netbox/netbox/navigation/menu.py:236 netbox/templates/vpn/ikepolicy.html:38 #: netbox/templates/vpn/ipsecpolicy.html:25 msgid "IPSec Profiles" msgstr "IPSec 配置文件" -#: netbox/netbox/navigation/menu.py:230 +#: netbox/netbox/navigation/menu.py:243 #: netbox/templates/dcim/device_edit.html:78 msgid "Virtualization" msgstr "虚拟化" -#: netbox/netbox/navigation/menu.py:238 -#: netbox/templates/virtualization/virtualmachine.html:170 +#: netbox/netbox/navigation/menu.py:251 +#: netbox/templates/virtualization/virtualmachine.html:174 #: netbox/templates/virtualization/virtualmachine/base.html:32 #: netbox/templates/virtualization/virtualmachine_list.html:21 -#: netbox/virtualization/tables/virtualmachines.py:103 -#: netbox/virtualization/views.py:387 +#: netbox/virtualization/tables/virtualmachines.py:104 +#: netbox/virtualization/views.py:388 msgid "Virtual Disks" msgstr "虚拟磁盘" -#: netbox/netbox/navigation/menu.py:245 +#: netbox/netbox/navigation/menu.py:258 msgid "Cluster Types" msgstr "集群类型" -#: netbox/netbox/navigation/menu.py:246 +#: netbox/netbox/navigation/menu.py:259 msgid "Cluster Groups" msgstr "集群组" -#: netbox/netbox/navigation/menu.py:260 +#: netbox/netbox/navigation/menu.py:273 msgid "Circuit Types" msgstr "链路类型" -#: netbox/netbox/navigation/menu.py:261 +#: netbox/netbox/navigation/menu.py:274 +msgid "Circuit Groups" +msgstr "电路组" + +#: netbox/netbox/navigation/menu.py:275 +#: netbox/templates/circuits/circuit.html:66 +msgid "Group Assignments" +msgstr "小组作业" + +#: netbox/netbox/navigation/menu.py:276 msgid "Circuit Terminations" msgstr "链路终端" -#: netbox/netbox/navigation/menu.py:265 netbox/netbox/navigation/menu.py:267 +#: netbox/netbox/navigation/menu.py:280 netbox/netbox/navigation/menu.py:282 msgid "Providers" msgstr "运营商" -#: netbox/netbox/navigation/menu.py:268 +#: netbox/netbox/navigation/menu.py:283 #: netbox/templates/circuits/provider.html:51 msgid "Provider Accounts" msgstr "运营商账户" -#: netbox/netbox/navigation/menu.py:269 +#: netbox/netbox/navigation/menu.py:284 msgid "Provider Networks" msgstr "运营商网络" -#: netbox/netbox/navigation/menu.py:283 +#: netbox/netbox/navigation/menu.py:298 msgid "Power Panels" msgstr "电源面板" -#: netbox/netbox/navigation/menu.py:294 +#: netbox/netbox/navigation/menu.py:309 msgid "Configurations" msgstr "配置" -#: netbox/netbox/navigation/menu.py:296 +#: netbox/netbox/navigation/menu.py:311 msgid "Config Contexts" msgstr "配置实例" -#: netbox/netbox/navigation/menu.py:297 +#: netbox/netbox/navigation/menu.py:312 msgid "Config Templates" msgstr "配置模板" -#: netbox/netbox/navigation/menu.py:304 netbox/netbox/navigation/menu.py:308 +#: netbox/netbox/navigation/menu.py:319 netbox/netbox/navigation/menu.py:323 msgid "Customization" msgstr "自定义" -#: netbox/netbox/navigation/menu.py:310 +#: netbox/netbox/navigation/menu.py:325 #: netbox/templates/dcim/device_edit.html:103 #: netbox/templates/dcim/htmx/cable_edit.html:81 #: netbox/templates/dcim/virtualchassis_add.html:31 @@ -10443,114 +10822,108 @@ msgstr "自定义" msgid "Custom Fields" msgstr "自定义字段" -#: netbox/netbox/navigation/menu.py:311 +#: netbox/netbox/navigation/menu.py:326 msgid "Custom Field Choices" msgstr "自定义字段选项" -#: netbox/netbox/navigation/menu.py:312 +#: netbox/netbox/navigation/menu.py:327 msgid "Custom Links" msgstr "自定义链接" -#: netbox/netbox/navigation/menu.py:313 +#: netbox/netbox/navigation/menu.py:328 msgid "Export Templates" msgstr "导出模板" -#: netbox/netbox/navigation/menu.py:314 +#: netbox/netbox/navigation/menu.py:329 msgid "Saved Filters" msgstr "已保存的过滤器" -#: netbox/netbox/navigation/menu.py:316 +#: netbox/netbox/navigation/menu.py:331 msgid "Image Attachments" msgstr "图片附件" -#: netbox/netbox/navigation/menu.py:334 +#: netbox/netbox/navigation/menu.py:349 msgid "Operations" msgstr "操作" -#: netbox/netbox/navigation/menu.py:338 +#: netbox/netbox/navigation/menu.py:353 msgid "Integrations" msgstr "系统集成" -#: netbox/netbox/navigation/menu.py:340 +#: netbox/netbox/navigation/menu.py:355 msgid "Data Sources" msgstr "数据源" -#: netbox/netbox/navigation/menu.py:341 +#: netbox/netbox/navigation/menu.py:356 msgid "Event Rules" msgstr "事件规则" -#: netbox/netbox/navigation/menu.py:342 +#: netbox/netbox/navigation/menu.py:357 msgid "Webhooks" msgstr "Webhook" -#: netbox/netbox/navigation/menu.py:346 netbox/netbox/navigation/menu.py:350 -#: netbox/netbox/views/generic/feature_views.py:151 +#: netbox/netbox/navigation/menu.py:361 netbox/netbox/navigation/menu.py:365 +#: netbox/netbox/views/generic/feature_views.py:153 #: netbox/templates/extras/report/base.html:37 #: netbox/templates/extras/script/base.html:36 msgid "Jobs" msgstr "任务" -#: netbox/netbox/navigation/menu.py:356 +#: netbox/netbox/navigation/menu.py:371 msgid "Logging" msgstr "日志" -#: netbox/netbox/navigation/menu.py:358 +#: netbox/netbox/navigation/menu.py:373 +msgid "Notification Groups" +msgstr "通知组" + +#: netbox/netbox/navigation/menu.py:374 msgid "Journal Entries" msgstr "日志条目" -#: netbox/netbox/navigation/menu.py:359 -#: netbox/templates/extras/objectchange.html:9 -#: netbox/templates/extras/objectchange_list.html:4 +#: netbox/netbox/navigation/menu.py:375 +#: netbox/templates/core/objectchange.html:9 +#: netbox/templates/core/objectchange_list.html:4 msgid "Change Log" msgstr "修改日志" -#: netbox/netbox/navigation/menu.py:366 netbox/templates/inc/user_menu.html:11 +#: netbox/netbox/navigation/menu.py:382 netbox/templates/inc/user_menu.html:29 msgid "Admin" msgstr "管理员" -#: netbox/netbox/navigation/menu.py:374 netbox/templates/users/group.html:29 -#: netbox/users/forms/model_forms.py:237 netbox/users/forms/model_forms.py:249 -#: netbox/users/forms/model_forms.py:301 netbox/users/tables.py:102 -msgid "Users" -msgstr "用户" - -#: netbox/netbox/navigation/menu.py:394 netbox/users/forms/model_forms.py:182 -#: netbox/users/forms/model_forms.py:194 netbox/users/forms/model_forms.py:306 -#: netbox/users/tables.py:35 netbox/users/tables.py:106 -msgid "Groups" -msgstr "组" - -#: netbox/netbox/navigation/menu.py:414 netbox/templates/account/base.html:21 -#: netbox/templates/inc/user_menu.html:36 +#: netbox/netbox/navigation/menu.py:430 netbox/templates/account/base.html:27 +#: netbox/templates/inc/user_menu.html:57 msgid "API Tokens" msgstr "API Token" -#: netbox/netbox/navigation/menu.py:421 netbox/users/forms/model_forms.py:188 +#: netbox/netbox/navigation/menu.py:437 netbox/users/forms/model_forms.py:188 #: netbox/users/forms/model_forms.py:196 netbox/users/forms/model_forms.py:243 #: netbox/users/forms/model_forms.py:250 msgid "Permissions" msgstr "权限" -#: netbox/netbox/navigation/menu.py:429 netbox/netbox/navigation/menu.py:433 +#: netbox/netbox/navigation/menu.py:445 netbox/netbox/navigation/menu.py:449 #: netbox/templates/core/system.html:7 msgid "System" msgstr "系统" -#: netbox/netbox/navigation/menu.py:438 +#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502 +#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22 +#: netbox/templates/core/plugin.html:12 +#: netbox/templates/core/plugin_list.html:7 +#: netbox/templates/core/plugin_list.html:12 +msgid "Plugins" +msgstr "插件" + +#: netbox/netbox/navigation/menu.py:459 msgid "Configuration History" msgstr "配置历史记录" -#: netbox/netbox/navigation/menu.py:444 netbox/templates/core/rq_task.html:8 +#: netbox/netbox/navigation/menu.py:465 netbox/templates/core/rq_task.html:8 #: netbox/templates/core/rq_task_list.html:22 msgid "Background Tasks" msgstr "后台任务" -#: netbox/netbox/navigation/menu.py:480 netbox/templates/500.html:35 -#: netbox/templates/account/preferences.html:22 -#: netbox/templates/core/system.html:80 -msgid "Plugins" -msgstr "插件" - #: netbox/netbox/plugins/navigation.py:47 #: netbox/netbox/plugins/navigation.py:69 msgid "Permissions must be passed as a tuple or list." @@ -10578,29 +10951,22 @@ msgid "" "netbox.plugins.PluginTemplateExtension!" msgstr "{template_extension} 不是netbox.plugins.PluginTemplateExtension的子类。" -#: netbox/netbox/plugins/registration.py:37 -#, python-brace-format -msgid "" -"PluginTemplateExtension class {template_extension} does not define a valid " -"model!" -msgstr "PluginTemplateExtension类{template_extension} 未定义有效的模型!" - -#: netbox/netbox/plugins/registration.py:47 +#: netbox/netbox/plugins/registration.py:51 #, python-brace-format msgid "{item} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{item} 必须是netbox.plugins.PluginMenuItem的实例。" -#: netbox/netbox/plugins/registration.py:60 +#: netbox/netbox/plugins/registration.py:62 #, python-brace-format msgid "{menu_link} must be an instance of netbox.plugins.PluginMenuItem" msgstr "{menu_link} 必须是netbox.plugins.PluginMenuItem的实例。" -#: netbox/netbox/plugins/registration.py:65 +#: netbox/netbox/plugins/registration.py:67 #, python-brace-format msgid "{button} must be an instance of netbox.plugins.PluginMenuButton" msgstr "{button}必须是netbox.plugins.PluginMenuButton的实例。" -#: netbox/netbox/plugins/templates.py:35 +#: netbox/netbox/plugins/templates.py:37 msgid "extra_context must be a dictionary" msgstr "附加实例必须是字典" @@ -10677,75 +11043,79 @@ msgstr "初始化后无法在注册表中添加存储空间" msgid "Cannot delete stores from registry" msgstr "无法从注册表中删除存储" -#: netbox/netbox/settings.py:742 +#: netbox/netbox/settings.py:762 msgid "Czech" msgstr "捷克语" -#: netbox/netbox/settings.py:743 +#: netbox/netbox/settings.py:763 msgid "Danish" msgstr "丹麦语" -#: netbox/netbox/settings.py:744 +#: netbox/netbox/settings.py:764 msgid "German" msgstr "德语" -#: netbox/netbox/settings.py:745 +#: netbox/netbox/settings.py:765 msgid "English" msgstr "英语" -#: netbox/netbox/settings.py:746 +#: netbox/netbox/settings.py:766 msgid "Spanish" msgstr "西班牙语" -#: netbox/netbox/settings.py:747 +#: netbox/netbox/settings.py:767 msgid "French" msgstr "法语" -#: netbox/netbox/settings.py:748 +#: netbox/netbox/settings.py:768 msgid "Italian" msgstr "意大利语" -#: netbox/netbox/settings.py:749 +#: netbox/netbox/settings.py:769 msgid "Japanese" msgstr "日语" -#: netbox/netbox/settings.py:750 +#: netbox/netbox/settings.py:770 msgid "Dutch" msgstr "荷兰语" -#: netbox/netbox/settings.py:751 +#: netbox/netbox/settings.py:771 msgid "Polish" msgstr "波兰语" -#: netbox/netbox/settings.py:752 +#: netbox/netbox/settings.py:772 msgid "Portuguese" msgstr "葡萄牙语" -#: netbox/netbox/settings.py:753 +#: netbox/netbox/settings.py:773 msgid "Russian" msgstr "俄语" -#: netbox/netbox/settings.py:754 +#: netbox/netbox/settings.py:774 msgid "Turkish" msgstr "土耳其语" -#: netbox/netbox/settings.py:755 +#: netbox/netbox/settings.py:775 msgid "Ukrainian" msgstr "乌克兰语" -#: netbox/netbox/settings.py:756 +#: netbox/netbox/settings.py:776 msgid "Chinese" msgstr "中文" -#: netbox/netbox/tables/columns.py:188 +#: netbox/netbox/tables/columns.py:176 +msgid "Select all" +msgstr "选择全部" + +#: netbox/netbox/tables/columns.py:189 msgid "Toggle all" msgstr "全部切换" -#: netbox/netbox/tables/columns.py:299 +#: netbox/netbox/tables/columns.py:300 msgid "Toggle Dropdown" msgstr "切换下拉菜单" -#: netbox/netbox/tables/columns.py:571 netbox/templates/core/job.html:47 +#: netbox/netbox/tables/columns.py:572 netbox/templates/core/job.html:53 msgid "Error" msgstr "错误" @@ -10796,24 +11166,24 @@ msgstr "重命名 {count} {object_type}" msgid "Deleted {count} {object_type}" msgstr "已删除 {count} {object_type}" -#: netbox/netbox/views/generic/feature_views.py:38 +#: netbox/netbox/views/generic/feature_views.py:40 msgid "Changelog" msgstr "变更日志" -#: netbox/netbox/views/generic/feature_views.py:91 +#: netbox/netbox/views/generic/feature_views.py:93 msgid "Journal" msgstr "日志" -#: netbox/netbox/views/generic/feature_views.py:205 +#: netbox/netbox/views/generic/feature_views.py:207 msgid "Unable to synchronize data: No data file set." msgstr "无法同步数据:未设置任何数据文件。" -#: netbox/netbox/views/generic/feature_views.py:209 +#: netbox/netbox/views/generic/feature_views.py:211 #, python-brace-format msgid "Synchronized data for {object_type} {object}." msgstr "的同步数据 {object_type} {object}。" -#: netbox/netbox/views/generic/feature_views.py:234 +#: netbox/netbox/views/generic/feature_views.py:236 #, python-brace-format msgid "Synced {count} {object_type}" msgstr "已同步 {count} {object_type}" @@ -10823,7 +11193,7 @@ msgstr "已同步 {count} {object_type}" msgid "{class_name} must implement get_children()" msgstr "{class_name}必须实现get_children()方法" -#: netbox/netbox/views/misc.py:43 +#: netbox/netbox/views/misc.py:44 msgid "" "There was an error loading the dashboard configuration. A default dashboard " "is in use." @@ -10857,11 +11227,11 @@ msgstr "请求出错。 请联系管理员" msgid "The complete exception is provided below" msgstr "异常信息如下" -#: netbox/templates/500.html:33 netbox/templates/core/system.html:35 +#: netbox/templates/500.html:33 netbox/templates/core/system.html:40 msgid "Python version" msgstr "Python 版本" -#: netbox/templates/500.html:34 netbox/templates/core/system.html:31 +#: netbox/templates/500.html:34 msgid "NetBox version" msgstr "NetBox 版本" @@ -10885,14 +11255,26 @@ msgstr "在GitHub上" msgid "Home Page" msgstr "主页" -#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:27 +#: netbox/templates/account/base.html:7 netbox/templates/inc/user_menu.html:45 #: netbox/vpn/forms/bulk_edit.py:255 netbox/vpn/forms/filtersets.py:189 #: netbox/vpn/forms/model_forms.py:379 msgid "Profile" msgstr "个人资料" #: netbox/templates/account/base.html:13 -#: netbox/templates/inc/user_menu.html:33 +#: netbox/templates/account/notifications.html:7 +#: netbox/templates/inc/user_menu.html:15 +msgid "Notifications" +msgstr "通知" + +#: netbox/templates/account/base.html:16 +#: netbox/templates/account/subscriptions.html:7 +#: netbox/templates/inc/user_menu.html:51 +msgid "Subscriptions" +msgstr "订阅" + +#: netbox/templates/account/base.html:19 +#: netbox/templates/inc/user_menu.html:54 msgid "Preferences" msgstr "首选项" @@ -10900,7 +11282,7 @@ msgstr "首选项" msgid "Change Password" msgstr "修改密码" -#: netbox/templates/account/password.html:17 +#: netbox/templates/account/password.html:19 #: netbox/templates/account/preferences.html:77 #: netbox/templates/core/configrevision_restore.html:63 #: netbox/templates/dcim/devicebay_populate.html:34 @@ -10925,7 +11307,7 @@ msgstr "修改密码" msgid "Cancel" msgstr "取消" -#: netbox/templates/account/password.html:18 +#: netbox/templates/account/password.html:20 #: netbox/templates/account/preferences.html:78 #: netbox/templates/dcim/devicebay_populate.html:35 #: netbox/templates/dcim/virtualchassis_add_member.html:28 @@ -10999,7 +11381,7 @@ msgid "Superuser" msgstr "超级管理员用户" #: netbox/templates/account/profile.html:45 -#: netbox/templates/inc/user_menu.html:13 netbox/templates/users/user.html:41 +#: netbox/templates/inc/user_menu.html:31 netbox/templates/users/user.html:41 msgid "Staff" msgstr "工作人员" @@ -11014,19 +11396,19 @@ msgstr "指定用户组" #: netbox/templates/circuits/circuit_terminations_swap.html:26 #: netbox/templates/circuits/circuittermination.html:34 #: netbox/templates/circuits/inc/circuit_termination.html:68 +#: netbox/templates/core/objectchange.html:124 +#: netbox/templates/core/objectchange.html:142 #: netbox/templates/dcim/devicebay.html:59 #: netbox/templates/dcim/inc/panels/inventory_items.html:45 #: netbox/templates/dcim/interface.html:296 -#: netbox/templates/dcim/modulebay.html:76 +#: netbox/templates/dcim/modulebay.html:80 #: netbox/templates/extras/configcontext.html:70 -#: netbox/templates/extras/eventrule.html:72 +#: netbox/templates/extras/eventrule.html:66 #: netbox/templates/extras/htmx/script_result.html:60 -#: netbox/templates/extras/objectchange.html:124 -#: netbox/templates/extras/objectchange.html:142 -#: netbox/templates/extras/webhook.html:67 -#: netbox/templates/extras/webhook.html:79 +#: netbox/templates/extras/webhook.html:65 +#: netbox/templates/extras/webhook.html:75 #: netbox/templates/inc/panel_table.html:13 -#: netbox/templates/inc/panels/comments.html:12 +#: netbox/templates/inc/panels/comments.html:10 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:56 #: netbox/templates/users/group.html:34 netbox/templates/users/group.html:44 #: netbox/templates/users/objectpermission.html:77 @@ -11047,7 +11429,7 @@ msgstr "我的 API Token" #: netbox/templates/account/token.html:11 #: netbox/templates/account/token.html:19 netbox/templates/users/token.html:6 -#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:121 +#: netbox/templates/users/token.html:14 netbox/users/forms/filtersets.py:120 msgid "Token" msgstr "Token" @@ -11068,32 +11450,41 @@ msgstr "添加 Token" msgid "Home" msgstr "主页" -#: netbox/templates/base/layout.html:32 +#: netbox/templates/base/layout.html:25 +msgid "NetBox Motif" +msgstr "NetBox 图案" + +#: netbox/templates/base/layout.html:38 netbox/templates/base/layout.html:39 +#: netbox/templates/login.html:14 netbox/templates/login.html:15 msgid "NetBox Logo" msgstr "NetBox Logo" -#: netbox/templates/base/layout.html:139 +#: netbox/templates/base/layout.html:150 netbox/templates/base/layout.html:151 msgid "Docs" msgstr "文档" -#: netbox/templates/base/layout.html:145 +#: netbox/templates/base/layout.html:156 netbox/templates/base/layout.html:157 #: netbox/templates/rest_framework/api.html:10 msgid "REST API" msgstr "REST API" -#: netbox/templates/base/layout.html:151 +#: netbox/templates/base/layout.html:162 netbox/templates/base/layout.html:163 msgid "REST API documentation" msgstr "REST API 文档" -#: netbox/templates/base/layout.html:158 +#: netbox/templates/base/layout.html:169 netbox/templates/base/layout.html:170 msgid "GraphQL API" msgstr "GraphQL API" -#: netbox/templates/base/layout.html:165 +#: netbox/templates/base/layout.html:185 netbox/templates/base/layout.html:186 +msgid "NetBox Labs Support" +msgstr "NetBox 实验室支持" + +#: netbox/templates/base/layout.html:194 netbox/templates/base/layout.html:195 msgid "Source Code" msgstr "源代码" -#: netbox/templates/base/layout.html:171 +#: netbox/templates/base/layout.html:200 netbox/templates/base/layout.html:201 msgid "Community" msgstr "社区" @@ -11105,6 +11496,11 @@ msgstr "安装时间" msgid "Termination Date" msgstr "维护模式" +#: netbox/templates/circuits/circuit.html:70 +#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 +msgid "Assign Group" +msgstr "分配组" + #: netbox/templates/circuits/circuit_terminations_swap.html:4 msgid "Swap Circuit Terminations" msgstr "交换线路终点" @@ -11122,6 +11518,14 @@ msgstr "A端" msgid "Z side" msgstr "Z端" +#: netbox/templates/circuits/circuitgroup.html:16 +msgid "Assign Circuit" +msgstr "分配电路" + +#: netbox/templates/circuits/circuitgroupassignment.html:19 +msgid "Circuit Group Assignment" +msgstr "电路组分配" + #: netbox/templates/circuits/circuittype.html:10 msgid "Add Circuit" msgstr "增加线路" @@ -11146,7 +11550,7 @@ msgstr "添加" #: netbox/templates/dcim/inc/panels/inventory_items.html:32 #: netbox/templates/dcim/moduletype/component_templates.html:20 #: netbox/templates/dcim/powerpanel.html:56 -#: netbox/templates/extras/script_list.html:32 +#: netbox/templates/extras/script_list.html:30 #: netbox/templates/generic/object_edit.html:47 #: netbox/templates/ipam/inc/ipaddress_edit_header.html:7 #: netbox/templates/ipam/inc/panels/fhrp_groups.html:43 @@ -11267,13 +11671,10 @@ msgstr "新变量" msgid "Changed" msgstr "已更改" -#: netbox/templates/core/datafile.html:38 -msgid "Last Updated" -msgstr "最后更新" - #: netbox/templates/core/datafile.html:42 #: netbox/templates/ipam/iprange.html:25 #: netbox/templates/virtualization/virtualdisk.html:29 +#: netbox/virtualization/tables/virtualmachines.py:198 msgid "Size" msgstr "大小" @@ -11355,25 +11756,118 @@ msgstr "用户首选项" msgid "Job retention" msgstr "任务保留" -#: netbox/templates/core/job.html:29 netbox/templates/core/rq_task.html:12 +#: netbox/templates/core/job.html:35 netbox/templates/core/rq_task.html:12 #: netbox/templates/core/rq_task.html:49 netbox/templates/core/rq_task.html:58 msgid "Job" msgstr "任务" -#: netbox/templates/core/job.html:52 +#: netbox/templates/core/job.html:58 #: netbox/templates/extras/journalentry.html:26 msgid "Created By" msgstr "创建者" -#: netbox/templates/core/job.html:60 +#: netbox/templates/core/job.html:66 msgid "Scheduling" msgstr "日程安排" -#: netbox/templates/core/job.html:71 +#: netbox/templates/core/job.html:77 #, python-format msgid "every %(interval)s minutes" msgstr "每 %(interval)s 分钟" +#: netbox/templates/core/objectchange.html:29 +#: netbox/templates/users/objectpermission.html:42 +msgid "Change" +msgstr "更改" + +#: netbox/templates/core/objectchange.html:79 +msgid "Difference" +msgstr "差异" + +#: netbox/templates/core/objectchange.html:82 +msgid "Previous" +msgstr "上一个" + +#: netbox/templates/core/objectchange.html:85 +msgid "Next" +msgstr "下一个" + +#: netbox/templates/core/objectchange.html:93 +msgid "Object Created" +msgstr "对象已创建" + +#: netbox/templates/core/objectchange.html:95 +msgid "Object Deleted" +msgstr "对象已删除" + +#: netbox/templates/core/objectchange.html:97 +msgid "No Changes" +msgstr "没有改变" + +#: netbox/templates/core/objectchange.html:111 +msgid "Pre-Change Data" +msgstr "变更前配置" + +#: netbox/templates/core/objectchange.html:122 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "警告:将非原子更改与以前的更改记录进行比较" + +#: netbox/templates/core/objectchange.html:131 +msgid "Post-Change Data" +msgstr "变更后配置" + +#: netbox/templates/core/objectchange.html:162 +#, python-format +msgid "See All %(count)s Changes" +msgstr "查看所有的%(count)s个变更" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Change log retention" +msgstr "变更日志保留" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "days" +msgstr "天" + +#: netbox/templates/core/objectchange_list.html:9 +#: netbox/templates/extras/object_changelog.html:15 +msgid "Indefinite" +msgstr "无限期的" + +#: netbox/templates/core/plugin.html:21 +msgid "Not installed" +msgstr "未安装" + +#: netbox/templates/core/plugin.html:32 +msgid "Overview" +msgstr "概述" + +#: netbox/templates/core/plugin.html:38 +msgid "Install" +msgstr "安装" + +#: netbox/templates/core/plugin.html:50 +msgid "Plugin Details" +msgstr "插件详情" + +#: netbox/templates/core/plugin.html:57 +msgid "Summary" +msgstr "摘要" + +#: netbox/templates/core/plugin.html:75 +msgid "License" +msgstr "执照" + +#: netbox/templates/core/plugin.html:95 +msgid "Version History" +msgstr "版本历史" + +#: netbox/templates/core/plugin.html:106 +msgid "Local Installation Instructions" +msgstr "本地安装说明" + #: netbox/templates/core/rq_queue_list.html:5 #: netbox/templates/core/rq_queue_list.html:13 #: netbox/templates/core/rq_task_list.html:14 @@ -11385,8 +11879,8 @@ msgstr "后台队列" #: netbox/templates/core/rq_queue_list.html:25 #: netbox/templates/core/rq_worker_list.html:49 #: netbox/templates/core/rq_worker_list.html:50 -#: netbox/templates/extras/script_result.html:49 -#: netbox/templates/extras/script_result.html:51 +#: netbox/templates/extras/script_result.html:67 +#: netbox/templates/extras/script_result.html:69 #: netbox/templates/inc/table_controls_htmx.html:30 #: netbox/templates/inc/table_controls_htmx.html:33 msgid "Configure Table" @@ -11445,7 +11939,7 @@ msgid "Queued Jobs" msgstr "排队中的任务" #: netbox/templates/core/rq_task_list.html:64 -#: netbox/templates/extras/script_result.html:68 +#: netbox/templates/extras/script_result.html:86 #, python-format msgid "" "Select all %(count)s %(object_type_plural)s matching query" @@ -11503,39 +11997,43 @@ msgstr "导出" msgid "System Status" msgstr "系统状态" -#: netbox/templates/core/system.html:39 +#: netbox/templates/core/system.html:31 +msgid "NetBox release" +msgstr "NetBox 发布" + +#: netbox/templates/core/system.html:44 msgid "Django version" msgstr "Django版本" -#: netbox/templates/core/system.html:43 +#: netbox/templates/core/system.html:48 msgid "PostgreSQL version" msgstr "PostgreSQL 版本" -#: netbox/templates/core/system.html:47 +#: netbox/templates/core/system.html:52 msgid "Database name" msgstr "数据库名称" -#: netbox/templates/core/system.html:51 +#: netbox/templates/core/system.html:56 msgid "Database size" msgstr "数据库大小" -#: netbox/templates/core/system.html:56 +#: netbox/templates/core/system.html:61 msgid "Unavailable" msgstr "不可用" -#: netbox/templates/core/system.html:61 +#: netbox/templates/core/system.html:66 msgid "RQ workers" msgstr "RQ workers" -#: netbox/templates/core/system.html:64 +#: netbox/templates/core/system.html:69 msgid "default queue" msgstr "默认队列" -#: netbox/templates/core/system.html:68 +#: netbox/templates/core/system.html:73 msgid "System time" msgstr "系统时间" -#: netbox/templates/core/system.html:90 +#: netbox/templates/core/system.html:85 msgid "Current Configuration" msgstr "当前配置" @@ -11632,14 +12130,15 @@ msgstr "未上架" msgid "GPS Coordinates" msgstr "GPS坐标" -#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:100 -msgid "Map It" -msgstr "在地图中定位" +#: netbox/templates/dcim/device.html:68 netbox/templates/dcim/site.html:81 +#: netbox/templates/dcim/site.html:100 +msgid "Map" +msgstr "地图" #: netbox/templates/dcim/device.html:108 #: netbox/templates/dcim/inventoryitem.html:56 -#: netbox/templates/dcim/module.html:78 -#: netbox/templates/dcim/modulebay.html:70 netbox/templates/dcim/rack.html:59 +#: netbox/templates/dcim/module.html:81 +#: netbox/templates/dcim/modulebay.html:74 netbox/templates/dcim/rack.html:61 msgid "Asset Tag" msgstr "资产标签" @@ -11659,19 +12158,19 @@ msgstr "管理" #: netbox/templates/dcim/device.html:195 netbox/templates/dcim/device.html:211 #: netbox/templates/dcim/device.html:227 -#: netbox/templates/virtualization/virtualmachine.html:53 -#: netbox/templates/virtualization/virtualmachine.html:69 +#: netbox/templates/virtualization/virtualmachine.html:57 +#: netbox/templates/virtualization/virtualmachine.html:73 msgid "NAT for" msgstr "NAT for" #: netbox/templates/dcim/device.html:197 netbox/templates/dcim/device.html:213 #: netbox/templates/dcim/device.html:229 -#: netbox/templates/virtualization/virtualmachine.html:55 -#: netbox/templates/virtualization/virtualmachine.html:71 +#: netbox/templates/virtualization/virtualmachine.html:59 +#: netbox/templates/virtualization/virtualmachine.html:75 msgid "NAT" msgstr "NAT" -#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:67 +#: netbox/templates/dcim/device.html:252 netbox/templates/dcim/rack.html:73 msgid "Power Utilization" msgstr "电力容量利用率" @@ -11699,7 +12198,7 @@ msgid "Leg" msgstr "针" #: netbox/templates/dcim/device.html:306 -#: netbox/templates/virtualization/virtualmachine.html:154 +#: netbox/templates/virtualization/virtualmachine.html:158 msgid "Add a service" msgstr "添加服务" @@ -11958,6 +12457,22 @@ msgstr "清除" msgid "Clear All" msgstr "清除所有" +#: netbox/templates/dcim/inc/panels/racktype_dimensions.html:38 +msgid "Mounting Depth" +msgstr "安装深度" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:6 +msgid "Starting Unit" +msgstr "起始U位" + +#: netbox/templates/dcim/inc/panels/racktype_numbering.html:10 +msgid "Descending Units" +msgstr "降序单位" + +#: netbox/templates/dcim/inc/rack_elevation.html:3 +msgid "Rack elevation" +msgstr "机架仰角" + #: netbox/templates/dcim/interface.html:17 msgid "Add Child Interface" msgstr "添加子接口" @@ -12020,8 +12535,8 @@ msgstr "信道频率" #: netbox/wireless/forms/bulk_edit.py:60 #: netbox/wireless/forms/bulk_edit.py:102 #: netbox/wireless/forms/filtersets.py:40 -#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:81 -#: netbox/wireless/models.py:155 netbox/wireless/tables/wirelesslan.py:44 +#: netbox/wireless/forms/filtersets.py:80 netbox/wireless/models.py:82 +#: netbox/wireless/models.py:156 netbox/wireless/tables/wirelesslan.py:44 msgid "SSID" msgstr "SSID" @@ -12111,49 +12626,33 @@ msgstr "最大功率" msgid "Allocated Draw" msgstr "允许功率" -#: netbox/templates/dcim/rack.html:63 +#: netbox/templates/dcim/rack.html:69 msgid "Space Utilization" msgstr "机柜空间利用率" -#: netbox/templates/dcim/rack.html:91 -msgid "descending" -msgstr "降序" - -#: netbox/templates/dcim/rack.html:91 -msgid "ascending" -msgstr "升序" - -#: netbox/templates/dcim/rack.html:94 -msgid "Starting Unit" -msgstr "起始U位" - -#: netbox/templates/dcim/rack.html:120 -msgid "Mounting Depth" -msgstr "安装深度" - -#: netbox/templates/dcim/rack.html:130 +#: netbox/templates/dcim/rack.html:84 netbox/templates/dcim/racktype.html:44 msgid "Rack Weight" msgstr "机柜重量" -#: netbox/templates/dcim/rack.html:140 +#: netbox/templates/dcim/rack.html:94 netbox/templates/dcim/racktype.html:54 msgid "Maximum Weight" msgstr "最大承重" -#: netbox/templates/dcim/rack.html:150 +#: netbox/templates/dcim/rack.html:104 msgid "Total Weight" msgstr "总重量" -#: netbox/templates/dcim/rack.html:167 +#: netbox/templates/dcim/rack.html:121 #: netbox/templates/dcim/rack_elevation_list.html:15 msgid "Images and Labels" msgstr "图片和标签" -#: netbox/templates/dcim/rack.html:168 +#: netbox/templates/dcim/rack.html:122 #: netbox/templates/dcim/rack_elevation_list.html:16 msgid "Images only" msgstr "仅图像" -#: netbox/templates/dcim/rack.html:169 +#: netbox/templates/dcim/rack.html:123 #: netbox/templates/dcim/rack_elevation_list.html:17 msgid "Labels only" msgstr "仅标签" @@ -12166,6 +12665,10 @@ msgstr "增加预留" msgid "View List" msgstr "查看列表" +#: netbox/templates/dcim/rack_elevation_list.html:14 +msgid "Select rack view" +msgstr "选择机架视图" + #: netbox/templates/dcim/rack_elevation_list.html:25 msgid "Sort By" msgstr "排序方式" @@ -12219,10 +12722,6 @@ msgstr "站点时区" msgid "Physical Address" msgstr "实体地址" -#: netbox/templates/dcim/site.html:81 -msgid "Map" -msgstr "地图" - #: netbox/templates/dcim/site.html:90 msgid "Shipping Address" msgstr "物流地址" @@ -12263,7 +12762,7 @@ msgstr "新增成员" #: netbox/templates/dcim/virtualchassis_add_member.html:27 #: netbox/templates/generic/object_edit.html:78 #: netbox/templates/users/objectpermission.html:31 -#: netbox/users/forms/filtersets.py:68 netbox/users/forms/model_forms.py:313 +#: netbox/users/forms/filtersets.py:67 netbox/users/forms/model_forms.py:313 msgid "Actions" msgstr "激活" @@ -12415,46 +12914,42 @@ msgid "Group Name" msgstr "组名称" #: netbox/templates/extras/customfield.html:42 +msgid "Must be Unique" +msgstr "必须是唯一的" + +#: netbox/templates/extras/customfield.html:46 msgid "Cloneable" msgstr "可复制" -#: netbox/templates/extras/customfield.html:52 +#: netbox/templates/extras/customfield.html:56 msgid "Default Value" msgstr "默认值" -#: netbox/templates/extras/customfield.html:61 +#: netbox/templates/extras/customfield.html:73 msgid "Search Weight" msgstr "搜索权重" -#: netbox/templates/extras/customfield.html:71 +#: netbox/templates/extras/customfield.html:83 msgid "Filter Logic" msgstr "过滤器规则" -#: netbox/templates/extras/customfield.html:75 +#: netbox/templates/extras/customfield.html:87 msgid "Display Weight" msgstr "显示权重" -#: netbox/templates/extras/customfield.html:79 +#: netbox/templates/extras/customfield.html:91 msgid "UI Visible" msgstr "页面中可见" -#: netbox/templates/extras/customfield.html:83 +#: netbox/templates/extras/customfield.html:95 msgid "UI Editable" msgstr "页面中可编辑" -#: netbox/templates/extras/customfield.html:103 +#: netbox/templates/extras/customfield.html:115 msgid "Validation Rules" msgstr "验证规则" -#: netbox/templates/extras/customfield.html:106 -msgid "Minimum Value" -msgstr "最小值" - -#: netbox/templates/extras/customfield.html:110 -msgid "Maximum Value" -msgstr "最大值" - -#: netbox/templates/extras/customfield.html:114 +#: netbox/templates/extras/customfield.html:126 msgid "Regular Expression" msgstr "正则表达式" @@ -12468,11 +12963,11 @@ msgstr "按钮类型" msgid "Assigned Models" msgstr "指定模块" -#: netbox/templates/extras/customlink.html:53 +#: netbox/templates/extras/customlink.html:52 msgid "Link Text" msgstr "链接文本" -#: netbox/templates/extras/customlink.html:61 +#: netbox/templates/extras/customlink.html:58 msgid "Link URL" msgstr "链接URL" @@ -12493,6 +12988,14 @@ msgid "" "users." msgstr "此更改仅影响的仪表盘,不会影响其他用户。" +#: netbox/templates/extras/dashboard/widget.html:21 +msgid "widget configuration" +msgstr "小部件配置" + +#: netbox/templates/extras/dashboard/widget.html:36 +msgid "Close widget" +msgstr "关闭小部件" + #: netbox/templates/extras/dashboard/widget_add.html:7 msgid "Add a Widget" msgstr "添加小组件" @@ -12525,13 +13028,9 @@ msgstr "获取RSS源时出现问题" msgid "HTTP" msgstr "HTTP" -#: netbox/templates/extras/eventrule.html:52 -msgid "Job start" -msgstr "开始工作" - -#: netbox/templates/extras/eventrule.html:56 -msgid "Job end" -msgstr "结束工作" +#: netbox/templates/extras/eventrule.html:61 +msgid "Conditions" +msgstr "条件" #: netbox/templates/extras/exporttemplate.html:23 msgid "MIME Type" @@ -12573,20 +13072,15 @@ msgstr "结果待定" msgid "Journal Entry" msgstr "日志条目" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Change log retention" -msgstr "变更日志保留" - -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "days" -msgstr "天" +#: netbox/templates/extras/notificationgroup.html:11 +msgid "Notification Group" +msgstr "通知组" -#: netbox/templates/extras/object_changelog.html:15 -#: netbox/templates/extras/objectchange_list.html:9 -msgid "Indefinite" -msgstr "无限期的" +#: netbox/templates/extras/notificationgroup.html:36 +#: netbox/templates/extras/notificationgroup.html:46 +#: netbox/utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "未指定" #: netbox/templates/extras/object_configcontext.html:19 msgid "The local config context overwrites all source contexts" @@ -12600,52 +13094,6 @@ msgstr "数据源实例" msgid "New Journal Entry" msgstr "新的日志条目" -#: netbox/templates/extras/objectchange.html:29 -#: netbox/templates/users/objectpermission.html:42 -msgid "Change" -msgstr "更改" - -#: netbox/templates/extras/objectchange.html:79 -msgid "Difference" -msgstr "差异" - -#: netbox/templates/extras/objectchange.html:82 -msgid "Previous" -msgstr "上一个" - -#: netbox/templates/extras/objectchange.html:85 -msgid "Next" -msgstr "下一个" - -#: netbox/templates/extras/objectchange.html:93 -msgid "Object Created" -msgstr "对象已创建" - -#: netbox/templates/extras/objectchange.html:95 -msgid "Object Deleted" -msgstr "对象已删除" - -#: netbox/templates/extras/objectchange.html:97 -msgid "No Changes" -msgstr "没有改变" - -#: netbox/templates/extras/objectchange.html:111 -msgid "Pre-Change Data" -msgstr "变更前配置" - -#: netbox/templates/extras/objectchange.html:122 -msgid "Warning: Comparing non-atomic change to previous change record" -msgstr "警告:将非原子更改与以前的更改记录进行比较" - -#: netbox/templates/extras/objectchange.html:131 -msgid "Post-Change Data" -msgstr "变更后配置" - -#: netbox/templates/extras/objectchange.html:162 -#, python-format -msgid "See All %(count)s Changes" -msgstr "查看所有的%(count)s个变更" - #: netbox/templates/extras/report/base.html:30 msgid "Report" msgstr "报告" @@ -12656,7 +13104,7 @@ msgstr "您没有权限执行脚本" #: netbox/templates/extras/script.html:41 #: netbox/templates/extras/script.html:45 -#: netbox/templates/extras/script_list.html:88 +#: netbox/templates/extras/script_list.html:86 msgid "Run Script" msgstr "保存运行脚本计划" @@ -12669,27 +13117,27 @@ msgstr "加载脚本时出错" msgid "Script no longer exists in the source file." msgstr "源文件中没有该脚本。" -#: netbox/templates/extras/script_list.html:48 +#: netbox/templates/extras/script_list.html:46 msgid "Last Run" msgstr "上一次运行" -#: netbox/templates/extras/script_list.html:63 +#: netbox/templates/extras/script_list.html:61 msgid "Script is no longer present in the source file" msgstr "源文件中没有该脚本。" -#: netbox/templates/extras/script_list.html:76 +#: netbox/templates/extras/script_list.html:74 msgid "Never" msgstr "从不" -#: netbox/templates/extras/script_list.html:86 +#: netbox/templates/extras/script_list.html:84 msgid "Run Again" msgstr "重新运行" -#: netbox/templates/extras/script_list.html:140 +#: netbox/templates/extras/script_list.html:138 msgid "No Scripts Found" msgstr "找不到脚本" -#: netbox/templates/extras/script_list.html:143 +#: netbox/templates/extras/script_list.html:141 #, python-format msgid "" "Get started by creating a script from " @@ -12702,6 +13150,14 @@ msgstr "从上传的文件或数据源开始 msgid "Results" msgstr "结果" +#: netbox/templates/extras/script_result.html:46 +msgid "Log threshold" +msgstr "日志阈值" + +#: netbox/templates/extras/script_result.html:56 +msgid "All" +msgstr "全部" + #: netbox/templates/extras/tag.html:32 msgid "Tagged Items" msgstr "标记的项目" @@ -12734,11 +13190,11 @@ msgstr "HTTP内容类型" msgid "SSL Verification" msgstr "SSL验证" -#: netbox/templates/extras/webhook.html:61 +#: netbox/templates/extras/webhook.html:60 msgid "Additional Headers" msgstr "附加标头" -#: netbox/templates/extras/webhook.html:73 +#: netbox/templates/extras/webhook.html:70 msgid "Body Template" msgstr "内容模版" @@ -12812,6 +13268,10 @@ msgstr "字段选项" msgid "Accessor" msgstr "Accessor" +#: netbox/templates/generic/bulk_import.html:148 +msgid "choices" +msgstr "选择" + #: netbox/templates/generic/bulk_import.html:161 msgid "Import Value" msgstr "导入值" @@ -12972,6 +13432,18 @@ msgstr "" msgid "The following objects will be deleted as a result of this action." msgstr "此操作将删除以下对象。" +#: netbox/templates/htmx/notifications.html:15 +msgid "ago" +msgstr "以前" + +#: netbox/templates/htmx/notifications.html:26 +msgid "No unread notifications" +msgstr "没有未读通知" + +#: netbox/templates/htmx/notifications.html:31 +msgid "All notifications" +msgstr "所有通知" + #: netbox/templates/htmx/object_selector.html:5 msgid "Select" msgstr "选择" @@ -13037,15 +13509,23 @@ msgstr "快速搜索" msgid "Saved filter" msgstr "保存的筛选" -#: netbox/templates/inc/user_menu.html:23 +#: netbox/templates/inc/table_htmx.html:18 +msgid "Clear ordering" +msgstr "清除订单" + +#: netbox/templates/inc/user_menu.html:6 +msgid "Help center" +msgstr "帮助中心" + +#: netbox/templates/inc/user_menu.html:41 msgid "Django Admin" msgstr "Django Admin" -#: netbox/templates/inc/user_menu.html:40 +#: netbox/templates/inc/user_menu.html:61 msgid "Log Out" msgstr "登出" -#: netbox/templates/inc/user_menu.html:47 netbox/templates/login.html:36 +#: netbox/templates/inc/user_menu.html:68 netbox/templates/login.html:38 msgid "Log In" msgstr "登录" @@ -13093,10 +13573,6 @@ msgstr "批量创建" msgid "Create Group" msgstr "创建组" -#: netbox/templates/ipam/inc/panels/fhrp_groups.html:15 -msgid "Assign Group" -msgstr "分配组" - #: netbox/templates/ipam/inc/panels/fhrp_groups.html:25 msgid "Virtual IPs" msgstr "虚拟IP" @@ -13230,10 +13706,6 @@ msgstr "添加一个前缀" msgid "Add VLAN" msgstr "添加VLAN" -#: netbox/templates/ipam/vlangroup.html:42 -msgid "Permitted VIDs" -msgstr "允许的VID" - #: netbox/templates/ipam/vrf.html:16 msgid "Route Distinguisher" msgstr "路由实例" @@ -13242,20 +13714,16 @@ msgstr "路由实例" msgid "Unique IP Space" msgstr "独立IP空间" -#: netbox/templates/login.html:14 -msgid "NetBox logo" -msgstr "NetBox logo" - -#: netbox/templates/login.html:27 +#: netbox/templates/login.html:29 #: netbox/utilities/templates/form_helpers/render_errors.html:7 msgid "Errors" msgstr "错误" -#: netbox/templates/login.html:67 +#: netbox/templates/login.html:69 msgid "Sign In" msgstr "登录" -#: netbox/templates/login.html:75 +#: netbox/templates/login.html:77 msgctxt "Denotes an alternative option" msgid "Or" msgstr "或" @@ -13325,11 +13793,6 @@ msgstr "标题" msgid "Phone" msgstr "手机号" -#: netbox/templates/tenancy/contact.html:84 -#: netbox/tenancy/tables/contacts.py:73 -msgid "Assignments" -msgstr "分配" - #: netbox/templates/tenancy/contactgroup.html:18 #: netbox/tenancy/forms/forms.py:66 netbox/tenancy/forms/model_forms.py:75 msgid "Contact Group" @@ -13369,7 +13832,7 @@ msgstr "分配的权限" #: netbox/templates/users/objectpermission.html:6 #: netbox/templates/users/objectpermission.html:14 -#: netbox/users/forms/filtersets.py:67 +#: netbox/users/forms/filtersets.py:66 msgid "Permission" msgstr "权限" @@ -13391,23 +13854,21 @@ msgid "Allocated Resources" msgstr "已分配资源" #: netbox/templates/virtualization/cluster.html:55 -#: netbox/templates/virtualization/virtualmachine.html:121 +#: netbox/templates/virtualization/virtualmachine.html:125 msgid "Virtual CPUs" msgstr "虚拟CPU" #: netbox/templates/virtualization/cluster.html:59 -#: netbox/templates/virtualization/virtualmachine.html:125 +#: netbox/templates/virtualization/virtualmachine.html:129 msgid "Memory" msgstr "内存" #: netbox/templates/virtualization/cluster.html:69 -#: netbox/templates/virtualization/virtualmachine.html:136 +#: netbox/templates/virtualization/virtualmachine.html:140 msgid "Disk Space" msgstr "磁盘空间" #: netbox/templates/virtualization/cluster.html:72 -#: netbox/templates/virtualization/virtualdisk.html:32 -#: netbox/templates/virtualization/virtualmachine.html:140 msgctxt "Abbreviation for gigabyte" msgid "GB" msgstr "GB" @@ -13448,7 +13909,7 @@ msgid "Cluster Group" msgstr "集群组" #: netbox/templates/virtualization/clustertype.html:19 -#: netbox/templates/virtualization/virtualmachine.html:106 +#: netbox/templates/virtualization/virtualmachine.html:110 #: netbox/virtualization/forms/model_forms.py:36 msgid "Cluster Type" msgstr "集群类型" @@ -13457,13 +13918,13 @@ msgstr "集群类型" msgid "Virtual Disk" msgstr "虚拟硬盘" -#: netbox/templates/virtualization/virtualmachine.html:118 +#: netbox/templates/virtualization/virtualmachine.html:122 #: netbox/virtualization/forms/bulk_edit.py:190 #: netbox/virtualization/forms/model_forms.py:224 msgid "Resources" msgstr "资源" -#: netbox/templates/virtualization/virtualmachine.html:174 +#: netbox/templates/virtualization/virtualmachine.html:178 msgid "Add Virtual Disk" msgstr "增加虚拟硬盘" @@ -13645,13 +14106,12 @@ msgstr "增加无线局域网组" msgid "Link Properties" msgstr "链接属性" -#: netbox/tenancy/choices.py:19 -msgid "Tertiary" -msgstr "第三级联系人" - -#: netbox/tenancy/choices.py:20 -msgid "Inactive" -msgstr "已失效" +#: netbox/templates/wireless/wirelesslink.html:38 +#: netbox/wireless/forms/bulk_edit.py:129 +#: netbox/wireless/forms/filtersets.py:102 +#: netbox/wireless/forms/model_forms.py:165 +msgid "Distance" +msgstr "距离" #: netbox/tenancy/filtersets.py:29 msgid "Parent contact group (ID)" @@ -13816,13 +14276,13 @@ msgstr "联系人链接" msgid "Contact Description" msgstr "联系人描述" -#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:68 +#: netbox/users/filtersets.py:33 netbox/users/filtersets.py:73 msgid "Permission (ID)" msgstr "权限(ID)" -#: netbox/users/filtersets.py:63 netbox/users/filtersets.py:181 -msgid "Group (name)" -msgstr "组 (名字)" +#: netbox/users/filtersets.py:38 netbox/users/filtersets.py:78 +msgid "Notification group (ID)" +msgstr "通知组 (ID)" #: netbox/users/forms/bulk_edit.py:26 msgid "First name" @@ -13844,27 +14304,27 @@ msgstr "超级用户状态" msgid "If no key is provided, one will be generated automatically." msgstr "如果未提供密钥,则会自动生成一个。" -#: netbox/users/forms/filtersets.py:52 netbox/users/tables.py:42 +#: netbox/users/forms/filtersets.py:51 netbox/users/tables.py:42 msgid "Is Staff" msgstr "是工作人员" -#: netbox/users/forms/filtersets.py:59 netbox/users/tables.py:45 +#: netbox/users/forms/filtersets.py:58 netbox/users/tables.py:45 msgid "Is Superuser" msgstr "是超级用户" -#: netbox/users/forms/filtersets.py:92 netbox/users/tables.py:86 +#: netbox/users/forms/filtersets.py:91 netbox/users/tables.py:86 msgid "Can View" msgstr "可查看" -#: netbox/users/forms/filtersets.py:99 netbox/users/tables.py:89 +#: netbox/users/forms/filtersets.py:98 netbox/users/tables.py:89 msgid "Can Add" msgstr "可以添加" -#: netbox/users/forms/filtersets.py:106 netbox/users/tables.py:92 +#: netbox/users/forms/filtersets.py:105 netbox/users/tables.py:92 msgid "Can Change" msgstr "可更改" -#: netbox/users/forms/filtersets.py:113 netbox/users/tables.py:95 +#: netbox/users/forms/filtersets.py:112 netbox/users/tables.py:95 msgid "Can Delete" msgstr "可删除" @@ -13950,45 +14410,45 @@ msgstr "允许" msgid "permissions" msgstr "权限" -#: netbox/users/models/preferences.py:30 netbox/users/models/preferences.py:31 +#: netbox/users/models/preferences.py:29 netbox/users/models/preferences.py:30 msgid "user preferences" msgstr "用户首选项" -#: netbox/users/models/preferences.py:98 +#: netbox/users/models/preferences.py:97 #, python-brace-format msgid "Key '{path}' is a leaf node; cannot assign new keys" msgstr "Key '{path}' 是一个子节点;无法分配新密钥" -#: netbox/users/models/preferences.py:110 +#: netbox/users/models/preferences.py:109 #, python-brace-format msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" msgstr "Key '{path}'是一个字典;无法分配非字典值" -#: netbox/users/models/tokens.py:37 +#: netbox/users/models/tokens.py:36 msgid "expires" msgstr "过期" -#: netbox/users/models/tokens.py:42 +#: netbox/users/models/tokens.py:41 msgid "last used" msgstr "最后使用" -#: netbox/users/models/tokens.py:47 +#: netbox/users/models/tokens.py:46 msgid "key" msgstr "key" -#: netbox/users/models/tokens.py:53 +#: netbox/users/models/tokens.py:52 msgid "write enabled" msgstr "可写开启" -#: netbox/users/models/tokens.py:55 +#: netbox/users/models/tokens.py:54 msgid "Permit create/update/delete operations using this key" msgstr "允许使用此密钥进行创建/更新/删除操作" -#: netbox/users/models/tokens.py:66 +#: netbox/users/models/tokens.py:65 msgid "allowed IPs" msgstr "允许的 IP" -#: netbox/users/models/tokens.py:68 +#: netbox/users/models/tokens.py:67 msgid "" "Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" " no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" @@ -13996,11 +14456,11 @@ msgstr "" "允许使用 token 的 IPv4/IPv6 网络。 留空表示没有限制。 " "例如:“10.1.1.0/24、192.168.10.16/32、2001:DB8:1::/64”" -#: netbox/users/models/tokens.py:76 +#: netbox/users/models/tokens.py:75 msgid "token" msgstr "token" -#: netbox/users/models/tokens.py:77 +#: netbox/users/models/tokens.py:76 msgid "tokens" msgstr "tokens" @@ -14008,18 +14468,10 @@ msgstr "tokens" msgid "group" msgstr "组" -#: netbox/users/models/users.py:58 netbox/users/models/users.py:77 -msgid "groups" -msgstr "组" - #: netbox/users/models/users.py:92 msgid "user" msgstr "用户" -#: netbox/users/models/users.py:93 -msgid "users" -msgstr "用户" - #: netbox/users/models/users.py:104 msgid "A user with this username already exists." msgstr "用户名已使用。" @@ -14142,13 +14594,25 @@ msgid "" "single document comprising a list of dictionaries." msgstr "YAML 数据无效。 数据必须采用多个文档的形式,或包含字典列表的单个文档。" -#: netbox/utilities/forms/fields/array.py:17 +#: netbox/utilities/forms/fields/array.py:20 #, python-brace-format msgid "" "Invalid list ({value}). Must be numeric and ranges must be in ascending " "order." msgstr "列表 ({value}) 无效。 必须是数字,并且范围必须按升序排列。" +#: netbox/utilities/forms/fields/array.py:40 +msgid "" +"Specify one or more numeric ranges separated by commas. Example: " +"1-5,20-30" +msgstr "指定一个或多个用逗号分隔的数字范围。示例: 1-5,20-30" + +#: netbox/utilities/forms/fields/array.py:47 +#, python-brace-format +msgid "" +"Invalid ranges ({value}). Must be a range of integers in ascending order." +msgstr "范围无效 ({value})。必须是按升序排列的整数范围。" + #: netbox/utilities/forms/fields/csv.py:44 #, python-brace-format msgid "Invalid value for a multiple choice field: {value}" @@ -14295,6 +14759,24 @@ msgstr "缺少动态查询参数:'{dynamic_params}'" msgid "Missing required value for static query param: '{static_params}'" msgstr "缺少静态查询参数:'{static_params}'" +#: netbox/utilities/password_validation.py:13 +msgid "Password must have at least one numeral." +msgstr "密码必须至少包含一个数字。" + +#: netbox/utilities/password_validation.py:18 +msgid "Password must have at least one uppercase letter." +msgstr "密码必须至少包含一个大写字母。" + +#: netbox/utilities/password_validation.py:23 +msgid "Password must have at least one lowercase letter." +msgstr "密码必须至少包含一个小写字母。" + +#: netbox/utilities/password_validation.py:27 +msgid "" +"Your password must contain at least one numeral, one uppercase letter and " +"one lowercase letter." +msgstr "您的密码必须包含至少一个数字、一个大写字母和一个小写字母。" + #: netbox/utilities/permissions.py:42 #, python-brace-format msgid "" @@ -14349,6 +14831,14 @@ msgstr "添加导出模版" msgid "Import" msgstr "导入" +#: netbox/utilities/templates/buttons/subscribe.html:10 +msgid "Unsubscribe" +msgstr "取消订阅" + +#: netbox/utilities/templates/buttons/subscribe.html:14 +msgid "Subscribe" +msgstr "订阅" + #: netbox/utilities/templates/form_helpers/render_field.html:39 msgid "Copy to clipboard" msgstr "复制到剪贴板" @@ -14389,15 +14879,11 @@ msgstr "搜索 NetBox" msgid "Open selector" msgstr "打开选择框" -#: netbox/utilities/templates/widgets/clearable_file_input.html:12 -msgid "None assigned" -msgstr "未指定" - #: netbox/utilities/templates/widgets/markdown_input.html:6 msgid "Write" msgstr "编写" -#: netbox/utilities/testing/views.py:633 +#: netbox/utilities/testing/views.py:632 msgid "The test must define csv_update_data." msgstr "测试必须定义csv_update_data。" @@ -14406,17 +14892,17 @@ msgstr "测试必须定义csv_update_data。" msgid "{value} is not a valid regular expression." msgstr "{value} 不是有效的正则表达式。" -#: netbox/utilities/views.py:45 +#: netbox/utilities/views.py:57 #, python-brace-format msgid "{self.__class__.__name__} must implement get_required_permission()" msgstr "{self.__class__.__name__}必须实现get_required_permission()方法" -#: netbox/utilities/views.py:81 +#: netbox/utilities/views.py:93 #, python-brace-format msgid "{class_name} must implement get_required_permission()" msgstr "{class_name}必须实现get_required_permission()方法" -#: netbox/utilities/views.py:105 +#: netbox/utilities/views.py:117 #, python-brace-format msgid "" "{class_name} has no queryset defined. ObjectPermissionRequiredMixin may only" @@ -14437,7 +14923,7 @@ msgid "Cluster type (ID)" msgstr "集群类型(ID)" #: netbox/virtualization/filtersets.py:151 -#: netbox/virtualization/filtersets.py:267 +#: netbox/virtualization/filtersets.py:271 msgid "Cluster (ID)" msgstr "集群 (ID)" @@ -14455,7 +14941,7 @@ msgid "Disk (GB)" msgstr "磁盘 (GB)" #: netbox/virtualization/forms/bulk_edit.py:334 -#: netbox/virtualization/forms/filtersets.py:247 +#: netbox/virtualization/forms/filtersets.py:251 msgid "Size (GB)" msgstr "大小 (GB)" @@ -14475,6 +14961,10 @@ msgstr "指定集群" msgid "Assigned device within cluster" msgstr "指定集群内部设备" +#: netbox/virtualization/forms/filtersets.py:183 +msgid "Serial number" +msgstr "序列号" + #: netbox/virtualization/forms/model_forms.py:153 #, python-brace-format msgid "" @@ -14495,6 +14985,7 @@ msgid "Disk size is managed via the attachment of virtual disks." msgstr "通过附加虚拟磁盘来管理磁盘大小。" #: netbox/virtualization/forms/model_forms.py:372 +#: netbox/virtualization/tables/virtualmachines.py:111 msgid "Disk" msgstr "硬盘" @@ -14534,97 +15025,97 @@ msgid "memory (MB)" msgstr "内存 (MB)" #: netbox/virtualization/models/virtualmachines.py:128 -msgid "disk (GB)" -msgstr "硬盘 (GB)" +msgid "disk (MB)" +msgstr "磁盘 (MB)" -#: netbox/virtualization/models/virtualmachines.py:161 +#: netbox/virtualization/models/virtualmachines.py:166 msgid "Virtual machine name must be unique per cluster." msgstr "集群中的虚拟机名称必须唯一。" -#: netbox/virtualization/models/virtualmachines.py:164 +#: netbox/virtualization/models/virtualmachines.py:169 msgid "virtual machine" msgstr "虚拟机" -#: netbox/virtualization/models/virtualmachines.py:165 +#: netbox/virtualization/models/virtualmachines.py:170 msgid "virtual machines" msgstr "虚拟机" -#: netbox/virtualization/models/virtualmachines.py:179 +#: netbox/virtualization/models/virtualmachines.py:184 msgid "A virtual machine must be assigned to a site and/or cluster." msgstr "虚拟机必须分配给站点和/或集群。" -#: netbox/virtualization/models/virtualmachines.py:186 +#: netbox/virtualization/models/virtualmachines.py:191 #, python-brace-format msgid "" "The selected cluster ({cluster}) is not assigned to this site ({site})." msgstr "所选集群({cluster}) 未分配给此站点 ({site})。" -#: netbox/virtualization/models/virtualmachines.py:193 +#: netbox/virtualization/models/virtualmachines.py:198 msgid "Must specify a cluster when assigning a host device." msgstr "分配主机设备时必须指定集群。" -#: netbox/virtualization/models/virtualmachines.py:198 +#: netbox/virtualization/models/virtualmachines.py:203 #, python-brace-format msgid "" "The selected device ({device}) is not assigned to this cluster ({cluster})." msgstr "所选设备 ({device})未分配给此集群({cluster})。" -#: netbox/virtualization/models/virtualmachines.py:210 +#: netbox/virtualization/models/virtualmachines.py:215 #, python-brace-format msgid "" "The specified disk size ({size}) must match the aggregate size of assigned " "virtual disks ({total_size})." msgstr "指定的磁盘大小 ({size}) 必须与分配的虚拟磁盘的总大小相匹配 ({total_size})." -#: netbox/virtualization/models/virtualmachines.py:224 +#: netbox/virtualization/models/virtualmachines.py:229 #, python-brace-format msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" msgstr "必须是 IPv{family} 地址。 ({ip} 是 IPv{version} 地址。)" -#: netbox/virtualization/models/virtualmachines.py:233 +#: netbox/virtualization/models/virtualmachines.py:238 #, python-brace-format msgid "The specified IP address ({ip}) is not assigned to this VM." msgstr "指定的IP地址 ({ip}) 未分配给该虚拟机。" -#: netbox/virtualization/models/virtualmachines.py:391 +#: netbox/virtualization/models/virtualmachines.py:396 #, python-brace-format msgid "" "The selected parent interface ({parent}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "所选父接口 ({parent}) 属于另一个虚拟机 ({virtual_machine})" -#: netbox/virtualization/models/virtualmachines.py:406 +#: netbox/virtualization/models/virtualmachines.py:411 #, python-brace-format msgid "" "The selected bridge interface ({bridge}) belongs to a different virtual " "machine ({virtual_machine})." msgstr "所选桥接接口 ({bridge})属于另一个虚拟机({virtual_machine})。" -#: netbox/virtualization/models/virtualmachines.py:417 +#: netbox/virtualization/models/virtualmachines.py:422 #, python-brace-format msgid "" "The untagged VLAN ({untagged_vlan}) must belong to the same site as the " "interface's parent virtual machine, or it must be global." msgstr "未标记 VLAN ({untagged_vlan}) 必须与接口的父虚拟机属于同一站点,或者必须是全局的。" -#: netbox/virtualization/models/virtualmachines.py:429 -msgid "size (GB)" -msgstr "大小 (GB)" +#: netbox/virtualization/models/virtualmachines.py:434 +msgid "size (MB)" +msgstr "大小 (MB)" -#: netbox/virtualization/models/virtualmachines.py:433 +#: netbox/virtualization/models/virtualmachines.py:438 msgid "virtual disk" msgstr "虚拟磁盘" -#: netbox/virtualization/models/virtualmachines.py:434 +#: netbox/virtualization/models/virtualmachines.py:439 msgid "virtual disks" msgstr "虚拟磁盘" -#: netbox/virtualization/views.py:274 +#: netbox/virtualization/views.py:275 #, python-brace-format msgid "Added {count} devices to cluster {cluster}" msgstr "已添加 {count} 要集群的设备 {cluster}" -#: netbox/virtualization/views.py:309 +#: netbox/virtualization/views.py:310 #, python-brace-format msgid "Removed {count} devices from cluster {cluster}" msgstr "已移除 {count} 来自集群的设备 {cluster}" @@ -14738,32 +15229,32 @@ msgid "Outside IP (ID)" msgstr "外部 IP (ID)" #: netbox/vpn/filtersets.py:130 netbox/vpn/filtersets.py:153 -#: netbox/vpn/filtersets.py:282 +#: netbox/vpn/filtersets.py:274 msgid "IKE policy (ID)" msgstr "IKE 策略 (ID)" #: netbox/vpn/filtersets.py:136 netbox/vpn/filtersets.py:159 -#: netbox/vpn/filtersets.py:288 +#: netbox/vpn/filtersets.py:280 msgid "IKE policy (name)" msgstr "IKE 策略(名称)" -#: netbox/vpn/filtersets.py:215 netbox/vpn/filtersets.py:292 +#: netbox/vpn/filtersets.py:211 netbox/vpn/filtersets.py:284 msgid "IPSec policy (ID)" msgstr "IPsec 策略 (ID)" -#: netbox/vpn/filtersets.py:221 netbox/vpn/filtersets.py:298 +#: netbox/vpn/filtersets.py:217 netbox/vpn/filtersets.py:290 msgid "IPSec policy (name)" msgstr "IPsec 策略(名称)" -#: netbox/vpn/filtersets.py:367 +#: netbox/vpn/filtersets.py:359 msgid "L2VPN (slug)" msgstr "L2VPN(缩写)" -#: netbox/vpn/filtersets.py:431 +#: netbox/vpn/filtersets.py:423 msgid "VM Interface (ID)" msgstr "虚拟接口 (ID)" -#: netbox/vpn/filtersets.py:437 +#: netbox/vpn/filtersets.py:429 msgid "VLAN (name)" msgstr "VLAN(名称)" @@ -14934,7 +15425,7 @@ msgstr "版本" msgid "proposals" msgstr "proposals" -#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:38 +#: netbox/vpn/models/crypto.py:91 netbox/wireless/models.py:39 msgid "pre-shared key" msgstr "pre-shared key" @@ -15114,17 +15605,24 @@ msgstr "WPA Enterprise" msgid "Authentication cipher" msgstr "认证密码" +#: netbox/wireless/forms/bulk_edit.py:134 +#: netbox/wireless/forms/bulk_import.py:116 +#: netbox/wireless/forms/bulk_import.py:119 +#: netbox/wireless/forms/filtersets.py:106 +msgid "Distance unit" +msgstr "距离单位" + #: netbox/wireless/forms/bulk_import.py:52 msgid "Bridged VLAN" msgstr "桥接 VLAN" #: netbox/wireless/forms/bulk_import.py:89 -#: netbox/wireless/tables/wirelesslink.py:27 +#: netbox/wireless/tables/wirelesslink.py:28 msgid "Interface A" msgstr "网络接口A" #: netbox/wireless/forms/bulk_import.py:93 -#: netbox/wireless/tables/wirelesslink.py:36 +#: netbox/wireless/tables/wirelesslink.py:37 msgid "Interface B" msgstr "网络接口B" @@ -15132,39 +15630,51 @@ msgstr "网络接口B" msgid "Side B" msgstr "B端" -#: netbox/wireless/models.py:30 +#: netbox/wireless/models.py:31 msgid "authentication cipher" msgstr "认证密码" -#: netbox/wireless/models.py:68 +#: netbox/wireless/models.py:69 msgid "wireless LAN group" msgstr "无线局域网组" -#: netbox/wireless/models.py:69 +#: netbox/wireless/models.py:70 msgid "wireless LAN groups" msgstr "无线局域网组" -#: netbox/wireless/models.py:115 +#: netbox/wireless/models.py:116 msgid "wireless LAN" msgstr "无线局域网" -#: netbox/wireless/models.py:143 +#: netbox/wireless/models.py:144 msgid "interface A" msgstr "接口 A" -#: netbox/wireless/models.py:150 +#: netbox/wireless/models.py:151 msgid "interface B" msgstr "接口 B" -#: netbox/wireless/models.py:198 +#: netbox/wireless/models.py:165 +msgid "distance" +msgstr "距离" + +#: netbox/wireless/models.py:172 +msgid "distance unit" +msgstr "距离单位" + +#: netbox/wireless/models.py:219 msgid "wireless link" msgstr "无线连接" -#: netbox/wireless/models.py:199 +#: netbox/wireless/models.py:220 msgid "wireless links" msgstr "无线连接" -#: netbox/wireless/models.py:216 netbox/wireless/models.py:222 +#: netbox/wireless/models.py:236 +msgid "Must specify a unit when setting a wireless distance" +msgstr "设置无线距离时必须指定单位" + +#: netbox/wireless/models.py:242 netbox/wireless/models.py:248 #, python-brace-format msgid "{type} is not a wireless interface." msgstr "{type} 不是无线接口。" diff --git a/netbox/users/migrations/0005_alter_user_table.py b/netbox/users/migrations/0005_alter_user_table.py index 62cd3849d31..1163da0aeaf 100644 --- a/netbox/users/migrations/0005_alter_user_table.py +++ b/netbox/users/migrations/0005_alter_user_table.py @@ -22,6 +22,7 @@ class Migration(migrations.Migration): dependencies = [ ('users', '0002_squashed_0004'), + ('extras', '0113_customfield_rename_object_type'), ] operations = [ diff --git a/netbox/utilities/templates/form_helpers/render_custom_fields.html b/netbox/utilities/templates/form_helpers/render_custom_fields.html index c59607fcf11..6c3c3477ad9 100644 --- a/netbox/utilities/templates/form_helpers/render_custom_fields.html +++ b/netbox/utilities/templates/form_helpers/render_custom_fields.html @@ -3,7 +3,7 @@ {% for group, fields in form.custom_field_groups.items %} {% if group %}
-
{{ group }}
+

{{ group }}

{% endif %} {% for name in fields %} diff --git a/requirements.txt b/requirements.txt index ed66d540172..c3d87e52f07 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,7 +21,7 @@ gunicorn==23.0.0 Jinja2==3.1.4 Markdown==3.7 mkdocs-material==9.5.34 -mkdocstrings[python-legacy]==0.26.0 +mkdocstrings[python-legacy]==0.26.1 netaddr==1.3.0 nh3==0.2.18 Pillow==10.4.0 @@ -30,8 +30,8 @@ PyYAML==6.0.2 requests==2.32.3 social-auth-app-django==5.4.2 social-auth-core==4.5.4 -strawberry-graphql==0.239.2 -strawberry-graphql-django==0.47.1 +strawberry-graphql==0.240.2 +strawberry-graphql-django==0.47.2 svgwrite==1.4.3 tablib==3.6.1 tzdata==2024.1